OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "ios/chrome/browser/sync/ios_chrome_sync_client.h" | 5 #include "ios/chrome/browser/sync/ios_chrome_sync_client.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 #include "ios/chrome/browser/undo/bookmark_undo_service_factory.h" | 62 #include "ios/chrome/browser/undo/bookmark_undo_service_factory.h" |
63 #include "ios/chrome/browser/web_data_service_factory.h" | 63 #include "ios/chrome/browser/web_data_service_factory.h" |
64 #include "ios/chrome/common/channel_info.h" | 64 #include "ios/chrome/common/channel_info.h" |
65 #include "ios/web/public/web_thread.h" | 65 #include "ios/web/public/web_thread.h" |
66 #include "ui/base/device_form_factor.h" | 66 #include "ui/base/device_form_factor.h" |
67 | 67 |
68 #if !defined(__has_feature) || !__has_feature(objc_arc) | 68 #if !defined(__has_feature) || !__has_feature(objc_arc) |
69 #error "This file requires ARC support." | 69 #error "This file requires ARC support." |
70 #endif | 70 #endif |
71 | 71 |
72 using autofill::AutocompleteSyncableService; | |
73 using autofill::AutofillProfileSyncableService; | |
74 using autofill::AutofillWalletMetadataSyncableService; | |
75 using autofill::AutofillWalletSyncableService; | |
76 using base::Callback; | |
77 using base::WeakPtr; | |
78 using syncer::SyncableService; | |
79 | |
80 using ServiceProvider = syncer::SyncClient::ServiceProvider; | |
81 | |
82 namespace { | 72 namespace { |
83 | 73 |
84 template <typename T> | |
85 T Trampoline(T arg) { | |
86 return arg; | |
87 } | |
88 | |
89 template <typename T> | |
90 Callback<T()> WrapInCallback(T arg) { | |
91 return base::Bind(&Trampoline<T>, arg); | |
92 } | |
93 | |
94 WeakPtr<SyncableService> ServiceAsWeakPtr(SyncableService* ptr) { | |
95 return ptr ? ptr->AsWeakPtr() : WeakPtr<SyncableService>(); | |
96 } | |
97 | |
98 ServiceProvider WrapInProvider(SyncableService* service) { | |
99 return WrapInCallback(ServiceAsWeakPtr(service)); | |
100 } | |
101 | |
102 template <typename T> | |
103 WeakPtr<SyncableService> CallbackResultAsWeakPtr(Callback<T()> callback) { | |
104 return ServiceAsWeakPtr(callback.Run()); | |
105 } | |
106 | |
107 template <typename T> | |
108 ServiceProvider WrapInWeakPtrCallback(Callback<T()> callback) { | |
109 return base::Bind(&CallbackResultAsWeakPtr<T>, callback); | |
110 } | |
111 | |
112 // iOS implementation of SyncSessionsClient. Needs to be in a separate class | 74 // iOS implementation of SyncSessionsClient. Needs to be in a separate class |
113 // due to possible multiple inheritance issues, wherein IOSChromeSyncClient | 75 // due to possible multiple inheritance issues, wherein IOSChromeSyncClient |
114 // might inherit from other interfaces with same methods. | 76 // might inherit from other interfaces with same methods. |
115 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { | 77 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { |
116 public: | 78 public: |
117 explicit SyncSessionsClientImpl(ios::ChromeBrowserState* browser_state) | 79 explicit SyncSessionsClientImpl(ios::ChromeBrowserState* browser_state) |
118 : browser_state_(browser_state), | 80 : browser_state_(browser_state), |
119 window_delegates_getter_( | 81 window_delegates_getter_( |
120 base::MakeUnique<TabModelSyncedWindowDelegatesGetter>()), | 82 base::MakeUnique<TabModelSyncedWindowDelegatesGetter>()), |
121 local_session_event_router_( | 83 local_session_event_router_( |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 scoped_refptr<syncer::ExtensionsActivity> | 255 scoped_refptr<syncer::ExtensionsActivity> |
294 IOSChromeSyncClient::GetExtensionsActivity() { | 256 IOSChromeSyncClient::GetExtensionsActivity() { |
295 return nullptr; | 257 return nullptr; |
296 } | 258 } |
297 | 259 |
298 sync_sessions::SyncSessionsClient* | 260 sync_sessions::SyncSessionsClient* |
299 IOSChromeSyncClient::GetSyncSessionsClient() { | 261 IOSChromeSyncClient::GetSyncSessionsClient() { |
300 return sync_sessions_client_.get(); | 262 return sync_sessions_client_.get(); |
301 } | 263 } |
302 | 264 |
303 ServiceProvider IOSChromeSyncClient::GetSyncableServiceForType( | 265 base::WeakPtr<syncer::SyncableService> |
304 syncer::ModelType type) { | 266 IOSChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { |
305 switch (type) { | 267 switch (type) { |
306 case syncer::DEVICE_INFO: | 268 case syncer::DEVICE_INFO: |
307 return WrapInProvider( | 269 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
308 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_) | 270 browser_state_) |
309 ->GetDeviceInfoSyncableService()); | 271 ->GetDeviceInfoSyncableService() |
| 272 ->AsWeakPtr(); |
310 case syncer::PREFERENCES: | 273 case syncer::PREFERENCES: |
| 274 return browser_state_->GetSyncablePrefs() |
| 275 ->GetSyncableService(syncer::PREFERENCES) |
| 276 ->AsWeakPtr(); |
311 case syncer::PRIORITY_PREFERENCES: | 277 case syncer::PRIORITY_PREFERENCES: |
312 return WrapInProvider( | 278 return browser_state_->GetSyncablePrefs() |
313 browser_state_->GetSyncablePrefs()->GetSyncableService(type)); | 279 ->GetSyncableService(syncer::PRIORITY_PREFERENCES) |
| 280 ->AsWeakPtr(); |
314 case syncer::AUTOFILL: | 281 case syncer::AUTOFILL: |
315 case syncer::AUTOFILL_PROFILE: | 282 case syncer::AUTOFILL_PROFILE: |
316 case syncer::AUTOFILL_WALLET_DATA: | 283 case syncer::AUTOFILL_WALLET_DATA: |
317 case syncer::AUTOFILL_WALLET_METADATA: { | 284 case syncer::AUTOFILL_WALLET_METADATA: { |
318 if (!web_data_service_) | 285 if (!web_data_service_) |
319 return WrapInProvider(nullptr); | 286 return base::WeakPtr<syncer::SyncableService>(); |
320 if (type == syncer::AUTOFILL) { | 287 if (type == syncer::AUTOFILL) { |
321 return WrapInWeakPtrCallback( | 288 return autofill::AutocompleteSyncableService::FromWebDataService( |
322 base::Bind(&AutocompleteSyncableService::FromWebDataService, | 289 web_data_service_.get()) |
323 base::RetainedRef(web_data_service_))); | 290 ->AsWeakPtr(); |
324 } else if (type == syncer::AUTOFILL_PROFILE) { | 291 } else if (type == syncer::AUTOFILL_PROFILE) { |
325 return WrapInWeakPtrCallback( | 292 return autofill::AutofillProfileSyncableService::FromWebDataService( |
326 base::Bind(&AutofillProfileSyncableService::FromWebDataService, | 293 web_data_service_.get()) |
327 base::RetainedRef(web_data_service_))); | 294 ->AsWeakPtr(); |
328 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { | 295 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { |
329 return WrapInWeakPtrCallback(base::Bind( | 296 return autofill::AutofillWalletMetadataSyncableService:: |
330 &AutofillWalletMetadataSyncableService::FromWebDataService, | 297 FromWebDataService(web_data_service_.get()) |
331 base::RetainedRef(web_data_service_))); | 298 ->AsWeakPtr(); |
332 } | 299 } |
333 return WrapInWeakPtrCallback( | 300 return autofill::AutofillWalletSyncableService::FromWebDataService( |
334 base::Bind(&AutofillWalletSyncableService::FromWebDataService, | 301 web_data_service_.get()) |
335 base::RetainedRef(web_data_service_))); | 302 ->AsWeakPtr(); |
336 } | 303 } |
337 case syncer::HISTORY_DELETE_DIRECTIVES: { | 304 case syncer::HISTORY_DELETE_DIRECTIVES: { |
338 return WrapInProvider(ios::HistoryServiceFactory::GetForBrowserState( | 305 history::HistoryService* history = |
339 browser_state_, ServiceAccessType::EXPLICIT_ACCESS)); | 306 ios::HistoryServiceFactory::GetForBrowserState( |
| 307 browser_state_, ServiceAccessType::EXPLICIT_ACCESS); |
| 308 return history ? history->AsWeakPtr() |
| 309 : base::WeakPtr<history::HistoryService>(); |
340 } | 310 } |
341 case syncer::TYPED_URLS: { | 311 case syncer::TYPED_URLS: { |
342 history::HistoryService* history = | 312 history::HistoryService* history = |
343 ios::HistoryServiceFactory::GetForBrowserState( | 313 ios::HistoryServiceFactory::GetForBrowserState( |
344 browser_state_, ServiceAccessType::EXPLICIT_ACCESS); | 314 browser_state_, ServiceAccessType::EXPLICIT_ACCESS); |
345 return WrapInProvider(history ? history->GetTypedUrlSyncableService() | 315 return history ? history->GetTypedUrlSyncableService()->AsWeakPtr() |
346 : nullptr); | 316 : base::WeakPtr<syncer::SyncableService>(); |
347 } | 317 } |
348 case syncer::FAVICON_IMAGES: | 318 case syncer::FAVICON_IMAGES: |
349 case syncer::FAVICON_TRACKING: { | 319 case syncer::FAVICON_TRACKING: { |
350 return WrapInProvider( | 320 sync_sessions::FaviconCache* favicons = |
351 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_) | 321 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_) |
352 ->GetFaviconCache()); | 322 ->GetFaviconCache(); |
| 323 return favicons ? favicons->AsWeakPtr() |
| 324 : base::WeakPtr<syncer::SyncableService>(); |
353 } | 325 } |
354 case syncer::ARTICLES: { | 326 case syncer::ARTICLES: { |
355 // DomDistillerService is used in iOS ReadingList. The distilled articles | 327 // DomDistillerService is used in iOS ReadingList. The distilled articles |
356 // are saved separately and must not be synced. | 328 // are saved separately and must not be synced. |
357 // Add a not reached to avoid having ARTICLES sync be enabled silently. | 329 // Add a not reached to avoid having ARTICLES sync be enabled silently. |
358 NOTREACHED(); | 330 NOTREACHED(); |
359 return WrapInProvider(nullptr); | 331 return base::WeakPtr<syncer::SyncableService>(); |
360 } | 332 } |
361 case syncer::SESSIONS: { | 333 case syncer::SESSIONS: { |
362 return WrapInProvider( | 334 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
363 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_) | 335 browser_state_) |
364 ->GetSessionsSyncableService()); | 336 ->GetSessionsSyncableService() |
| 337 ->AsWeakPtr(); |
365 } | 338 } |
366 case syncer::PASSWORDS: { | 339 case syncer::PASSWORDS: { |
367 return password_store_ ? base::Bind(&password_manager::PasswordStore:: | 340 return password_store_ ? password_store_->GetPasswordSyncableService() |
368 GetPasswordSyncableService, | 341 : base::WeakPtr<syncer::SyncableService>(); |
369 base::RetainedRef(password_store_)) | |
370 : WrapInProvider(nullptr); | |
371 } | 342 } |
372 default: | 343 default: |
373 NOTREACHED(); | 344 NOTREACHED(); |
374 return WrapInProvider(nullptr); | 345 return base::WeakPtr<syncer::SyncableService>(); |
375 } | 346 } |
376 } | 347 } |
377 | 348 |
378 base::WeakPtr<syncer::ModelTypeSyncBridge> | 349 base::WeakPtr<syncer::ModelTypeSyncBridge> |
379 IOSChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { | 350 IOSChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { |
380 switch (type) { | 351 switch (type) { |
381 case syncer::DEVICE_INFO: | 352 case syncer::DEVICE_INFO: |
382 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( | 353 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
383 browser_state_) | 354 browser_state_) |
384 ->GetDeviceInfoSyncBridge() | 355 ->GetDeviceInfoSyncBridge() |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state); | 427 IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state); |
457 if (profile_sync_service != nullptr) { | 428 if (profile_sync_service != nullptr) { |
458 const syncer::DeviceInfoTracker* tracker = | 429 const syncer::DeviceInfoTracker* tracker = |
459 profile_sync_service->GetDeviceInfoTracker(); | 430 profile_sync_service->GetDeviceInfoTracker(); |
460 if (tracker != nullptr) { | 431 if (tracker != nullptr) { |
461 trackers->push_back(tracker); | 432 trackers->push_back(tracker); |
462 } | 433 } |
463 } | 434 } |
464 } | 435 } |
465 } | 436 } |
OLD | NEW |