blob: c57174a4c7b232978cac7d8395da51d59cb05b8d [file] [log] [blame]
// Copyright 2017 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_WEB_VIEW_INTERNAL_WEB_VIEW_JAVA_SCRIPT_DIALOG_PRESENTER_H_
#define IOS_WEB_VIEW_INTERNAL_WEB_VIEW_JAVA_SCRIPT_DIALOG_PRESENTER_H_
#import "ios/web/public/java_script_dialog_presenter.h"
@class CWVWebView;
@protocol CWVUIDelegate;
namespace ios_web_view {
// WebView implementation of JavaScriptDialogPresenter. Passes JavaScript alert
// handling to |ui_delegate_|.
class WebViewJavaScriptDialogPresenter final
: public web::JavaScriptDialogPresenter {
public:
WebViewJavaScriptDialogPresenter(CWVWebView* web_view,
id<CWVUIDelegate> ui_delegate);
~WebViewJavaScriptDialogPresenter();
void SetUIDelegate(id<CWVUIDelegate> ui_delegate);
// web::JavaScriptDialogPresenter overrides:
void RunJavaScriptDialog(web::WebState* web_state,
const GURL& origin_url,
web::JavaScriptDialogType dialog_type,
NSString* message_text,
NSString* default_prompt_text,
web::DialogClosedCallback callback) override;
void CancelDialogs(web::WebState* web_state) override;
private:
// Displays JavaScript alert.
void HandleJavaScriptAlert(const GURL& origin_url,
NSString* message_text,
web::DialogClosedCallback callback);
// Displays JavaScript confirm dialog.
void HandleJavaScriptConfirmDialog(const GURL& origin_url,
NSString* message_text,
web::DialogClosedCallback callback);
// Displays JavaScript text prompt.
void HandleJavaScriptTextPrompt(const GURL& origin_url,
NSString* message_text,
NSString* default_prompt_text,
web::DialogClosedCallback callback);
// The underlying delegate handling the dialog UI.
__weak id<CWVUIDelegate> ui_delegate_ = nil;
// The web view which originated the dialogs.
__weak CWVWebView* web_view_ = nil;
DISALLOW_COPY_AND_ASSIGN(WebViewJavaScriptDialogPresenter);
};
} // namespace ios_web_view
#endif // IOS_WEB_VIEW_INTERNAL_WEB_VIEW_JAVA_SCRIPT_DIALOG_PRESENTER_H_