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

Side by Side Diff: ios/clean/chrome/browser/ui/tab/tab_coordinator.mm

Issue 2737563006: [ios] Adds support for Find in Page to the new architecture. (Closed)
Patch Set: ObjC mediator Created 3 years, 8 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" 5 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/mac/foundation_util.h" 9 #include "base/mac/foundation_util.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #import "ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h" 11 #import "ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h"
12 #import "ios/clean/chrome/browser/ui/find_in_page/find_in_page_coordinator.h"
12 #import "ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.h" 13 #import "ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.h"
13 #import "ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h" 14 #import "ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h"
14 #import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h" 15 #import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h"
15 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_coordinator.h" 16 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_coordinator.h"
16 #import "ios/clean/chrome/browser/ui/web_contents/web_coordinator.h" 17 #import "ios/clean/chrome/browser/ui/web_contents/web_coordinator.h"
17 #import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h" 18 #import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h"
18 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h" 19 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h"
19 #import "ios/web/public/web_state/web_state.h" 20 #import "ios/web/public/web_state/web_state.h"
20 #import "ios/web/public/web_state/web_state_observer_bridge.h" 21 #import "ios/web/public/web_state/web_state_observer_bridge.h"
21 22
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 [webCoordinator start]; 61 [webCoordinator start];
61 62
62 ToolbarCoordinator* toolbarCoordinator = [[ToolbarCoordinator alloc] init]; 63 ToolbarCoordinator* toolbarCoordinator = [[ToolbarCoordinator alloc] init];
63 toolbarCoordinator.webState = self.webState; 64 toolbarCoordinator.webState = self.webState;
64 [self addChildCoordinator:toolbarCoordinator]; 65 [self addChildCoordinator:toolbarCoordinator];
65 // Unset the base view controller, so |toolbarCoordinator| doesn't present 66 // Unset the base view controller, so |toolbarCoordinator| doesn't present
66 // its view controller. 67 // its view controller.
67 toolbarCoordinator.context.baseViewController = nil; 68 toolbarCoordinator.context.baseViewController = nil;
68 [toolbarCoordinator start]; 69 [toolbarCoordinator start];
69 70
71 // Create the FindInPage coordinator but do not start it. It will be started
72 // when a find in page operation is invoked.
73 FindInPageCoordinator* findInPageCoordinator =
74 [[FindInPageCoordinator alloc] init];
75 [self addChildCoordinator:findInPageCoordinator];
76
70 TabStripCoordinator* tabStripCoordinator = [[TabStripCoordinator alloc] init]; 77 TabStripCoordinator* tabStripCoordinator = [[TabStripCoordinator alloc] init];
71 [self addChildCoordinator:tabStripCoordinator]; 78 [self addChildCoordinator:tabStripCoordinator];
72 // Unset the base view controller since this is a contained view controller. 79 // Unset the base view controller since this is a contained view controller.
73 tabStripCoordinator.context.baseViewController = nil; 80 tabStripCoordinator.context.baseViewController = nil;
74 [tabStripCoordinator start]; 81 [tabStripCoordinator start];
75 82
76 [self.context.baseViewController presentViewController:self.viewController 83 [self.context.baseViewController presentViewController:self.viewController
77 animated:self.context.animated 84 animated:self.context.animated
78 completion:nil]; 85 completion:nil];
79 [super start]; 86 [super start];
80 } 87 }
81 88
82 - (void)stop { 89 - (void)stop {
83 [super stop]; 90 [super stop];
84 // PLACEHOLDER: Stop child coordinators here for now. We might deal with this 91 // PLACEHOLDER: Stop child coordinators here for now. We might deal with this
85 // differently later on. 92 // differently later on.
86 for (BrowserCoordinator* child in self.children) { 93 for (BrowserCoordinator* child in self.children) {
87 [child stop]; 94 [child stop];
88 } 95 }
89 [self.viewController.presentingViewController 96 [self.viewController.presentingViewController
90 dismissViewControllerAnimated:self.context.animated 97 dismissViewControllerAnimated:self.context.animated
91 completion:nil]; 98 completion:nil];
92 _webStateObserver.reset(); 99 _webStateObserver.reset();
93 } 100 }
94 101
95 - (void)childCoordinatorDidStart:(BrowserCoordinator*)coordinator { 102 - (void)childCoordinatorDidStart:(BrowserCoordinator*)coordinator {
96 if ([coordinator isKindOfClass:[ToolbarCoordinator class]]) { 103 if ([coordinator isKindOfClass:[FindInPageCoordinator class]]) {
104 self.viewController.findBarViewController = coordinator.viewController;
105 } else if ([coordinator isKindOfClass:[ToolbarCoordinator class]]) {
97 self.viewController.toolbarViewController = coordinator.viewController; 106 self.viewController.toolbarViewController = coordinator.viewController;
98 } else if ([coordinator isKindOfClass:[WebCoordinator class]]) { 107 } else if ([coordinator isKindOfClass:[WebCoordinator class]]) {
99 self.viewController.contentViewController = coordinator.viewController; 108 self.viewController.contentViewController = coordinator.viewController;
100 } else if ([coordinator isKindOfClass:[TabStripCoordinator class]]) { 109 } else if ([coordinator isKindOfClass:[TabStripCoordinator class]]) {
101 self.viewController.tabStripViewController = coordinator.viewController; 110 self.viewController.tabStripViewController = coordinator.viewController;
102 } 111 }
103 } 112 }
104 113
114 - (void)childCoordinatorWillStop:(BrowserCoordinator*)coordinator {
115 if ([coordinator isKindOfClass:[FindInPageCoordinator class]]) {
116 self.viewController.findBarViewController = nil;
117 }
118 }
119
105 - (BOOL)canAddOverlayCoordinator:(BrowserCoordinator*)overlayCoordinator { 120 - (BOOL)canAddOverlayCoordinator:(BrowserCoordinator*)overlayCoordinator {
106 // This coordinator will always accept overlay coordinators. 121 // This coordinator will always accept overlay coordinators.
107 return YES; 122 return YES;
108 } 123 }
109 124
110 #pragma mark - Experiment support 125 #pragma mark - Experiment support
111 126
112 // Create and return a new view controller for use as a tab container; 127 // Create and return a new view controller for use as a tab container;
113 // experimental configurations determine which subclass of 128 // experimental configurations determine which subclass of
114 // TabContainerViewController to return. 129 // TabContainerViewController to return.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 - (id<UIViewControllerAnimatedTransitioning>) 165 - (id<UIViewControllerAnimatedTransitioning>)
151 animationControllerForDismissedController:(UIViewController*)dismissed { 166 animationControllerForDismissedController:(UIViewController*)dismissed {
152 ZoomTransitionAnimator* animator = [[ZoomTransitionAnimator alloc] init]; 167 ZoomTransitionAnimator* animator = [[ZoomTransitionAnimator alloc] init];
153 animator.presenting = NO; 168 animator.presenting = NO;
154 animator.presentationKey = self.presentationKey; 169 animator.presentationKey = self.presentationKey;
155 [animator selectDelegate:@[ dismissed.presentingViewController ]]; 170 [animator selectDelegate:@[ dismissed.presentingViewController ]];
156 return animator; 171 return animator;
157 } 172 }
158 173
159 @end 174 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698