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

Side by Side Diff: ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dialog_coordinator.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_coordinator.h"
6
7 #import "ios/clean/chrome/browser/ui/commands/java_script_dialog_commands.h"
8 #import "ios/clean/chrome/browser/ui/dialogs/dialog_coordinator+subclassing.h"
9 #import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dia log_mediator.h"
10 #import "ios/clean/chrome/browser/ui/dialogs/java_script_dialogs/java_script_dia log_request.h"
11 #import "ios/clean/chrome/browser/ui/overlay_service/browser_coordinator+overlay _support.h"
12 #import "ios/clean/chrome/browser/ui/overlay_service/overlay_service.h"
13 #import "ios/shared/chrome/browser/ui/browser_list/browser.h"
14 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h"
15 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h"
16
17 #if !defined(__has_feature) || !__has_feature(objc_arc)
18 #error "This file requires ARC support."
19 #endif
20
21 @interface JavaScriptDialogCoordinator ()<JavaScriptDialogDismissalCommands> {
22 // Backing object for property of same name (from Subclassing category).
23 DialogMediator* _mediator;
24 }
25
26 // The dispatcher to use for JavaScriptdialogDismissalCommands.
27 @property(nonatomic, readonly) id<JavaScriptDialogDismissalCommands>
28 dismissalDispatcher;
29 // The request for this dialog.
30 @property(nonatomic, strong) JavaScriptDialogRequest* request;
31
32 @end
33
34 @implementation JavaScriptDialogCoordinator
35 @synthesize request = _request;
36
37 - (instancetype)initWithRequest:(JavaScriptDialogRequest*)request {
38 DCHECK(request);
39 if ((self = [super init])) {
40 _request = request;
41 }
42 return self;
43 }
44
45 #pragma mark - Accessors
46
47 - (id<JavaScriptDialogDismissalCommands>)dismissalDispatcher {
48 return static_cast<id<JavaScriptDialogDismissalCommands>>(
49 self.browser->dispatcher());
50 }
51
52 #pragma mark - BrowserCoordinator
53
54 - (void)start {
55 _mediator = [[JavaScriptDialogMediator alloc]
56 initWithRequest:self.request
57 dispatcher:self.dismissalDispatcher];
58 [self.browser->dispatcher()
59 startDispatchingToTarget:self
60 forProtocol:@protocol(JavaScriptDialogDismissalCommands)];
61 [super start];
62 }
63
64 - (void)stop {
65 if (self.started)
66 [self.browser->dispatcher() stopDispatchingToTarget:self];
67 [super stop];
68 }
69
70 #pragma mark - JavaScriptDialogDismisalCommands
71
72 - (void)dismissJavaScriptDialog {
73 [self stop];
74 }
75
76 @end
77
78 @implementation JavaScriptDialogCoordinator (OverlaySupport)
79
80 - (void)cancelOverlay {
81 [self.request finishRequestWithSuccess:NO userInput:nil];
82 }
83
84 @end
85
86 @implementation JavaScriptDialogCoordinator (Subclassing)
87
88 - (DialogMediator*)mediator {
89 return _mediator;
90 }
91
92 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698