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

Side by Side Diff: ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dialog_overlay_presenter.mm

Issue 2928723002: [iOS Clean] Added JavaScript dialog support.
Patch Set: rebase & Mark's comments 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dia log_overlay_presenter.h"
6
7 #import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dia log_coordinator.h"
8 #import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dia log_request.h"
9 #import "ios/clean/chrome/browser/ui/overlay_service/overlay_service.h"
10
11 #if !defined(__has_feature) || !__has_feature(objc_arc)
12 #error "This file requires ARC support."
13 #endif
14
15 DEFINE_WEB_STATE_USER_DATA_KEY(JavaScriptDialogOverlayPresenter);
16
17 // static
18 void JavaScriptDialogOverlayPresenter::CreateForWebState(
19 web::WebState* web_state,
20 OverlayService* overlay_service) {
21 DCHECK(web_state);
22 if (!FromWebState(web_state)) {
23 std::unique_ptr<JavaScriptDialogOverlayPresenter> presenter =
24 base::WrapUnique(
25 new JavaScriptDialogOverlayPresenter(web_state, overlay_service));
26 web_state->SetUserData(UserDataKey(), std::move(presenter));
27 }
28 }
29
30 JavaScriptDialogOverlayPresenter::JavaScriptDialogOverlayPresenter(
31 web::WebState* web_state,
32 OverlayService* overlay_service)
33 : web_state_(web_state), overlay_service_(overlay_service) {
34 DCHECK(web_state_);
35 DCHECK(overlay_service_);
36 }
37
38 JavaScriptDialogOverlayPresenter::~JavaScriptDialogOverlayPresenter() {}
39
40 void JavaScriptDialogOverlayPresenter::RunJavaScriptDialog(
41 web::WebState* web_state,
42 const GURL& origin_url,
43 web::JavaScriptDialogType dialog_type,
44 NSString* message_text,
45 NSString* default_prompt_text,
46 const web::DialogClosedCallback& callback) {
47 // This presenter should only attempt to present dialogs from its associated
48 // WebState.
49 DCHECK_EQ(web_state_, web_state);
50 // Create a new coordinator and add it to the overlay queue.
51 JavaScriptDialogRequest* request =
52 [JavaScriptDialogRequest stateWithWebState:web_state
53 type:dialog_type
54 originURL:origin_url
55 message:message_text
56 defaultPromptText:default_prompt_text
57 callback:callback];
58 overlay_service_->ShowOverlayForWebState(
59 [[JavaScriptDialogCoordinator alloc] initWithRequest:request], web_state);
60 }
61
62 void JavaScriptDialogOverlayPresenter::CancelDialogs(web::WebState* web_state) {
63 overlay_service_->CancelOverlayForWebState(web_state);
64 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698