| OLD | NEW |
| 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/sync/profile_sync_service.h" | 5 #include "chrome/browser/sync/profile_sync_service.h" |
| 6 | 6 |
| 7 #include <cstddef> | 7 #include <cstddef> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/bind_helpers.h" | 13 #include "base/bind_helpers.h" |
| 14 #include "base/callback.h" | 14 #include "base/callback.h" |
| 15 #include "base/command_line.h" | 15 #include "base/command_line.h" |
| 16 #include "base/compiler_specific.h" | 16 #include "base/compiler_specific.h" |
| 17 #include "base/file_util.h" | 17 #include "base/file_util.h" |
| 18 #include "base/logging.h" | 18 #include "base/logging.h" |
| 19 #include "base/memory/ref_counted.h" | 19 #include "base/memory/ref_counted.h" |
| 20 #include "base/message_loop/message_loop.h" | 20 #include "base/message_loop/message_loop.h" |
| 21 #include "base/metrics/histogram.h" | 21 #include "base/metrics/histogram.h" |
| 22 #include "base/strings/string16.h" | 22 #include "base/strings/string16.h" |
| 23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 24 #include "base/threading/thread_restrictions.h" | 24 #include "base/threading/thread_restrictions.h" |
| 25 #include "build/build_config.h" | 25 #include "build/build_config.h" |
| 26 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" | 26 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" |
| 27 #include "chrome/browser/browser_process.h" | 27 #include "chrome/browser/browser_process.h" |
| 28 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 28 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| 29 #include "chrome/browser/browsing_data/browsing_data_remover.h" | |
| 30 #include "chrome/browser/chrome_notification_types.h" | 29 #include "chrome/browser/chrome_notification_types.h" |
| 31 #include "chrome/browser/defaults.h" | 30 #include "chrome/browser/defaults.h" |
| 32 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" | 31 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" |
| 33 #include "chrome/browser/net/chrome_cookie_notification_details.h" | 32 #include "chrome/browser/net/chrome_cookie_notification_details.h" |
| 34 #include "chrome/browser/password_manager/password_store_factory.h" | 33 #include "chrome/browser/password_manager/password_store_factory.h" |
| 35 #include "chrome/browser/prefs/chrome_pref_service_factory.h" | 34 #include "chrome/browser/prefs/chrome_pref_service_factory.h" |
| 36 #include "chrome/browser/prefs/pref_service_syncable.h" | 35 #include "chrome/browser/prefs/pref_service_syncable.h" |
| 37 #include "chrome/browser/profiles/profile.h" | 36 #include "chrome/browser/profiles/profile.h" |
| 38 #include "chrome/browser/services/gcm/gcm_profile_service.h" | 37 #include "chrome/browser/services/gcm/gcm_profile_service.h" |
| 39 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" | 38 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 }; | 163 }; |
| 165 | 164 |
| 166 static const base::FilePath::CharType kSyncDataFolderName[] = | 165 static const base::FilePath::CharType kSyncDataFolderName[] = |
| 167 FILE_PATH_LITERAL("Sync Data"); | 166 FILE_PATH_LITERAL("Sync Data"); |
| 168 | 167 |
| 169 static const base::FilePath::CharType kSyncBackupDataFolderName[] = | 168 static const base::FilePath::CharType kSyncBackupDataFolderName[] = |
| 170 FILE_PATH_LITERAL("Sync Data Backup"); | 169 FILE_PATH_LITERAL("Sync Data Backup"); |
| 171 | 170 |
| 172 namespace { | 171 namespace { |
| 173 | 172 |
| 174 void ClearBrowsingData(Profile* profile, base::Time start, base::Time end) { | 173 void ClearBrowsingData(BrowsingDataRemover::Observer* observer, |
| 174 Profile* profile, |
| 175 base::Time start, |
| 176 base::Time end) { |
| 175 // BrowsingDataRemover deletes itself when it's done. | 177 // BrowsingDataRemover deletes itself when it's done. |
| 176 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForRange( | 178 BrowsingDataRemover* remover = BrowsingDataRemover::CreateForRange( |
| 177 profile, start, end); | 179 profile, start, end); |
| 180 if (observer) |
| 181 remover->AddObserver(observer); |
| 178 remover->Remove(BrowsingDataRemover::REMOVE_ALL, | 182 remover->Remove(BrowsingDataRemover::REMOVE_ALL, |
| 179 BrowsingDataHelper::ALL); | 183 BrowsingDataHelper::ALL); |
| 180 | 184 |
| 181 password_manager::PasswordStore* password = | 185 password_manager::PasswordStore* password = |
| 182 PasswordStoreFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS); | 186 PasswordStoreFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS); |
| 183 password->RemoveLoginsSyncedBetween(start, end); | 187 password->RemoveLoginsSyncedBetween(start, end); |
| 184 } | 188 } |
| 185 | 189 |
| 186 } // anonymous namespace | 190 } // anonymous namespace |
| 187 | 191 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 signin_.get(), | 240 signin_.get(), |
| 237 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, | 241 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, |
| 238 startup_controller_weak_factory_.GetWeakPtr(), | 242 startup_controller_weak_factory_.GetWeakPtr(), |
| 239 BACKUP), | 243 BACKUP), |
| 240 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, | 244 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, |
| 241 startup_controller_weak_factory_.GetWeakPtr(), | 245 startup_controller_weak_factory_.GetWeakPtr(), |
| 242 ROLLBACK)), | 246 ROLLBACK)), |
| 243 backend_mode_(IDLE), | 247 backend_mode_(IDLE), |
| 244 need_backup_(false), | 248 need_backup_(false), |
| 245 backup_finished_(false), | 249 backup_finished_(false), |
| 246 clear_browsing_data_(base::Bind(&ClearBrowsingData)) { | 250 clear_browsing_data_(base::Bind(&ClearBrowsingData)), |
| 251 browsing_data_remover_observer_(NULL) { |
| 247 DCHECK(profile); | 252 DCHECK(profile); |
| 248 syncer::SyncableService::StartSyncFlare flare( | 253 syncer::SyncableService::StartSyncFlare flare( |
| 249 sync_start_util::GetFlareForSyncableService(profile->GetPath())); | 254 sync_start_util::GetFlareForSyncableService(profile->GetPath())); |
| 250 scoped_ptr<browser_sync::LocalSessionEventRouter> router( | 255 scoped_ptr<browser_sync::LocalSessionEventRouter> router( |
| 251 new NotificationServiceSessionsRouter(profile, flare)); | 256 new NotificationServiceSessionsRouter(profile, flare)); |
| 252 | 257 |
| 253 DCHECK(factory_.get()); | 258 DCHECK(factory_.get()); |
| 254 local_device_ = factory_->CreateLocalDeviceInfoProvider(); | 259 local_device_ = factory_->CreateLocalDeviceInfoProvider(); |
| 255 sessions_sync_manager_.reset( | 260 sessions_sync_manager_.reset( |
| 256 new SessionsSyncManager(profile, local_device_.get(), router.Pass())); | 261 new SessionsSyncManager(profile, local_device_.get(), router.Pass())); |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 invalidator, | 723 invalidator, |
| 719 sync_prefs_.AsWeakPtr(), | 724 sync_prefs_.AsWeakPtr(), |
| 720 sync_folder)); | 725 sync_folder)); |
| 721 | 726 |
| 722 // Initialize the backend. Every time we start up a new SyncBackendHost, | 727 // Initialize the backend. Every time we start up a new SyncBackendHost, |
| 723 // we'll want to start from a fresh SyncDB, so delete any old one that might | 728 // we'll want to start from a fresh SyncDB, so delete any old one that might |
| 724 // be there. | 729 // be there. |
| 725 InitializeBackend(ShouldDeleteSyncFolder()); | 730 InitializeBackend(ShouldDeleteSyncFolder()); |
| 726 | 731 |
| 727 UpdateFirstSyncTimePref(); | 732 UpdateFirstSyncTimePref(); |
| 733 |
| 734 NotifyObservers(); |
| 728 } | 735 } |
| 729 | 736 |
| 730 void ProfileSyncService::OnGetTokenSuccess( | 737 void ProfileSyncService::OnGetTokenSuccess( |
| 731 const OAuth2TokenService::Request* request, | 738 const OAuth2TokenService::Request* request, |
| 732 const std::string& access_token, | 739 const std::string& access_token, |
| 733 const base::Time& expiration_time) { | 740 const base::Time& expiration_time) { |
| 734 DCHECK_EQ(access_token_request_, request); | 741 DCHECK_EQ(access_token_request_, request); |
| 735 access_token_request_.reset(); | 742 access_token_request_.reset(); |
| 736 access_token_ = access_token; | 743 access_token_ = access_token; |
| 737 token_receive_time_ = base::Time::Now(); | 744 token_receive_time_ = base::Time::Now(); |
| (...skipping 1925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2663 // Set if not set before and it's syncing now. | 2670 // Set if not set before and it's syncing now. |
| 2664 sync_prefs_.SetFirstSyncTime(base::Time::Now()); | 2671 sync_prefs_.SetFirstSyncTime(base::Time::Now()); |
| 2665 } | 2672 } |
| 2666 } | 2673 } |
| 2667 | 2674 |
| 2668 void ProfileSyncService::ClearBrowsingDataSinceFirstSync() { | 2675 void ProfileSyncService::ClearBrowsingDataSinceFirstSync() { |
| 2669 base::Time first_sync_time = sync_prefs_.GetFirstSyncTime(); | 2676 base::Time first_sync_time = sync_prefs_.GetFirstSyncTime(); |
| 2670 if (first_sync_time.is_null()) | 2677 if (first_sync_time.is_null()) |
| 2671 return; | 2678 return; |
| 2672 | 2679 |
| 2673 clear_browsing_data_.Run(profile_, first_sync_time, base::Time::Now()); | 2680 clear_browsing_data_.Run(browsing_data_remover_observer_, |
| 2681 profile_, |
| 2682 first_sync_time, |
| 2683 base::Time::Now()); |
| 2684 } |
| 2685 |
| 2686 void ProfileSyncService::SetBrowsingDataRemoverObserverForTesting( |
| 2687 BrowsingDataRemover::Observer* observer) { |
| 2688 browsing_data_remover_observer_ = observer; |
| 2674 } | 2689 } |
| 2675 | 2690 |
| 2676 void ProfileSyncService::SetClearingBrowseringDataForTesting( | 2691 void ProfileSyncService::SetClearingBrowseringDataForTesting( |
| 2677 base::Callback<void(Profile*, base::Time, base::Time)> c) { | 2692 base::Callback<void(BrowsingDataRemover::Observer* observer, |
| 2693 Profile*, |
| 2694 base::Time, |
| 2695 base::Time)> c) { |
| 2678 clear_browsing_data_ = c; | 2696 clear_browsing_data_ = c; |
| 2679 } | 2697 } |
| 2680 | 2698 |
| 2681 GURL ProfileSyncService::GetSyncServiceURL( | 2699 GURL ProfileSyncService::GetSyncServiceURL( |
| 2682 const base::CommandLine& command_line) { | 2700 const base::CommandLine& command_line) { |
| 2683 // By default, dev, canary, and unbranded Chromium users will go to the | 2701 // By default, dev, canary, and unbranded Chromium users will go to the |
| 2684 // development servers. Development servers have more features than standard | 2702 // development servers. Development servers have more features than standard |
| 2685 // sync servers. Users with officially-branded Chrome stable and beta builds | 2703 // sync servers. Users with officially-branded Chrome stable and beta builds |
| 2686 // will go to the standard sync servers. | 2704 // will go to the standard sync servers. |
| 2687 GURL result(kDevServerUrl); | 2705 GURL result(kDevServerUrl); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2767 true)); | 2785 true)); |
| 2768 } | 2786 } |
| 2769 | 2787 |
| 2770 bool ProfileSyncService::NeedBackup() const { | 2788 bool ProfileSyncService::NeedBackup() const { |
| 2771 return need_backup_; | 2789 return need_backup_; |
| 2772 } | 2790 } |
| 2773 | 2791 |
| 2774 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { | 2792 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { |
| 2775 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); | 2793 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); |
| 2776 } | 2794 } |
| OLD | NEW |