| Index: ios/chrome/browser/ui/dialogs/dialog_presenter.h
|
| diff --git a/ios/chrome/browser/ui/dialogs/dialog_presenter.h b/ios/chrome/browser/ui/dialogs/dialog_presenter.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b3e7a4244c8099c38221267bbf4b496d2ab09586
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/dialogs/dialog_presenter.h
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_PRESENTER_H_
|
| +#define IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_PRESENTER_H_
|
| +
|
| +#import <UIKit/UIKit.h>
|
| +
|
| +#import "base/ios/block_types.h"
|
| +
|
| +@protocol DialogPresenterDelegate;
|
| +class GURL;
|
| +@class AlertCoordinator;
|
| +
|
| +// Accessibility identifier added to the text field of JavaScript prompts.
|
| +extern NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier;
|
| +
|
| +namespace web {
|
| +class WebState;
|
| +}
|
| +
|
| +// Handles the queued display of modal dialogs.
|
| +@interface DialogPresenter : NSObject
|
| +
|
| +// Whether the DialogPresenter should attempt to show dialogs. When |active| is
|
| +// NO, dialogs will be queued and displayed when the DialogPresenter is
|
| +// activated.
|
| +@property(nonatomic, assign, getter=isActive) BOOL active;
|
| +
|
| +// Dialogs will be presented from |viewController|.
|
| +- (instancetype)initWithDelegate:(id<DialogPresenterDelegate>)delegate
|
| + presentingViewController:(UIViewController*)viewController
|
| + NS_DESIGNATED_INITIALIZER;
|
| +- (instancetype)init NS_UNAVAILABLE;
|
| +
|
| +// Methods to show JavaScriptDialogs of each JavaScriptAlertType. If a dialog
|
| +// is already being presented, these functions will enqueue a new dialog to be
|
| +// shown when the visible dialog is dismissed. |context| will be retained until
|
| +// its associated dialog is dismissed or |-cancelDialogForContext:| is called.
|
| +- (void)runJavaScriptAlertPanelWithMessage:(NSString*)message
|
| + requestURL:(const GURL&)requestURL
|
| + webState:(web::WebState*)webState
|
| + completionHandler:(void (^)(void))completionHandler;
|
| +- (void)runJavaScriptConfirmPanelWithMessage:(NSString*)message
|
| + requestURL:(const GURL&)requestURL
|
| + webState:(web::WebState*)webState
|
| + completionHandler:
|
| + (void (^)(BOOL isConfirmed))completionHandler;
|
| +- (void)runJavaScriptTextInputPanelWithPrompt:(NSString*)message
|
| + defaultText:(NSString*)defaultText
|
| + requestURL:(const GURL&)requestURL
|
| + webState:(web::WebState*)webState
|
| + completionHandler:
|
| + (void (^)(NSString* input))completionHandler;
|
| +
|
| +// Displays an HTTP authentication dialog, which has 2 text fields
|
| +// (username and password), Login and Cancel button. If Login was tapped,
|
| +// |completionHandler| is called with valid strings which represent username
|
| +// and password inputs. If cancel is tapped then |completionHandler| is
|
| +// called with nil |user| and nil |password|. Username will be pre-populated
|
| +// from provided |credential|.
|
| +- (void)runAuthDialogForProtectionSpace:(NSURLProtectionSpace*)protectionSpace
|
| + proposedCredential:(NSURLCredential*)credential
|
| + webState:(web::WebState*)webState
|
| + completionHandler:
|
| + (void (^)(NSString* user, NSString* password))handler;
|
| +
|
| +// Cancels the display of the dialog associated with |context|.
|
| +- (void)cancelDialogForWebState:(web::WebState*)webState;
|
| +
|
| +// Dismisses the currently presented dialog and cancels all queued dialogs.
|
| +- (void)cancelAllDialogs;
|
| +
|
| +// Tries to present an alert if needed and possible. Called by the view
|
| +// controller which will present the alert to notify that it has dismissed a
|
| +// view controller.
|
| +- (void)tryToPresent;
|
| +
|
| +// Create an title for the alert base on the URL.
|
| ++ (NSString*)localizedTitleForJavaScriptAlertFromPage:(const GURL&)pageURL;
|
| +
|
| +@end
|
| +
|
| +@interface DialogPresenter (ExposedForTesting)
|
| +// The dialog currently being shown.
|
| +@property(nonatomic, readonly) AlertCoordinator* presentedDialogCoordinator;
|
| +
|
| +// Called when a button in |dialog| is tapped.
|
| +- (void)buttonWasTappedForCoordinator:(AlertCoordinator*)coordinator;
|
| +
|
| +@end
|
| +
|
| +// Delegate protocol for DialogPresenter.
|
| +@protocol DialogPresenterDelegate<NSObject>
|
| +
|
| +// Called by |presenter| before showing the queued modal dialog associated with
|
| +// |context|.
|
| +- (void)dialogPresenter:(DialogPresenter*)presenter
|
| + willShowDialogForWebState:(web::WebState*)webState;
|
| +
|
| +// Whether the delegate is presenting another View Controller.
|
| +@property(nonatomic, assign) BOOL presenting;
|
| +
|
| +@end
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_PRESENTER_H_
|
|
|