Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Unified Diff: ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.mm

Issue 2928723002: [iOS Clean] Added JavaScript dialog support.
Patch Set: rebased, subclassed DialogMediator Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.mm
diff --git a/ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.mm b/ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.mm
new file mode 100644
index 0000000000000000000000000000000000000000..f91c41d5a5eb4e3d810130e41aa7e79086530072
--- /dev/null
+++ b/ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.mm
@@ -0,0 +1,53 @@
+// 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.
+
+#import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/web_java_script_dialog_presenter.h"
+
+#import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dialog_coordinator.h"
+#import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dialog_state.h"
+#import "ios/clean/chrome/browser/ui/overlays/overlay_queue.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+DEFINE_WEB_STATE_USER_DATA_KEY(WebJavaScriptDialogPresenter);
+
+WebJavaScriptDialogPresenter::WebJavaScriptDialogPresenter(
+ web::WebState* web_state)
+ : web_state_(web_state) {
+ DCHECK(web_state);
+}
+
+WebJavaScriptDialogPresenter::~WebJavaScriptDialogPresenter() {}
+
+void WebJavaScriptDialogPresenter::RunJavaScriptDialog(
+ web::WebState* web_state,
+ const GURL& origin_url,
+ web::JavaScriptDialogType dialog_type,
+ NSString* message_text,
+ NSString* default_prompt_text,
+ const web::DialogClosedCallback& callback) {
+ // This presenter should only attempt to present dialogs from its associated
+ // WebState.
+ DCHECK_EQ(web_state_, web_state);
+ // Create a new coordinator and add it to the overlay queue.
+ JavaScriptDialogState* state =
+ [JavaScriptDialogState stateWithWebState:web_state
+ type:dialog_type
+ originURL:origin_url
+ message:message_text
+ defaultPromptText:default_prompt_text
+ callback:callback];
+ JavaScriptDialogCoordinator* dialog_coordinator =
+ [[JavaScriptDialogCoordinator alloc] initWithState:state];
+ OverlayQueue::FromWebState(web_state_)->AddOverlay(dialog_coordinator);
+}
+
+void WebJavaScriptDialogPresenter::CancelDialogs(web::WebState* web_state) {
+ // This presenter should only attempt to block dialogs from its associated
+ // WebState.
+ DCHECK_EQ(web_state_, web_state);
+ OverlayQueue::FromWebState(web_state_)->CancelOverlays();
+}

Powered by Google App Engine
This is Rietveld 408576698