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 "sync/internal_api/sync_manager.h" | 5 #include "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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 HttpPostProviderFactory* post_factory, | 198 HttpPostProviderFactory* post_factory, |
199 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, | 199 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, |
200 const std::vector<browser_sync::ModelSafeWorker*>& workers, | 200 const std::vector<browser_sync::ModelSafeWorker*>& workers, |
201 browser_sync::ExtensionsActivityMonitor* | 201 browser_sync::ExtensionsActivityMonitor* |
202 extensions_activity_monitor, | 202 extensions_activity_monitor, |
203 ChangeDelegate* change_delegate, | 203 ChangeDelegate* change_delegate, |
204 const std::string& user_agent, | 204 const std::string& user_agent, |
205 const SyncCredentials& credentials, | 205 const SyncCredentials& credentials, |
206 sync_notifier::SyncNotifier* sync_notifier, | 206 sync_notifier::SyncNotifier* sync_notifier, |
207 const std::string& restored_key_for_bootstrapping, | 207 const std::string& restored_key_for_bootstrapping, |
| 208 const std::string& restored_keystore_key_for_bootstrapping, |
208 bool keystore_encryption_enabled, | 209 bool keystore_encryption_enabled, |
209 TestingMode testing_mode, | 210 TestingMode testing_mode, |
210 Encryptor* encryptor, | 211 Encryptor* encryptor, |
211 UnrecoverableErrorHandler* unrecoverable_error_handler, | 212 UnrecoverableErrorHandler* unrecoverable_error_handler, |
212 ReportUnrecoverableErrorFunction | 213 ReportUnrecoverableErrorFunction |
213 report_unrecoverable_error_function); | 214 report_unrecoverable_error_function); |
214 | 215 |
215 // Sign into sync with given credentials. | 216 // Sign into sync with given credentials. |
216 // We do not verify the tokens given. After this call, the tokens are set | 217 // We do not verify the tokens given. After this call, the tokens are set |
217 // and the sync DB is open. True if successful, false if something | 218 // and the sync DB is open. True if successful, false if something |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
743 const scoped_refptr<base::TaskRunner>& blocking_task_runner, | 744 const scoped_refptr<base::TaskRunner>& blocking_task_runner, |
744 HttpPostProviderFactory* post_factory, | 745 HttpPostProviderFactory* post_factory, |
745 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, | 746 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, |
746 const std::vector<browser_sync::ModelSafeWorker*>& workers, | 747 const std::vector<browser_sync::ModelSafeWorker*>& workers, |
747 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, | 748 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, |
748 ChangeDelegate* change_delegate, | 749 ChangeDelegate* change_delegate, |
749 const std::string& user_agent, | 750 const std::string& user_agent, |
750 const SyncCredentials& credentials, | 751 const SyncCredentials& credentials, |
751 sync_notifier::SyncNotifier* sync_notifier, | 752 sync_notifier::SyncNotifier* sync_notifier, |
752 const std::string& restored_key_for_bootstrapping, | 753 const std::string& restored_key_for_bootstrapping, |
| 754 const std::string& restored_keystore_key_for_bootstrapping, |
753 bool keystore_encryption_enabled, | 755 bool keystore_encryption_enabled, |
754 TestingMode testing_mode, | 756 TestingMode testing_mode, |
755 Encryptor* encryptor, | 757 Encryptor* encryptor, |
756 UnrecoverableErrorHandler* unrecoverable_error_handler, | 758 UnrecoverableErrorHandler* unrecoverable_error_handler, |
757 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { | 759 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { |
758 DCHECK(thread_checker_.CalledOnValidThread()); | 760 DCHECK(thread_checker_.CalledOnValidThread()); |
759 DCHECK(post_factory); | 761 DCHECK(post_factory); |
760 DVLOG(1) << "SyncManager starting Init..."; | 762 DVLOG(1) << "SyncManager starting Init..."; |
761 std::string server_string(sync_server_and_path); | 763 std::string server_string(sync_server_and_path); |
762 return data_->Init(database_location, | 764 return data_->Init(database_location, |
763 event_handler, | 765 event_handler, |
764 server_string, | 766 server_string, |
765 sync_server_port, | 767 sync_server_port, |
766 use_ssl, | 768 use_ssl, |
767 blocking_task_runner, | 769 blocking_task_runner, |
768 post_factory, | 770 post_factory, |
769 model_safe_routing_info, | 771 model_safe_routing_info, |
770 workers, | 772 workers, |
771 extensions_activity_monitor, | 773 extensions_activity_monitor, |
772 change_delegate, | 774 change_delegate, |
773 user_agent, | 775 user_agent, |
774 credentials, | 776 credentials, |
775 sync_notifier, | 777 sync_notifier, |
776 restored_key_for_bootstrapping, | 778 restored_key_for_bootstrapping, |
| 779 restored_keystore_key_for_bootstrapping, |
777 keystore_encryption_enabled, | 780 keystore_encryption_enabled, |
778 testing_mode, | 781 testing_mode, |
779 encryptor, | 782 encryptor, |
780 unrecoverable_error_handler, | 783 unrecoverable_error_handler, |
781 report_unrecoverable_error_function); | 784 report_unrecoverable_error_function); |
782 } | 785 } |
783 | 786 |
784 void SyncManager::UpdateCredentials(const SyncCredentials& credentials) { | 787 void SyncManager::UpdateCredentials(const SyncCredentials& credentials) { |
785 DCHECK(thread_checker_.CalledOnValidThread()); | 788 DCHECK(thread_checker_.CalledOnValidThread()); |
786 data_->UpdateCredentials(credentials); | 789 data_->UpdateCredentials(credentials); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 | 842 |
840 bool SyncManager::EncryptEverythingEnabledForTest() const { | 843 bool SyncManager::EncryptEverythingEnabledForTest() const { |
841 ReadTransaction trans(FROM_HERE, GetUserShare()); | 844 ReadTransaction trans(FROM_HERE, GetUserShare()); |
842 return trans.GetCryptographer()->encrypt_everything(); | 845 return trans.GetCryptographer()->encrypt_everything(); |
843 } | 846 } |
844 | 847 |
845 bool SyncManager::IsUsingExplicitPassphrase() { | 848 bool SyncManager::IsUsingExplicitPassphrase() { |
846 return data_ && data_->IsUsingExplicitPassphrase(); | 849 return data_ && data_->IsUsingExplicitPassphrase(); |
847 } | 850 } |
848 | 851 |
| 852 bool SyncManager::GetKeystoreKeyBootstrapToken(std::string* token) { |
| 853 ReadTransaction trans(FROM_HERE, GetUserShare()); |
| 854 return trans.GetCryptographer()->GetKeystoreKeyBootstrapToken(token); |
| 855 } |
| 856 |
849 void SyncManager::RequestClearServerData() { | 857 void SyncManager::RequestClearServerData() { |
850 DCHECK(thread_checker_.CalledOnValidThread()); | 858 DCHECK(thread_checker_.CalledOnValidThread()); |
851 if (data_->scheduler()) | 859 if (data_->scheduler()) |
852 data_->scheduler()->ClearUserData(); | 860 data_->scheduler()->ClearUserData(); |
853 } | 861 } |
854 | 862 |
855 void SyncManager::ConfigureSyncer( | 863 void SyncManager::ConfigureSyncer( |
856 ConfigureReason reason, | 864 ConfigureReason reason, |
857 const syncable::ModelTypeSet& types_to_config, | 865 const syncable::ModelTypeSet& types_to_config, |
858 const browser_sync::ModelSafeRoutingInfo& new_routing_info, | 866 const browser_sync::ModelSafeRoutingInfo& new_routing_info, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 const scoped_refptr<base::TaskRunner>& blocking_task_runner, | 912 const scoped_refptr<base::TaskRunner>& blocking_task_runner, |
905 HttpPostProviderFactory* post_factory, | 913 HttpPostProviderFactory* post_factory, |
906 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, | 914 const browser_sync::ModelSafeRoutingInfo& model_safe_routing_info, |
907 const std::vector<browser_sync::ModelSafeWorker*>& workers, | 915 const std::vector<browser_sync::ModelSafeWorker*>& workers, |
908 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, | 916 browser_sync::ExtensionsActivityMonitor* extensions_activity_monitor, |
909 ChangeDelegate* change_delegate, | 917 ChangeDelegate* change_delegate, |
910 const std::string& user_agent, | 918 const std::string& user_agent, |
911 const SyncCredentials& credentials, | 919 const SyncCredentials& credentials, |
912 sync_notifier::SyncNotifier* sync_notifier, | 920 sync_notifier::SyncNotifier* sync_notifier, |
913 const std::string& restored_key_for_bootstrapping, | 921 const std::string& restored_key_for_bootstrapping, |
| 922 const std::string& restored_keystore_key_for_bootstrapping, |
914 bool keystore_encryption_enabled, | 923 bool keystore_encryption_enabled, |
915 TestingMode testing_mode, | 924 TestingMode testing_mode, |
916 Encryptor* encryptor, | 925 Encryptor* encryptor, |
917 UnrecoverableErrorHandler* unrecoverable_error_handler, | 926 UnrecoverableErrorHandler* unrecoverable_error_handler, |
918 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { | 927 ReportUnrecoverableErrorFunction report_unrecoverable_error_function) { |
919 CHECK(!initialized_); | 928 CHECK(!initialized_); |
920 | 929 |
921 DCHECK(thread_checker_.CalledOnValidThread()); | 930 DCHECK(thread_checker_.CalledOnValidThread()); |
922 | 931 |
923 DVLOG(1) << "Starting SyncInternal initialization."; | 932 DVLOG(1) << "Starting SyncInternal initialization."; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 } | 992 } |
984 | 993 |
985 initialized_ = true; | 994 initialized_ = true; |
986 | 995 |
987 // Cryptographer should only be accessed while holding a | 996 // Cryptographer should only be accessed while holding a |
988 // transaction. Grabbing the user share for the transaction | 997 // transaction. Grabbing the user share for the transaction |
989 // checks the initialization state, so this must come after | 998 // checks the initialization state, so this must come after |
990 // |initialized_| is set to true. | 999 // |initialized_| is set to true. |
991 ReadTransaction trans(FROM_HERE, GetUserShare()); | 1000 ReadTransaction trans(FROM_HERE, GetUserShare()); |
992 trans.GetCryptographer()->Bootstrap(restored_key_for_bootstrapping); | 1001 trans.GetCryptographer()->Bootstrap(restored_key_for_bootstrapping); |
| 1002 trans.GetCryptographer()->BootstrapKeystoreKey( |
| 1003 restored_keystore_key_for_bootstrapping); |
993 trans.GetCryptographer()->AddObserver(this); | 1004 trans.GetCryptographer()->AddObserver(this); |
994 } | 1005 } |
995 | 1006 |
996 // Notify that initialization is complete. Note: This should be the last to | 1007 // Notify that initialization is complete. Note: This should be the last to |
997 // execute if |signed_in| is false. Reason being in that case we would | 1008 // execute if |signed_in| is false. Reason being in that case we would |
998 // post a task to shutdown sync. But if this function posts any other tasks | 1009 // post a task to shutdown sync. But if this function posts any other tasks |
999 // on the UI thread and if shutdown wins then that tasks would execute on | 1010 // on the UI thread and if shutdown wins then that tasks would execute on |
1000 // a freed pointer. This is because UI thread is not shut down. | 1011 // a freed pointer. This is because UI thread is not shut down. |
1001 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, | 1012 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, |
1002 OnInitializationComplete( | 1013 OnInitializationComplete( |
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2518 share->directory->GetDownloadProgress(i.Get(), &marker); | 2529 share->directory->GetDownloadProgress(i.Get(), &marker); |
2519 | 2530 |
2520 if (marker.token().empty()) | 2531 if (marker.token().empty()) |
2521 result.Put(i.Get()); | 2532 result.Put(i.Get()); |
2522 | 2533 |
2523 } | 2534 } |
2524 return result; | 2535 return result; |
2525 } | 2536 } |
2526 | 2537 |
2527 } // namespace sync_api | 2538 } // namespace sync_api |
OLD | NEW |