Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/chrome/browser/ui/dialogs/dialog_presenter.h" | 5 #import "ios/chrome/browser/ui/dialogs/dialog_presenter.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #import "base/ios/block_types.h" | 10 #import "base/ios/block_types.h" |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 #include "url/gurl.h" | 24 #include "url/gurl.h" |
| 25 | 25 |
| 26 #if !defined(__has_feature) || !__has_feature(objc_arc) | 26 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 27 #error "This file requires ARC support." | 27 #error "This file requires ARC support." |
| 28 #endif | 28 #endif |
| 29 | 29 |
| 30 // Externed accessibility identifier. | 30 // Externed accessibility identifier. |
| 31 NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier = | 31 NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier = |
| 32 @"JavaScriptDialogTextFieldAccessibiltyIdentifier"; | 32 @"JavaScriptDialogTextFieldAccessibiltyIdentifier"; |
| 33 | 33 |
| 34 namespace { | |
| 35 // The hostname to use for JavaScript alerts when there is no valid hostname in | |
| 36 // the URL passed to |+localizedTitleForJavaScriptAlertFromPage:type:|. | |
| 37 const char kAboutNullHostname[] = "about:null"; | |
| 38 } // namespace | |
| 39 | |
| 40 @interface DialogPresenter () { | 34 @interface DialogPresenter () { |
| 41 // Queue of WebStates which correspond to the keys in | 35 // Queue of WebStates which correspond to the keys in |
| 42 // |_dialogCoordinatorsForWebStates|. | 36 // |_dialogCoordinatorsForWebStates|. |
| 43 std::deque<web::WebState*> _queuedWebStates; | 37 std::deque<web::WebState*> _queuedWebStates; |
| 44 // A map associating queued webStates with their coordinators. | 38 // A map associating queued webStates with their coordinators. |
| 45 std::map<web::WebState*, base::scoped_nsobject<AlertCoordinator>> | 39 std::map<web::WebState*, base::scoped_nsobject<AlertCoordinator>> |
| 46 _dialogCoordinatorsForWebStates; | 40 _dialogCoordinatorsForWebStates; |
| 47 } | 41 } |
| 48 | 42 |
| 49 // The delegate passed on initialization. | 43 // The delegate passed on initialization. |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 // displayed. | 334 // displayed. |
| 341 if (self.blockingConfirmationCoordinator) | 335 if (self.blockingConfirmationCoordinator) |
| 342 return; | 336 return; |
| 343 // The active TabModel can't be changed while a JavaScript dialog is shown. | 337 // The active TabModel can't be changed while a JavaScript dialog is shown. |
| 344 DCHECK(!self.showingDialog); | 338 DCHECK(!self.showingDialog); |
| 345 if (_active && !_queuedWebStates.empty() && !self.delegate.presenting) | 339 if (_active && !_queuedWebStates.empty() && !self.delegate.presenting) |
| 346 [self showNextDialog]; | 340 [self showNextDialog]; |
| 347 } | 341 } |
| 348 | 342 |
| 349 + (NSString*)localizedTitleForJavaScriptAlertFromPage:(const GURL&)pageURL { | 343 + (NSString*)localizedTitleForJavaScriptAlertFromPage:(const GURL&)pageURL { |
| 344 NSString* localizedTitle = nil; | |
| 350 NSString* hostname = base::SysUTF8ToNSString(pageURL.host()); | 345 NSString* hostname = base::SysUTF8ToNSString(pageURL.host()); |
| 351 if (!hostname.length) | 346 if (!hostname.length) { |
|
Eugene But (OOO till 7-30)
2017/06/22 20:19:12
Other platforms use IDS_JAVASCRIPT_MESSAGEBOX_TITL
| |
| 352 hostname = base::SysUTF8ToNSString(kAboutNullHostname); | 347 localizedTitle = l10n_util::GetNSString( |
| 353 return l10n_util::GetNSStringF(IDS_JAVASCRIPT_MESSAGEBOX_TITLE, | 348 IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME); |
| 354 base::SysNSStringToUTF16(hostname)); | 349 } else { |
| 350 localizedTitle = l10n_util::GetNSStringF( | |
| 351 IDS_JAVASCRIPT_MESSAGEBOX_TITLE, base::SysNSStringToUTF16(hostname)); | |
| 352 } | |
| 353 return localizedTitle; | |
| 355 } | 354 } |
| 356 | 355 |
| 357 #pragma mark - Private methods. | 356 #pragma mark - Private methods. |
| 358 | 357 |
| 359 - (void)addDialogCoordinator:(AlertCoordinator*)coordinator | 358 - (void)addDialogCoordinator:(AlertCoordinator*)coordinator |
| 360 forWebState:(web::WebState*)webState { | 359 forWebState:(web::WebState*)webState { |
| 361 DCHECK(coordinator); | 360 DCHECK(coordinator); |
| 362 DCHECK(webState); | 361 DCHECK(webState); |
| 363 DCHECK_NE(webState, self.presentedDialogWebState); | 362 DCHECK_NE(webState, self.presentedDialogWebState); |
| 364 DCHECK(!_dialogCoordinatorsForWebStates[webState]); | 363 DCHECK(!_dialogCoordinatorsForWebStates[webState]); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 499 style:UIAlertActionStyleDestructive]; | 498 style:UIAlertActionStyleDestructive]; |
| 500 [confirmationCoordinator addItemWithTitle:l10n_util::GetNSString(IDS_CANCEL) | 499 [confirmationCoordinator addItemWithTitle:l10n_util::GetNSString(IDS_CANCEL) |
| 501 action:cancelHandler | 500 action:cancelHandler |
| 502 style:UIAlertActionStyleCancel]; | 501 style:UIAlertActionStyleCancel]; |
| 503 [weakSelf setBlockingConfirmationCoordinator:confirmationCoordinator]; | 502 [weakSelf setBlockingConfirmationCoordinator:confirmationCoordinator]; |
| 504 [[weakSelf blockingConfirmationCoordinator] start]; | 503 [[weakSelf blockingConfirmationCoordinator] start]; |
| 505 } copy]; | 504 } copy]; |
| 506 } | 505 } |
| 507 | 506 |
| 508 @end | 507 @end |
| OLD | NEW |