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

Side by Side Diff: ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.mm

Issue 2824493002: Reland of [ObjC ARC] Converts ios/chrome/browser/ui/contextual_search:contextual_search to ARC. (Closed)
Patch Set: fix test 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/chrome/browser/ui/contextual_search/touch_to_search_permissions_med iator.h" 5 #import "ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_med iator.h"
6 6
7 #import <UIKit/UIKit.h> 7 #import <UIKit/UIKit.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #import "base/ios/weak_nsobject.h"
11 #include "base/logging.h" 10 #include "base/logging.h"
12 #include "components/prefs/pref_change_registrar.h" 11 #include "components/prefs/pref_change_registrar.h"
13 #include "components/prefs/pref_service.h" 12 #include "components/prefs/pref_service.h"
14 #include "components/search_engines/template_url_service.h" 13 #include "components/search_engines/template_url_service.h"
15 #include "ios/chrome/app/tests_hook.h" 14 #include "ios/chrome/app/tests_hook.h"
16 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" 15 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
17 #include "ios/chrome/browser/chrome_switches.h" 16 #include "ios/chrome/browser/chrome_switches.h"
18 #include "ios/chrome/browser/pref_names.h" 17 #include "ios/chrome/browser/pref_names.h"
19 #import "ios/chrome/browser/prefs/pref_observer_bridge.h" 18 #import "ios/chrome/browser/prefs/pref_observer_bridge.h"
20 #include "ios/chrome/browser/search_engines/template_url_service_factory.h" 19 #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
21 #include "ios/chrome/browser/sync/sync_setup_service.h" 20 #include "ios/chrome/browser/sync/sync_setup_service.h"
22 #include "ios/chrome/browser/sync/sync_setup_service_factory.h" 21 #include "ios/chrome/browser/sync/sync_setup_service_factory.h"
23 #include "net/base/network_change_notifier.h" 22 #include "net/base/network_change_notifier.h"
24 23
24 #if !defined(__has_feature) || !__has_feature(objc_arc)
25 #error "This file requires ARC support."
26 #endif
27
25 namespace { 28 namespace {
26 // Maps pref string values to state enum. 29 // Maps pref string values to state enum.
27 const struct { 30 const struct {
28 const char* value; 31 const char* value;
29 TouchToSearch::TouchToSearchPreferenceState state; 32 TouchToSearch::TouchToSearchPreferenceState state;
30 } valueStateMappings[] = { 33 } valueStateMappings[] = {
31 {"false", TouchToSearch::DISABLED}, 34 {"false", TouchToSearch::DISABLED},
32 {"true", TouchToSearch::ENABLED}, 35 {"true", TouchToSearch::ENABLED},
33 {"", TouchToSearch::UNDECIDED}, 36 {"", TouchToSearch::UNDECIDED},
34 }; 37 };
35 } // namespace 38 } // namespace
36 39
37 @interface TouchToSearchPermissionsMediator ()<PrefObserverDelegate> { 40 @interface TouchToSearchPermissionsMediator ()<PrefObserverDelegate> {
38 ios::ChromeBrowserState* _browserState; 41 ios::ChromeBrowserState* _browserState;
39 SyncSetupService* _syncService; 42 SyncSetupService* _syncService;
40 base::WeakNSProtocol<NSObject<TouchToSearchPermissionsChangeAudience>*> 43 __weak NSObject<TouchToSearchPermissionsChangeAudience>* _audience;
41 _audience;
42 // Pref observer to track changes to the touch-to-search and search engine 44 // Pref observer to track changes to the touch-to-search and search engine
43 // prefs. 45 // prefs.
44 std::unique_ptr<PrefObserverBridge> _prefObserverBridge; 46 std::unique_ptr<PrefObserverBridge> _prefObserverBridge;
45 47
46 // Registrar for pref changes notifications. 48 // Registrar for pref changes notifications.
47 PrefChangeRegistrar _prefChangeRegistrar; 49 PrefChangeRegistrar _prefChangeRegistrar;
48 } 50 }
49 51
50 // YES if notifications are being observed. 52 // YES if notifications are being observed.
51 @property(nonatomic, assign) BOOL observing; 53 @property(nonatomic, assign) BOOL observing;
(...skipping 30 matching lines...) Expand all
82 return !tests_hook::DisableContextualSearch(); 84 return !tests_hook::DisableContextualSearch();
83 } 85 }
84 86
85 return NO; 87 return NO;
86 } 88 }
87 89
88 - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { 90 - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState {
89 if ((self = [super init])) { 91 if ((self = [super init])) {
90 if (browserState && browserState->IsOffTheRecord()) { 92 if (browserState && browserState->IsOffTheRecord()) {
91 // Discard the allocated object and return a nil object. 93 // Discard the allocated object and return a nil object.
92 [self release];
93 return nil; 94 return nil;
94 } 95 }
95 [self setUpBrowserState:browserState]; 96 [self setUpBrowserState:browserState];
96 } 97 }
97 return self; 98 return self;
98 } 99 }
99 100
100 - (instancetype)init { 101 - (instancetype)init {
101 NOTREACHED(); 102 NOTREACHED();
102 return nil; 103 return nil;
103 } 104 }
104 105
105 - (void)dealloc { 106 - (void)dealloc {
106 // Set audience to nil to stop observation. 107 // Set audience to nil to stop observation.
107 self.audience = nil; 108 self.audience = nil;
108 [super dealloc];
109 } 109 }
110 110
111 - (void)setUpBrowserState:(ios::ChromeBrowserState*)browserState { 111 - (void)setUpBrowserState:(ios::ChromeBrowserState*)browserState {
112 DCHECK(browserState); 112 DCHECK(browserState);
113 _browserState = browserState; 113 _browserState = browserState;
114 _syncService = SyncSetupServiceFactory::GetForBrowserState(_browserState); 114 _syncService = SyncSetupServiceFactory::GetForBrowserState(_browserState);
115 } 115 }
116 116
117 #pragma mark - Property implementation 117 #pragma mark - Property implementation
118 118
(...skipping 20 matching lines...) Expand all
139 NOTREACHED() << "Unexpected preference state (" << state << ")"; 139 NOTREACHED() << "Unexpected preference state (" << state << ")";
140 } 140 }
141 141
142 - (NSObject<TouchToSearchPermissionsChangeAudience>*)audience { 142 - (NSObject<TouchToSearchPermissionsChangeAudience>*)audience {
143 return _audience; 143 return _audience;
144 } 144 }
145 145
146 - (void)setAudience: 146 - (void)setAudience:
147 (NSObject<TouchToSearchPermissionsChangeAudience>*)audience { 147 (NSObject<TouchToSearchPermissionsChangeAudience>*)audience {
148 [self stopObserving]; 148 [self stopObserving];
149 _audience.reset(audience); 149 _audience = audience;
150 [self startObserving]; 150 [self startObserving];
151 } 151 }
152 152
153 #pragma mark - Public methods 153 #pragma mark - Public methods
154 154
155 - (BOOL)canEnable { 155 - (BOOL)canEnable {
156 if (![[self class] isTouchToSearchAvailableOnDevice]) { 156 if (![[self class] isTouchToSearchAvailableOnDevice]) {
157 return NO; 157 return NO;
158 } else if (self.preferenceState == TouchToSearch::DISABLED) { 158 } else if (self.preferenceState == TouchToSearch::DISABLED) {
159 return NO; 159 return NO;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 respondsToSelector:@selector( 263 respondsToSelector:@selector(
264 touchToSearchDidChangePreferenceState:)]) { 264 touchToSearchDidChangePreferenceState:)]) {
265 [self.audience touchToSearchDidChangePreferenceState:self.preferenceState]; 265 [self.audience touchToSearchDidChangePreferenceState:self.preferenceState];
266 } 266 }
267 } 267 }
268 268
269 - (void)maybeNotifyAudienceAsynchronously { 269 - (void)maybeNotifyAudienceAsynchronously {
270 if (self.audience) { 270 if (self.audience) {
271 if ([self.audience 271 if ([self.audience
272 respondsToSelector:@selector(touchToSearchPermissionsUpdated)]) { 272 respondsToSelector:@selector(touchToSearchPermissionsUpdated)]) {
273 base::WeakNSProtocol<NSObject<TouchToSearchPermissionsChangeAudience>*> 273 __weak NSObject<TouchToSearchPermissionsChangeAudience>* audience =
274 audience(self.audience); 274 self.audience;
275 dispatch_async(dispatch_get_main_queue(), ^{ 275 dispatch_async(dispatch_get_main_queue(), ^{
276 [audience touchToSearchPermissionsUpdated]; 276 [audience touchToSearchPermissionsUpdated];
277 }); 277 });
278 } 278 }
279 } else { 279 } else {
280 // If audience is now nil, stop observing. 280 // If audience is now nil, stop observing.
281 [self stopObserving]; 281 [self stopObserving];
282 } 282 }
283 } 283 }
284 284
(...skipping 13 matching lines...) Expand all
298 298
299 #pragma mark Notification Center handler 299 #pragma mark Notification Center handler
300 300
301 - (void)statusMayHaveChangedWithNotification:(NSNotification*)notification { 301 - (void)statusMayHaveChangedWithNotification:(NSNotification*)notification {
302 // VoiceOver may have been enabled or disabled, so (if there is an audience 302 // VoiceOver may have been enabled or disabled, so (if there is an audience
303 // object), notify it asynchronously. 303 // object), notify it asynchronously.
304 [self maybeNotifyAudienceAsynchronously]; 304 [self maybeNotifyAudienceAsynchronously];
305 } 305 }
306 306
307 @end 307 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698