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

Side by Side Diff: chrome/browser/sync/internal_api/sync_manager.cc

Issue 9565050: [Sync] Simplify GetSessionName interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix win compile failure Created 8 years, 9 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/sync/internal_api/sync_manager.h" 5 #include "chrome/browser/sync/internal_api/sync_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "chrome/browser/sync/notifier/sync_notifier.h" 43 #include "chrome/browser/sync/notifier/sync_notifier.h"
44 #include "chrome/browser/sync/notifier/sync_notifier_observer.h" 44 #include "chrome/browser/sync/notifier/sync_notifier_observer.h"
45 #include "chrome/browser/sync/protocol/encryption.pb.h" 45 #include "chrome/browser/sync/protocol/encryption.pb.h"
46 #include "chrome/browser/sync/protocol/proto_value_conversions.h" 46 #include "chrome/browser/sync/protocol/proto_value_conversions.h"
47 #include "chrome/browser/sync/protocol/sync.pb.h" 47 #include "chrome/browser/sync/protocol/sync.pb.h"
48 #include "chrome/browser/sync/syncable/directory_change_delegate.h" 48 #include "chrome/browser/sync/syncable/directory_change_delegate.h"
49 #include "chrome/browser/sync/syncable/model_type.h" 49 #include "chrome/browser/sync/syncable/model_type.h"
50 #include "chrome/browser/sync/syncable/model_type_payload_map.h" 50 #include "chrome/browser/sync/syncable/model_type_payload_map.h"
51 #include "chrome/browser/sync/syncable/syncable.h" 51 #include "chrome/browser/sync/syncable/syncable.h"
52 #include "chrome/browser/sync/util/cryptographer.h" 52 #include "chrome/browser/sync/util/cryptographer.h"
53 #include "chrome/browser/sync/util/get_session_name_task.h" 53 #include "chrome/browser/sync/util/get_session_name.h"
54 #include "chrome/browser/sync/util/time.h" 54 #include "chrome/browser/sync/util/time.h"
55 #include "chrome/common/chrome_switches.h" 55 #include "chrome/common/chrome_switches.h"
56 #include "chrome/common/chrome_version_info.h" 56 #include "chrome/common/chrome_version_info.h"
57 #include "content/public/browser/browser_thread.h"
58 #include "net/base/network_change_notifier.h" 57 #include "net/base/network_change_notifier.h"
59 58
60 using std::string; 59 using std::string;
61 60
62 using base::TimeDelta; 61 using base::TimeDelta;
63 using browser_sync::AllStatus; 62 using browser_sync::AllStatus;
64 using browser_sync::Cryptographer; 63 using browser_sync::Cryptographer;
65 using browser_sync::Encryptor; 64 using browser_sync::Encryptor;
66 using browser_sync::JsArgList; 65 using browser_sync::JsArgList;
67 using browser_sync::JsBackend; 66 using browser_sync::JsBackend;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 179
181 virtual ~SyncInternal() { 180 virtual ~SyncInternal() {
182 CHECK(!initialized_); 181 CHECK(!initialized_);
183 } 182 }
184 183
185 bool Init(const FilePath& database_location, 184 bool Init(const FilePath& database_location,
186 const WeakHandle<JsEventHandler>& event_handler, 185 const WeakHandle<JsEventHandler>& event_handler,
187 const std::string& sync_server_and_path, 186 const std::string& sync_server_and_path,
188 int port, 187 int port,
189 bool use_ssl, 188 bool use_ssl,
189 const scoped_refptr<base::TaskRunner>& blocking_task_runner,
190 HttpPostProviderFactory* post_factory, 190 HttpPostProviderFactory* post_factory,
191 ModelSafeWorkerRegistrar* model_safe_worker_registrar, 191 ModelSafeWorkerRegistrar* model_safe_worker_registrar,
192 browser_sync::ExtensionsActivityMonitor* 192 browser_sync::ExtensionsActivityMonitor*
193 extensions_activity_monitor, 193 extensions_activity_monitor,
194 ChangeDelegate* change_delegate, 194 ChangeDelegate* change_delegate,
195 const std::string& user_agent, 195 const std::string& user_agent,
196 const SyncCredentials& credentials, 196 const SyncCredentials& credentials,
197 sync_notifier::SyncNotifier* sync_notifier, 197 sync_notifier::SyncNotifier* sync_notifier,
198 const std::string& restored_key_for_bootstrapping, 198 const std::string& restored_key_for_bootstrapping,
199 bool setup_for_test_mode, 199 bool setup_for_test_mode,
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 // HandleCalculateChangesChangeEventFromSyncApi(), which can be 526 // HandleCalculateChangesChangeEventFromSyncApi(), which can be
527 // called from any thread. Valid only between between calls to 527 // called from any thread. Valid only between between calls to
528 // Init() and Shutdown(). 528 // Init() and Shutdown().
529 // 529 //
530 // TODO(akalin): Ideally, we wouldn't need to store this; instead, 530 // TODO(akalin): Ideally, we wouldn't need to store this; instead,
531 // we'd have another worker class which implements 531 // we'd have another worker class which implements
532 // HandleCalculateChangesChangeEventFromSyncApi() and we'd pass it a 532 // HandleCalculateChangesChangeEventFromSyncApi() and we'd pass it a
533 // WeakHandle when we construct it. 533 // WeakHandle when we construct it.
534 WeakHandle<SyncInternal> weak_handle_this_; 534 WeakHandle<SyncInternal> weak_handle_this_;
535 535
536 // |blocking_task_runner| is a TaskRunner to be used for tasks that
537 // may block on disk I/O.
538 scoped_refptr<base::TaskRunner> blocking_task_runner_;
539
536 // We give a handle to share_ to clients of the API for use when constructing 540 // We give a handle to share_ to clients of the API for use when constructing
537 // any transaction type. 541 // any transaction type.
538 UserShare share_; 542 UserShare share_;
539 543
540 // This can be called from any thread, but only between calls to 544 // This can be called from any thread, but only between calls to
541 // OpenDirectory() and ShutdownOnSyncThread(). 545 // OpenDirectory() and ShutdownOnSyncThread().
542 browser_sync::WeakHandle<SyncManager::ChangeObserver> change_observer_; 546 browser_sync::WeakHandle<SyncManager::ChangeObserver> change_observer_;
543 547
544 ObserverList<SyncManager::Observer> observers_; 548 ObserverList<SyncManager::Observer> observers_;
545 549
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 718
715 SyncManager::Status::~Status() { 719 SyncManager::Status::~Status() {
716 } 720 }
717 721
718 bool SyncManager::Init( 722 bool SyncManager::Init(
719 const FilePath& database_location, 723 const FilePath& database_location,
720 const WeakHandle<JsEventHandler>& event_handler, 724 const WeakHandle<JsEventHandler>& event_handler,
721 const std::string& sync_server_and_path, 725 const std::string& sync_server_and_path,
722 int sync_server_port, 726 int sync_server_port,
723 bool use_ssl, 727 bool use_ssl,
728 const scoped_refptr<base::TaskRunner>& blocking_task_runner,
724 HttpPostProviderFactory* post_factory, 729 HttpPostProviderFactory* post_factory,
725 ModelSafeWorkerRegistrar* registrar, 730 ModelSafeWorkerRegistrar* registrar,
726 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, 731 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor,
727 ChangeDelegate* change_delegate, 732 ChangeDelegate* change_delegate,
728 const std::string& user_agent, 733 const std::string& user_agent,
729 const SyncCredentials& credentials, 734 const SyncCredentials& credentials,
730 sync_notifier::SyncNotifier* sync_notifier, 735 sync_notifier::SyncNotifier* sync_notifier,
731 const std::string& restored_key_for_bootstrapping, 736 const std::string& restored_key_for_bootstrapping,
732 bool setup_for_test_mode, 737 bool setup_for_test_mode,
733 Encryptor* encryptor, 738 Encryptor* encryptor,
734 UnrecoverableErrorHandler* unrecoverable_error_handler, 739 UnrecoverableErrorHandler* unrecoverable_error_handler,
735 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { 740 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) {
736 DCHECK(thread_checker_.CalledOnValidThread()); 741 DCHECK(thread_checker_.CalledOnValidThread());
737 DCHECK(post_factory); 742 DCHECK(post_factory);
738 DVLOG(1) << "SyncManager starting Init..."; 743 DVLOG(1) << "SyncManager starting Init...";
739 string server_string(sync_server_and_path); 744 string server_string(sync_server_and_path);
740 return data_->Init(database_location, 745 return data_->Init(database_location,
741 event_handler, 746 event_handler,
742 server_string, 747 server_string,
743 sync_server_port, 748 sync_server_port,
744 use_ssl, 749 use_ssl,
750 blocking_task_runner,
745 post_factory, 751 post_factory,
746 registrar, 752 registrar,
747 extensions_activity_monitor, 753 extensions_activity_monitor,
748 change_delegate, 754 change_delegate,
749 user_agent, 755 user_agent,
750 credentials, 756 credentials,
751 sync_notifier, 757 sync_notifier,
752 restored_key_for_bootstrapping, 758 restored_key_for_bootstrapping,
753 setup_for_test_mode, 759 setup_for_test_mode,
754 encryptor, 760 encryptor,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 data_->scheduler()->Start( 857 data_->scheduler()->Start(
852 browser_sync::SyncScheduler::CONFIGURATION_MODE, callback); 858 browser_sync::SyncScheduler::CONFIGURATION_MODE, callback);
853 } 859 }
854 860
855 bool SyncManager::SyncInternal::Init( 861 bool SyncManager::SyncInternal::Init(
856 const FilePath& database_location, 862 const FilePath& database_location,
857 const WeakHandle<JsEventHandler>& event_handler, 863 const WeakHandle<JsEventHandler>& event_handler,
858 const std::string& sync_server_and_path, 864 const std::string& sync_server_and_path,
859 int port, 865 int port,
860 bool use_ssl, 866 bool use_ssl,
867 const scoped_refptr<base::TaskRunner>& blocking_task_runner,
861 HttpPostProviderFactory* post_factory, 868 HttpPostProviderFactory* post_factory,
862 ModelSafeWorkerRegistrar* model_safe_worker_registrar, 869 ModelSafeWorkerRegistrar* model_safe_worker_registrar,
863 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, 870 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor,
864 ChangeDelegate* change_delegate, 871 ChangeDelegate* change_delegate,
865 const std::string& user_agent, 872 const std::string& user_agent,
866 const SyncCredentials& credentials, 873 const SyncCredentials& credentials,
867 sync_notifier::SyncNotifier* sync_notifier, 874 sync_notifier::SyncNotifier* sync_notifier,
868 const std::string& restored_key_for_bootstrapping, 875 const std::string& restored_key_for_bootstrapping,
869 bool setup_for_test_mode, 876 bool setup_for_test_mode,
870 Encryptor* encryptor, 877 Encryptor* encryptor,
871 UnrecoverableErrorHandler* unrecoverable_error_handler, 878 UnrecoverableErrorHandler* unrecoverable_error_handler,
872 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { 879 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) {
873 CHECK(!initialized_); 880 CHECK(!initialized_);
874 881
875 DCHECK(thread_checker_.CalledOnValidThread()); 882 DCHECK(thread_checker_.CalledOnValidThread());
876 883
877 DVLOG(1) << "Starting SyncInternal initialization."; 884 DVLOG(1) << "Starting SyncInternal initialization.";
878 885
879 weak_handle_this_ = MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()); 886 weak_handle_this_ = MakeWeakHandle(weak_ptr_factory_.GetWeakPtr());
880 887
888 blocking_task_runner_ = blocking_task_runner;
889
881 registrar_ = model_safe_worker_registrar; 890 registrar_ = model_safe_worker_registrar;
882 change_delegate_ = change_delegate; 891 change_delegate_ = change_delegate;
883 setup_for_test_mode_ = setup_for_test_mode; 892 setup_for_test_mode_ = setup_for_test_mode;
884 893
885 sync_notifier_.reset(sync_notifier); 894 sync_notifier_.reset(sync_notifier);
886 895
887 AddObserver(&js_sync_manager_observer_); 896 AddObserver(&js_sync_manager_observer_);
888 SetJsEventHandler(event_handler); 897 SetJsEventHandler(event_handler);
889 898
890 AddObserver(&debug_info_event_listener_); 899 AddObserver(&debug_info_event_listener_);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 trans.GetWrappedTrans()->OnUnrecoverableError(FROM_HERE, 982 trans.GetWrappedTrans()->OnUnrecoverableError(FROM_HERE,
974 "Simulating unrecoverable error for testing purpose."); 983 "Simulating unrecoverable error for testing purpose.");
975 } 984 }
976 985
977 return signed_in; 986 return signed_in;
978 } 987 }
979 988
980 void SyncManager::SyncInternal::UpdateCryptographerAndNigori( 989 void SyncManager::SyncInternal::UpdateCryptographerAndNigori(
981 const base::Callback<void(bool)>& done_callback) { 990 const base::Callback<void(bool)>& done_callback) {
982 DCHECK(initialized_); 991 DCHECK(initialized_);
983 scoped_refptr<browser_sync::GetSessionNameTask> task = 992 browser_sync::GetSessionName(
984 new browser_sync::GetSessionNameTask(base::Bind( 993 blocking_task_runner_,
994 base::Bind(
985 &SyncManager::SyncInternal::UpdateCryptographerAndNigoriCallback, 995 &SyncManager::SyncInternal::UpdateCryptographerAndNigoriCallback,
986 weak_ptr_factory_.GetWeakPtr(), 996 weak_ptr_factory_.GetWeakPtr(),
987 done_callback)); 997 done_callback));
988 content::BrowserThread::PostTask(
989 content::BrowserThread::FILE,
990 FROM_HERE,
991 base::Bind(&browser_sync::GetSessionNameTask::GetSessionNameAsync,
992 task.get()));
993 } 998 }
994 999
995 void SyncManager::SyncInternal::UpdateCryptographerAndNigoriCallback( 1000 void SyncManager::SyncInternal::UpdateCryptographerAndNigoriCallback(
996 const base::Callback<void(bool)>& done_callback, 1001 const base::Callback<void(bool)>& done_callback,
997 const std::string& session_name) { 1002 const std::string& session_name) {
998 if (!directory()->initial_sync_ended_for_type(syncable::NIGORI)) { 1003 if (!directory()->initial_sync_ended_for_type(syncable::NIGORI)) {
999 done_callback.Run(false); // Should only happen during first time sync. 1004 done_callback.Run(false); // Should only happen during first time sync.
1000 return; 1005 return;
1001 } 1006 }
1002 1007
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after
2471 share->directory->GetDownloadProgress(i.Get(), &marker); 2476 share->directory->GetDownloadProgress(i.Get(), &marker);
2472 2477
2473 if (marker.token().empty()) 2478 if (marker.token().empty())
2474 result.Put(i.Get()); 2479 result.Put(i.Get());
2475 2480
2476 } 2481 }
2477 return result; 2482 return result;
2478 } 2483 }
2479 2484
2480 } // namespace sync_api 2485 } // namespace sync_api
OLDNEW
« no previous file with comments | « chrome/browser/sync/internal_api/sync_manager.h ('k') | chrome/browser/sync/internal_api/syncapi_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698