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 |