| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 9 #include "chrome/browser/chrome_thread.h" | 9 #include "chrome/browser/chrome_thread.h" |
| 10 #include "chrome/browser/sync/glue/data_type_manager.h" | 10 #include "chrome/browser/sync/glue/data_type_manager.h" |
| 11 #include "chrome/browser/sync/glue/data_type_manager_mock.h" | 11 #include "chrome/browser/sync/glue/data_type_manager_mock.h" |
| 12 #include "chrome/browser/sync/profile_sync_factory_mock.h" | 12 #include "chrome/browser/sync/profile_sync_factory_mock.h" |
| 13 #include "chrome/browser/sync/profile_sync_test_util.h" | 13 #include "chrome/browser/sync/profile_sync_test_util.h" |
| 14 #include "chrome/browser/sync/test_profile_sync_service.h" | 14 #include "chrome/browser/sync/test_profile_sync_service.h" |
| 15 #include "chrome/common/notification_type.h" |
| 15 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
| 16 #include "chrome/test/testing_profile.h" | 17 #include "chrome/test/testing_profile.h" |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 18 | 19 |
| 19 using browser_sync::DataTypeManager; | 20 using browser_sync::DataTypeManager; |
| 20 using browser_sync::DataTypeManagerMock; | 21 using browser_sync::DataTypeManagerMock; |
| 21 using testing::_; | 22 using testing::_; |
| 23 using testing::DoAll; |
| 22 using testing::InvokeArgument; | 24 using testing::InvokeArgument; |
| 23 using testing::Mock; | 25 using testing::Mock; |
| 24 using testing::Return; | 26 using testing::Return; |
| 25 | 27 |
| 26 ACTION_P(InvokeCallback, callback_result) { | 28 ACTION_P(InvokeCallback, callback_result) { |
| 27 arg0->Run(callback_result); | 29 arg0->Run(callback_result); |
| 28 delete arg0; | 30 delete arg0; |
| 29 } | 31 } |
| 30 | 32 |
| 31 // TODO(skrul) This test fails on the mac. See http://crbug.com/33443 | 33 // TODO(skrul) This test fails on the mac. See http://crbug.com/33443 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 MessageLoop message_loop_; | 69 MessageLoop message_loop_; |
| 68 ChromeThread ui_thread_; | 70 ChromeThread ui_thread_; |
| 69 TestingProfile profile_; | 71 TestingProfile profile_; |
| 70 ProfileSyncFactoryMock factory_; | 72 ProfileSyncFactoryMock factory_; |
| 71 scoped_ptr<TestProfileSyncService> service_; | 73 scoped_ptr<TestProfileSyncService> service_; |
| 72 ProfileSyncServiceObserverMock observer_; | 74 ProfileSyncServiceObserverMock observer_; |
| 73 }; | 75 }; |
| 74 | 76 |
| 75 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartFirstTime)) { | 77 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartFirstTime)) { |
| 76 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 78 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 77 EXPECT_CALL(*data_type_manager, Start(_)).Times(0); | 79 EXPECT_CALL(*data_type_manager, Configure(_)).Times(0); |
| 78 | 80 |
| 79 // We've never completed startup. | 81 // We've never completed startup. |
| 80 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 82 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 81 | 83 |
| 82 // Should not actually start, rather just clean things up and wait | 84 // Should not actually start, rather just clean things up and wait |
| 83 // to be enabled. | 85 // to be enabled. |
| 84 EXPECT_CALL(observer_, OnStateChanged()).Times(1); | 86 EXPECT_CALL(observer_, OnStateChanged()).Times(1); |
| 85 service_->Initialize(); | 87 service_->Initialize(); |
| 86 | 88 |
| 87 // Preferences should be back to defaults. | 89 // Preferences should be back to defaults. |
| 88 EXPECT_EQ(0, profile_.GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); | 90 EXPECT_EQ(0, profile_.GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); |
| 89 EXPECT_FALSE(profile_.GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)); | 91 EXPECT_FALSE(profile_.GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)); |
| 90 Mock::VerifyAndClearExpectations(data_type_manager); | 92 Mock::VerifyAndClearExpectations(data_type_manager); |
| 91 | 93 |
| 92 // Then start things up. | 94 // Then start things up. |
| 93 EXPECT_CALL(*data_type_manager, Start(_)). | 95 EXPECT_CALL(*data_type_manager, Configure(_)).Times(1); |
| 94 WillOnce(InvokeCallback(DataTypeManager::OK)); | |
| 95 EXPECT_CALL(*data_type_manager, state()). | 96 EXPECT_CALL(*data_type_manager, state()). |
| 96 WillOnce(Return(DataTypeManager::STARTED)); | 97 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 97 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 98 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 98 EXPECT_CALL(observer_, OnStateChanged()).Times(3); | 99 EXPECT_CALL(observer_, OnStateChanged()).Times(3); |
| 99 service_->EnableForUser(); | 100 service_->EnableForUser(); |
| 100 } | 101 } |
| 101 | 102 |
| 102 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartNormal)) { | 103 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartNormal)) { |
| 103 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 104 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 104 EXPECT_CALL(*data_type_manager, Start(_)). | 105 EXPECT_CALL(*data_type_manager, Configure(_)).Times(1); |
| 105 WillOnce(InvokeCallback(DataTypeManager::OK)); | |
| 106 EXPECT_CALL(*data_type_manager, state()). | 106 EXPECT_CALL(*data_type_manager, state()). |
| 107 WillOnce(Return(DataTypeManager::STARTED)); | 107 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 108 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 108 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 109 | 109 |
| 110 EXPECT_CALL(observer_, OnStateChanged()).Times(2); | 110 EXPECT_CALL(observer_, OnStateChanged()).Times(2); |
| 111 | 111 |
| 112 service_->Initialize(); | 112 service_->Initialize(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartFailure)) { | 115 TEST_F(ProfileSyncServiceStartupTest, SKIP_MACOSX(StartFailure)) { |
| 116 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 116 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 117 EXPECT_CALL(*data_type_manager, Start(_)). | 117 DataTypeManager::ConfigureResult result = |
| 118 WillOnce(InvokeCallback(DataTypeManager::ASSOCIATION_FAILED)); | 118 DataTypeManager::ASSOCIATION_FAILED; |
| 119 EXPECT_CALL(*data_type_manager, Configure(_)). |
| 120 WillOnce(DoAll(Notify(NotificationType::SYNC_CONFIGURE_START), |
| 121 NotifyWithResult(NotificationType::SYNC_CONFIGURE_DONE, |
| 122 &result))); |
| 119 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 123 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 120 EXPECT_CALL(*data_type_manager, state()). | 124 EXPECT_CALL(*data_type_manager, state()). |
| 121 WillOnce(Return(DataTypeManager::STOPPED)); | 125 WillOnce(Return(DataTypeManager::STOPPED)); |
| 122 | 126 |
| 123 EXPECT_CALL(observer_, OnStateChanged()).Times(2); | 127 EXPECT_CALL(observer_, OnStateChanged()).Times(2); |
| 124 | 128 |
| 125 service_->Initialize(); | 129 service_->Initialize(); |
| 126 EXPECT_TRUE(service_->unrecoverable_error_detected()); | 130 EXPECT_TRUE(service_->unrecoverable_error_detected()); |
| 127 } | 131 } |
| 128 | 132 |
| 129 class ProfileSyncServiceStartupBootstrapTest : | 133 class ProfileSyncServiceStartupBootstrapTest |
| 130 public ProfileSyncServiceStartupTest { | 134 : public ProfileSyncServiceStartupTest { |
| 131 public: | 135 public: |
| 132 ProfileSyncServiceStartupBootstrapTest() {} | 136 ProfileSyncServiceStartupBootstrapTest() {} |
| 133 virtual ~ProfileSyncServiceStartupBootstrapTest() {} | 137 virtual ~ProfileSyncServiceStartupBootstrapTest() {} |
| 134 | 138 |
| 135 virtual void SetUp() { | 139 virtual void SetUp() { |
| 136 service_.reset(new TestProfileSyncService(&factory_, &profile_, true)); | 140 service_.reset(new TestProfileSyncService(&factory_, &profile_, true)); |
| 137 service_->AddObserver(&observer_); | 141 service_->AddObserver(&observer_); |
| 138 } | 142 } |
| 139 }; | 143 }; |
| 140 | 144 |
| 141 TEST_F(ProfileSyncServiceStartupBootstrapTest, SKIP_MACOSX(StartFirstTime)) { | 145 TEST_F(ProfileSyncServiceStartupBootstrapTest, SKIP_MACOSX(StartFirstTime)) { |
| 142 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 146 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 143 EXPECT_CALL(*data_type_manager, Start(_)). | 147 EXPECT_CALL(*data_type_manager, Configure(_)).Times(1); |
| 144 WillOnce(InvokeCallback(DataTypeManager::OK)); | |
| 145 EXPECT_CALL(*data_type_manager, state()). | 148 EXPECT_CALL(*data_type_manager, state()). |
| 146 WillOnce(Return(DataTypeManager::STARTED)); | 149 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 147 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 150 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 148 EXPECT_CALL(observer_, OnStateChanged()).Times(3); | 151 EXPECT_CALL(observer_, OnStateChanged()).Times(3); |
| 149 | 152 |
| 150 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 153 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 151 // Will start sync even though setup hasn't been completed (since | 154 // Will start sync even though setup hasn't been completed (since |
| 152 // setup is bypassed when bootstrapping is enabled). | 155 // setup is bypassed when bootstrapping is enabled). |
| 153 service_->Initialize(); | 156 service_->Initialize(); |
| 154 } | 157 } |
| 155 | 158 |
| 156 TEST_F(ProfileSyncServiceStartupBootstrapTest, SKIP_MACOSX(StartUserDisabled)) { | 159 TEST_F(ProfileSyncServiceStartupBootstrapTest, SKIP_MACOSX(StartUserDisabled)) { |
| 157 EXPECT_CALL(observer_, OnStateChanged()).Times(1); | 160 EXPECT_CALL(observer_, OnStateChanged()).Times(1); |
| 158 | 161 |
| 159 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 162 profile_.GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 160 profile_.GetPrefs()->SetBoolean(prefs::kSyncBootstrappedAuth, true); | 163 profile_.GetPrefs()->SetBoolean(prefs::kSyncBootstrappedAuth, true); |
| 161 // Will not start sync because it is currently disabled, but was bootstrapped | 164 // Will not start sync because it is currently disabled, but was bootstrapped |
| 162 // before. | 165 // before. |
| 163 service_->Initialize(); | 166 service_->Initialize(); |
| 164 } | 167 } |
| OLD | NEW |