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

Side by Side Diff: trunk/src/chrome/browser/chrome_to_mobile_service.cc

Issue 17610004: Revert 208315 "Make use of InvalidationService" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/chrome_to_mobile_service.h" 5 #include "chrome/browser/chrome_to_mobile_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/guid.h" 10 #include "base/guid.h"
11 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
12 #include "base/json/json_writer.h" 12 #include "base/json/json_writer.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "base/prefs/pref_service.h" 14 #include "base/prefs/pref_service.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "chrome/app/chrome_command_ids.h" 16 #include "chrome/app/chrome_command_ids.h"
17 #include "chrome/browser/chrome_to_mobile_service_factory.h" 17 #include "chrome/browser/chrome_to_mobile_service_factory.h"
18 #include "chrome/browser/invalidation/invalidation_service.h"
19 #include "chrome/browser/invalidation/invalidation_service_factory.h"
20 #include "chrome/browser/printing/cloud_print/cloud_print_url.h" 18 #include "chrome/browser/printing/cloud_print/cloud_print_url.h"
21 #include "chrome/browser/profiles/profile.h" 19 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/signin/token_service.h" 20 #include "chrome/browser/signin/token_service.h"
23 #include "chrome/browser/signin/token_service_factory.h" 21 #include "chrome/browser/signin/token_service_factory.h"
22 #include "chrome/browser/sync/profile_sync_service.h"
23 #include "chrome/browser/sync/profile_sync_service_factory.h"
24 #include "chrome/browser/ui/browser.h" 24 #include "chrome/browser/ui/browser.h"
25 #include "chrome/browser/ui/browser_command_controller.h" 25 #include "chrome/browser/ui/browser_command_controller.h"
26 #include "chrome/browser/ui/browser_finder.h" 26 #include "chrome/browser/ui/browser_finder.h"
27 #include "chrome/browser/ui/browser_navigator.h" 27 #include "chrome/browser/ui/browser_navigator.h"
28 #include "chrome/browser/ui/tabs/tab_strip_model.h" 28 #include "chrome/browser/ui/tabs/tab_strip_model.h"
29 #include "chrome/common/chrome_notification_types.h" 29 #include "chrome/common/chrome_notification_types.h"
30 #include "chrome/common/chrome_switches.h" 30 #include "chrome/common/chrome_switches.h"
31 #include "chrome/common/cloud_print/cloud_print_constants.h" 31 #include "chrome/common/cloud_print/cloud_print_constants.h"
32 #include "chrome/common/cloud_print/cloud_print_helpers.h" 32 #include "chrome/common/cloud_print/cloud_print_helpers.h"
33 #include "chrome/common/extensions/feature_switch.h" 33 #include "chrome/common/extensions/feature_switch.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // static 254 // static
255 void ChromeToMobileService::RegisterUserPrefs( 255 void ChromeToMobileService::RegisterUserPrefs(
256 user_prefs::PrefRegistrySyncable* registry) { 256 user_prefs::PrefRegistrySyncable* registry) {
257 registry->RegisterListPref(prefs::kChromeToMobileDeviceList, 257 registry->RegisterListPref(prefs::kChromeToMobileDeviceList,
258 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 258 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
259 } 259 }
260 260
261 ChromeToMobileService::ChromeToMobileService(Profile* profile) 261 ChromeToMobileService::ChromeToMobileService(Profile* profile)
262 : weak_ptr_factory_(this), 262 : weak_ptr_factory_(this),
263 profile_(profile), 263 profile_(profile),
264 invalidation_enabled_(false) { 264 sync_invalidation_enabled_(false) {
265 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183 265 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183
266 266 ProfileSyncService* profile_sync_service =
267 invalidation::InvalidationService* invalidation_service = profile_ ? 267 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL;
268 invalidation::InvalidationServiceFactory::GetForProfile(profile_) : NULL; 268 if (profile_sync_service) {
269 if (invalidation_service) {
270 CloudPrintURL cloud_print_url(profile_); 269 CloudPrintURL cloud_print_url(profile_);
271 cloud_print_url_ = cloud_print_url.GetCloudPrintServiceURL(); 270 cloud_print_url_ = cloud_print_url.GetCloudPrintServiceURL();
272 invalidation_enabled_ = 271 sync_invalidation_enabled_ =
273 (invalidation_service->GetInvalidatorState() == 272 (profile_sync_service->GetInvalidatorState() ==
274 syncer::INVALIDATIONS_ENABLED); 273 syncer::INVALIDATIONS_ENABLED);
275 // Register for cloud print device list invalidation notifications. 274 // Register for cloud print device list invalidation notifications.
276 invalidation_service->RegisterInvalidationHandler(this); 275 profile_sync_service->RegisterInvalidationHandler(this);
277 syncer::ObjectIdSet ids; 276 syncer::ObjectIdSet ids;
278 ids.insert(invalidation::ObjectId( 277 ids.insert(invalidation::ObjectId(
279 ipc::invalidation::ObjectSource::CHROME_COMPONENTS, 278 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
280 kSyncInvalidationObjectIdChromeToMobileDeviceList)); 279 kSyncInvalidationObjectIdChromeToMobileDeviceList));
281 invalidation_service->UpdateRegisteredInvalidationIds(this, ids); 280 profile_sync_service->UpdateRegisteredInvalidationIds(this, ids);
282 } 281 }
283 } 282 }
284 283
285 ChromeToMobileService::~ChromeToMobileService() { 284 ChromeToMobileService::~ChromeToMobileService() {
286 while (!snapshots_.empty()) 285 while (!snapshots_.empty())
287 DeleteSnapshot(*snapshots_.begin()); 286 DeleteSnapshot(*snapshots_.begin());
288 } 287 }
289 288
290 bool ChromeToMobileService::HasMobiles() const { 289 bool ChromeToMobileService::HasMobiles() const {
291 const base::ListValue* mobiles = GetMobiles(); 290 const base::ListValue* mobiles = GetMobiles();
292 return mobiles && !mobiles->empty(); 291 return mobiles && !mobiles->empty();
293 } 292 }
294 293
295 const base::ListValue* ChromeToMobileService::GetMobiles() const { 294 const base::ListValue* ChromeToMobileService::GetMobiles() const {
296 return invalidation_enabled_ ? 295 return sync_invalidation_enabled_ ?
297 profile_->GetPrefs()->GetList(prefs::kChromeToMobileDeviceList) : NULL; 296 profile_->GetPrefs()->GetList(prefs::kChromeToMobileDeviceList) : NULL;
298 } 297 }
299 298
300 void ChromeToMobileService::GenerateSnapshot(Browser* browser, 299 void ChromeToMobileService::GenerateSnapshot(Browser* browser,
301 base::WeakPtr<Observer> observer) { 300 base::WeakPtr<Observer> observer) {
302 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 301 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
303 // Callback SnapshotFileCreated from CreateSnapshotFile to continue. 302 // Callback SnapshotFileCreated from CreateSnapshotFile to continue.
304 CreateSnapshotFileCallback callback = 303 CreateSnapshotFileCallback callback =
305 base::Bind(&ChromeToMobileService::SnapshotFileCreated, 304 base::Bind(&ChromeToMobileService::SnapshotFileCreated,
306 weak_ptr_factory_.GetWeakPtr(), observer, 305 weak_ptr_factory_.GetWeakPtr(), observer,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 LogMetric(LEARN_MORE_CLICKED); 377 LogMetric(LEARN_MORE_CLICKED);
379 chrome::NavigateParams params(browser, 378 chrome::NavigateParams params(browser,
380 GURL(chrome::kChromeToMobileLearnMoreURL), content::PAGE_TRANSITION_LINK); 379 GURL(chrome::kChromeToMobileLearnMoreURL), content::PAGE_TRANSITION_LINK);
381 params.disposition = NEW_FOREGROUND_TAB; 380 params.disposition = NEW_FOREGROUND_TAB;
382 chrome::Navigate(&params); 381 chrome::Navigate(&params);
383 } 382 }
384 383
385 void ChromeToMobileService::Shutdown() { 384 void ChromeToMobileService::Shutdown() {
386 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183 385 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183
387 // Unregister for cloud print device list invalidation notifications. 386 // Unregister for cloud print device list invalidation notifications.
388 invalidation::InvalidationService* invalidation_service = profile_ ? 387 ProfileSyncService* profile_sync_service =
389 invalidation::InvalidationServiceFactory::GetForProfile(profile_) : NULL; 388 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL;
390 if (invalidation_service) 389 if (profile_sync_service)
391 invalidation_service->UnregisterInvalidationHandler(this); 390 profile_sync_service->UnregisterInvalidationHandler(this);
392 } 391 }
393 392
394 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) { 393 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) {
395 if (source->GetOriginalURL() == GetSearchURL(cloud_print_url_)) 394 if (source->GetOriginalURL() == GetSearchURL(cloud_print_url_))
396 HandleSearchResponse(source); 395 HandleSearchResponse(source);
397 else if (source->GetOriginalURL() == GetSubmitURL(cloud_print_url_)) 396 else if (source->GetOriginalURL() == GetSubmitURL(cloud_print_url_))
398 HandleSubmitResponse(source); 397 HandleSubmitResponse(source);
399 else 398 else
400 NOTREACHED(); 399 NOTREACHED();
401 400
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 auth_retry_timer_.Start(FROM_HERE, delay, this, 465 auth_retry_timer_.Start(FROM_HERE, delay, this,
467 &ChromeToMobileService::RequestAccessToken); 466 &ChromeToMobileService::RequestAccessToken);
468 467
469 // Clear the mobile list, which may be (or become) out of date. 468 // Clear the mobile list, which may be (or become) out of date.
470 ListValue empty; 469 ListValue empty;
471 profile_->GetPrefs()->Set(prefs::kChromeToMobileDeviceList, empty); 470 profile_->GetPrefs()->Set(prefs::kChromeToMobileDeviceList, empty);
472 } 471 }
473 472
474 void ChromeToMobileService::OnInvalidatorStateChange( 473 void ChromeToMobileService::OnInvalidatorStateChange(
475 syncer::InvalidatorState state) { 474 syncer::InvalidatorState state) {
476 invalidation_enabled_ = (state == syncer::INVALIDATIONS_ENABLED); 475 sync_invalidation_enabled_ = (state == syncer::INVALIDATIONS_ENABLED);
477 } 476 }
478 477
479 void ChromeToMobileService::OnIncomingInvalidation( 478 void ChromeToMobileService::OnIncomingInvalidation(
480 const syncer::ObjectIdInvalidationMap& invalidation_map) { 479 const syncer::ObjectIdInvalidationMap& invalidation_map) {
481 DCHECK_EQ(1U, invalidation_map.size()); 480 DCHECK_EQ(1U, invalidation_map.size());
482 DCHECK_EQ(1U, invalidation_map.count(invalidation::ObjectId( 481 DCHECK_EQ(1U, invalidation_map.count(invalidation::ObjectId(
483 ipc::invalidation::ObjectSource::CHROME_COMPONENTS, 482 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
484 kSyncInvalidationObjectIdChromeToMobileDeviceList))); 483 kSyncInvalidationObjectIdChromeToMobileDeviceList)));
485 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183 484 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183
486 invalidation::InvalidationService* invalidation_service = profile_ ? 485 ProfileSyncService* profile_sync_service =
487 invalidation::InvalidationServiceFactory::GetForProfile(profile_) : NULL; 486 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL;
488 if (invalidation_service) { 487 if (profile_sync_service) {
489 // TODO(dcheng): Only acknowledge the invalidation once the device search 488 // TODO(dcheng): Only acknowledge the invalidation once the device search
490 // has finished. http://crbug.com/156843. 489 // has finished. http://crbug.com/156843.
491 invalidation_service->AcknowledgeInvalidation( 490 profile_sync_service->AcknowledgeInvalidation(
492 invalidation_map.begin()->first, 491 invalidation_map.begin()->first,
493 invalidation_map.begin()->second.ack_handle); 492 invalidation_map.begin()->second.ack_handle);
494 } 493 }
495 RequestDeviceSearch(); 494 RequestDeviceSearch();
496 } 495 }
497 496
498 const std::string& ChromeToMobileService::GetAccessTokenForTest() const { 497 const std::string& ChromeToMobileService::GetAccessTokenForTest() const {
499 return access_token_; 498 return access_token_;
500 } 499 }
501 500
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 754
756 // Report failure below and ignore the second response. 755 // Report failure below and ignore the second response.
757 request_observer_map_.erase(other); 756 request_observer_map_.erase(other);
758 break; 757 break;
759 } 758 }
760 } 759 }
761 760
762 if (observer.get()) 761 if (observer.get())
763 observer->OnSendComplete(success); 762 observer->OnSendComplete(success);
764 } 763 }
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/chrome_to_mobile_service.h ('k') | trunk/src/chrome/browser/chrome_to_mobile_service_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698