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 "components/browser_sync/profile_sync_service.h" | 5 #include "components/browser_sync/profile_sync_service.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 } | 121 } |
122 | 122 |
123 private: | 123 private: |
124 std::vector<bool>* delete_dir_param_; | 124 std::vector<bool>* delete_dir_param_; |
125 }; | 125 }; |
126 | 126 |
127 // FakeSyncEngine that calls an external callback when ClearServerData is | 127 // FakeSyncEngine that calls an external callback when ClearServerData is |
128 // called. | 128 // called. |
129 class SyncEngineCaptureClearServerData : public FakeSyncEngine { | 129 class SyncEngineCaptureClearServerData : public FakeSyncEngine { |
130 public: | 130 public: |
131 using ClearServerDataCalled = | 131 using ClearServerDataCalled = base::Callback<void(const base::Closure&)>; |
132 base::Callback<void(const syncer::SyncManager::ClearServerDataCallback&)>; | |
133 explicit SyncEngineCaptureClearServerData( | 132 explicit SyncEngineCaptureClearServerData( |
134 const ClearServerDataCalled& clear_server_data_called) | 133 const ClearServerDataCalled& clear_server_data_called) |
135 : clear_server_data_called_(clear_server_data_called) {} | 134 : clear_server_data_called_(clear_server_data_called) {} |
136 | 135 |
137 void ClearServerData( | 136 void ClearServerData(const base::Closure& callback) override { |
138 const syncer::SyncManager::ClearServerDataCallback& callback) override { | |
139 clear_server_data_called_.Run(callback); | 137 clear_server_data_called_.Run(callback); |
140 } | 138 } |
141 | 139 |
142 private: | 140 private: |
143 ClearServerDataCalled clear_server_data_called_; | 141 ClearServerDataCalled clear_server_data_called_; |
144 }; | 142 }; |
145 | 143 |
146 ACTION(ReturnNewFakeSyncEngine) { | 144 ACTION(ReturnNewFakeSyncEngine) { |
147 return new FakeSyncEngine(); | 145 return new FakeSyncEngine(); |
148 } | 146 } |
149 | 147 |
150 ACTION(ReturnNewSyncEngineNoReturn) { | 148 ACTION(ReturnNewSyncEngineNoReturn) { |
151 return new SyncEngineNoReturn(); | 149 return new SyncEngineNoReturn(); |
152 } | 150 } |
153 | 151 |
154 ACTION_P(ReturnNewMockHostCollectDeleteDirParam, delete_dir_param) { | 152 ACTION_P(ReturnNewMockHostCollectDeleteDirParam, delete_dir_param) { |
155 return new FakeSyncEngineCollectDeleteDirParam(delete_dir_param); | 153 return new FakeSyncEngineCollectDeleteDirParam(delete_dir_param); |
156 } | 154 } |
157 | 155 |
158 void OnClearServerDataCalled( | 156 void OnClearServerDataCalled(base::Closure* captured_callback, |
159 syncer::SyncManager::ClearServerDataCallback* captured_callback, | 157 const base::Closure& callback) { |
160 const syncer::SyncManager::ClearServerDataCallback& callback) { | |
161 *captured_callback = callback; | 158 *captured_callback = callback; |
162 } | 159 } |
163 | 160 |
164 ACTION_P(ReturnNewMockHostCaptureClearServerData, captured_callback) { | 161 ACTION_P(ReturnNewMockHostCaptureClearServerData, captured_callback) { |
165 return new SyncEngineCaptureClearServerData(base::Bind( | 162 return new SyncEngineCaptureClearServerData(base::Bind( |
166 &OnClearServerDataCalled, base::Unretained(captured_callback))); | 163 &OnClearServerDataCalled, base::Unretained(captured_callback))); |
167 } | 164 } |
168 | 165 |
169 void DoNothing(DataTypeController::ConfigureResult ignored1, | 166 void DoNothing(DataTypeController::ConfigureResult ignored1, |
170 const SyncMergeResult& ignored2, | 167 const SyncMergeResult& ignored2, |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 void ExpectSyncEngineCreationCollectDeleteDir( | 295 void ExpectSyncEngineCreationCollectDeleteDir( |
299 int times, | 296 int times, |
300 std::vector<bool>* delete_dir_param) { | 297 std::vector<bool>* delete_dir_param) { |
301 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) | 298 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) |
302 .Times(times) | 299 .Times(times) |
303 .WillRepeatedly( | 300 .WillRepeatedly( |
304 ReturnNewMockHostCollectDeleteDirParam(delete_dir_param)); | 301 ReturnNewMockHostCollectDeleteDirParam(delete_dir_param)); |
305 } | 302 } |
306 | 303 |
307 void ExpectSyncEngineCreationCaptureClearServerData( | 304 void ExpectSyncEngineCreationCaptureClearServerData( |
308 syncer::SyncManager::ClearServerDataCallback* captured_callback) { | 305 base::Closure* captured_callback) { |
309 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) | 306 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) |
310 .Times(1) | 307 .Times(1) |
311 .WillOnce(ReturnNewMockHostCaptureClearServerData(captured_callback)); | 308 .WillOnce(ReturnNewMockHostCaptureClearServerData(captured_callback)); |
312 } | 309 } |
313 | 310 |
314 void PrepareDelayedInitSyncEngine() { | 311 void PrepareDelayedInitSyncEngine() { |
315 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) | 312 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) |
316 .WillOnce(ReturnNewSyncEngineNoReturn()); | 313 .WillOnce(ReturnNewSyncEngineNoReturn()); |
317 } | 314 } |
318 | 315 |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 | 695 |
699 // Verify that OnLocalSetPassphraseEncryption triggers catch up configure sync | 696 // Verify that OnLocalSetPassphraseEncryption triggers catch up configure sync |
700 // cycle, calls ClearServerData, shuts down and restarts sync. | 697 // cycle, calls ClearServerData, shuts down and restarts sync. |
701 TEST_F(ProfileSyncServiceTest, OnLocalSetPassphraseEncryption) { | 698 TEST_F(ProfileSyncServiceTest, OnLocalSetPassphraseEncryption) { |
702 base::test::ScopedFeatureList scoped_feature_list; | 699 base::test::ScopedFeatureList scoped_feature_list; |
703 scoped_feature_list.InitAndEnableFeature( | 700 scoped_feature_list.InitAndEnableFeature( |
704 switches::kSyncClearDataOnPassphraseEncryption); | 701 switches::kSyncClearDataOnPassphraseEncryption); |
705 IssueTestTokens(); | 702 IssueTestTokens(); |
706 CreateService(ProfileSyncService::AUTO_START); | 703 CreateService(ProfileSyncService::AUTO_START); |
707 | 704 |
708 syncer::SyncManager::ClearServerDataCallback captured_callback; | 705 base::Closure captured_callback; |
709 syncer::ConfigureReason configure_reason = syncer::CONFIGURE_REASON_UNKNOWN; | 706 syncer::ConfigureReason configure_reason = syncer::CONFIGURE_REASON_UNKNOWN; |
710 | 707 |
711 // Initialize sync, ensure that both DataTypeManager and SyncEngine are | 708 // Initialize sync, ensure that both DataTypeManager and SyncEngine are |
712 // initialized and DTM::Configure is called with | 709 // initialized and DTM::Configure is called with |
713 // CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE. | 710 // CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE. |
714 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); | 711 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); |
715 ExpectDataTypeManagerCreation( | 712 ExpectDataTypeManagerCreation( |
716 1, GetRecordingConfigureCalledCallback(&configure_reason)); | 713 1, GetRecordingConfigureCalledCallback(&configure_reason)); |
717 InitializeForNthSync(); | 714 InitializeForNthSync(); |
718 EXPECT_TRUE(service()->IsSyncActive()); | 715 EXPECT_TRUE(service()->IsSyncActive()); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 | 768 |
772 // Simulate user entering encryption passphrase. Ensure Configure was called | 769 // Simulate user entering encryption passphrase. Ensure Configure was called |
773 // but don't let it continue. | 770 // but don't let it continue. |
774 const syncer::SyncEncryptionHandler::NigoriState nigori_state; | 771 const syncer::SyncEncryptionHandler::NigoriState nigori_state; |
775 service()->GetEncryptionObserverForTest()->OnLocalSetPassphraseEncryption( | 772 service()->GetEncryptionObserverForTest()->OnLocalSetPassphraseEncryption( |
776 nigori_state); | 773 nigori_state); |
777 EXPECT_EQ(syncer::CONFIGURE_REASON_CATCH_UP, configure_reason); | 774 EXPECT_EQ(syncer::CONFIGURE_REASON_CATCH_UP, configure_reason); |
778 | 775 |
779 // Simulate browser restart. First configuration is a regular one. | 776 // Simulate browser restart. First configuration is a regular one. |
780 service()->Shutdown(); | 777 service()->Shutdown(); |
781 syncer::SyncManager::ClearServerDataCallback captured_callback; | 778 base::Closure captured_callback; |
782 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); | 779 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); |
783 ExpectDataTypeManagerCreation( | 780 ExpectDataTypeManagerCreation( |
784 1, GetRecordingConfigureCalledCallback(&configure_reason)); | 781 1, GetRecordingConfigureCalledCallback(&configure_reason)); |
785 service()->RequestStart(); | 782 service()->RequestStart(); |
786 testing::Mock::VerifyAndClearExpectations(component_factory()); | 783 testing::Mock::VerifyAndClearExpectations(component_factory()); |
787 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, configure_reason); | 784 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, configure_reason); |
788 EXPECT_TRUE(captured_callback.is_null()); | 785 EXPECT_TRUE(captured_callback.is_null()); |
789 | 786 |
790 // Simulate configure successful. This time it should be catch up. | 787 // Simulate configure successful. This time it should be catch up. |
791 service()->OnConfigureDone(result); | 788 service()->OnConfigureDone(result); |
(...skipping 12 matching lines...) Expand all Loading... |
804 1, GetRecordingConfigureCalledCallback(&configure_reason)); | 801 1, GetRecordingConfigureCalledCallback(&configure_reason)); |
805 captured_callback.Run(); | 802 captured_callback.Run(); |
806 testing::Mock::VerifyAndClearExpectations(component_factory()); | 803 testing::Mock::VerifyAndClearExpectations(component_factory()); |
807 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, configure_reason); | 804 EXPECT_EQ(syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE, configure_reason); |
808 } | 805 } |
809 | 806 |
810 // Verify that if after OnLocalSetPassphraseEncryption ClearServerData gets | 807 // Verify that if after OnLocalSetPassphraseEncryption ClearServerData gets |
811 // interrupted, transition again from catch up sync cycle after browser restart. | 808 // interrupted, transition again from catch up sync cycle after browser restart. |
812 TEST_F(ProfileSyncServiceTest, | 809 TEST_F(ProfileSyncServiceTest, |
813 OnLocalSetPassphraseEncryption_RestartDuringClearServerData) { | 810 OnLocalSetPassphraseEncryption_RestartDuringClearServerData) { |
814 syncer::SyncManager::ClearServerDataCallback captured_callback; | 811 base::Closure captured_callback; |
815 syncer::ConfigureReason configure_reason = syncer::CONFIGURE_REASON_UNKNOWN; | 812 syncer::ConfigureReason configure_reason = syncer::CONFIGURE_REASON_UNKNOWN; |
816 base::test::ScopedFeatureList scoped_feature_list; | 813 base::test::ScopedFeatureList scoped_feature_list; |
817 scoped_feature_list.InitAndEnableFeature( | 814 scoped_feature_list.InitAndEnableFeature( |
818 switches::kSyncClearDataOnPassphraseEncryption); | 815 switches::kSyncClearDataOnPassphraseEncryption); |
819 IssueTestTokens(); | 816 IssueTestTokens(); |
820 CreateService(ProfileSyncService::AUTO_START); | 817 CreateService(ProfileSyncService::AUTO_START); |
821 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); | 818 ExpectSyncEngineCreationCaptureClearServerData(&captured_callback); |
822 ExpectDataTypeManagerCreation(1, GetDefaultConfigureCalledCallback()); | 819 ExpectDataTypeManagerCreation(1, GetDefaultConfigureCalledCallback()); |
823 InitializeForNthSync(); | 820 InitializeForNthSync(); |
824 testing::Mock::VerifyAndClearExpectations(component_factory()); | 821 testing::Mock::VerifyAndClearExpectations(component_factory()); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 // Progress the controller to RUNNING first, which is how the service | 958 // Progress the controller to RUNNING first, which is how the service |
962 // determines whether a type is enabled. | 959 // determines whether a type is enabled. |
963 controller->StartAssociating(base::Bind(&DoNothing)); | 960 controller->StartAssociating(base::Bind(&DoNothing)); |
964 controller->FinishStart(DataTypeController::OK_FIRST_RUN); | 961 controller->FinishStart(DataTypeController::OK_FIRST_RUN); |
965 service()->RegisterDataTypeController(std::move(controller)); | 962 service()->RegisterDataTypeController(std::move(controller)); |
966 EXPECT_NE(nullptr, service()->GetOpenTabsUIDelegate()); | 963 EXPECT_NE(nullptr, service()->GetOpenTabsUIDelegate()); |
967 } | 964 } |
968 | 965 |
969 } // namespace | 966 } // namespace |
970 } // namespace browser_sync | 967 } // namespace browser_sync |
OLD | NEW |