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

Side by Side Diff: chrome/browser/sync/profile_sync_service_startup_unittest.cc

Issue 1128012: Rewrite DTM to support dynamic data type configuration (Closed)
Patch Set: Address review comments and fix a leak. Created 10 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
« no previous file with comments | « chrome/browser/sync/profile_sync_service.cc ('k') | chrome/common/notification_type.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.cc ('k') | chrome/common/notification_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698