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/sync/driver/sync_prefs.h" | 5 #include "components/sync/driver/sync_prefs.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 | 10 |
11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
13 #include "base/time/time.h" | 13 #include "base/time/time.h" |
14 #include "components/pref_registry/testing_pref_service_syncable.h" | 14 #include "components/pref_registry/testing_pref_service_syncable.h" |
15 #include "components/prefs/pref_notifier_impl.h" | 15 #include "components/prefs/pref_notifier_impl.h" |
16 #include "components/prefs/pref_value_store.h" | 16 #include "components/prefs/pref_value_store.h" |
17 #include "components/prefs/testing_pref_service.h" | 17 #include "components/prefs/testing_pref_service.h" |
18 #include "components/sync/base/model_type.h" | 18 #include "components/sync/base/model_type.h" |
19 #include "components/sync/driver/pref_names.h" | 19 #include "components/sync/driver/pref_names.h" |
20 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
22 | 22 |
23 namespace syncer { | 23 namespace sync_driver { |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
27 using ::testing::InSequence; | 27 using ::testing::InSequence; |
28 using ::testing::StrictMock; | 28 using ::testing::StrictMock; |
29 | 29 |
30 class SyncPrefsTest : public testing::Test { | 30 class SyncPrefsTest : public testing::Test { |
31 protected: | 31 protected: |
32 void SetUp() override { | 32 void SetUp() override { |
33 SyncPrefs::RegisterProfilePrefs(pref_service_.registry()); | 33 SyncPrefs::RegisterProfilePrefs(pref_service_.registry()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 EXPECT_TRUE(sync_prefs.GetEncryptionBootstrapToken().empty()); | 66 EXPECT_TRUE(sync_prefs.GetEncryptionBootstrapToken().empty()); |
67 sync_prefs.SetEncryptionBootstrapToken("token"); | 67 sync_prefs.SetEncryptionBootstrapToken("token"); |
68 EXPECT_EQ("token", sync_prefs.GetEncryptionBootstrapToken()); | 68 EXPECT_EQ("token", sync_prefs.GetEncryptionBootstrapToken()); |
69 } | 69 } |
70 | 70 |
71 TEST_F(SyncPrefsTest, DefaultTypes) { | 71 TEST_F(SyncPrefsTest, DefaultTypes) { |
72 SyncPrefs sync_prefs(&pref_service_); | 72 SyncPrefs sync_prefs(&pref_service_); |
73 sync_prefs.SetKeepEverythingSynced(false); | 73 sync_prefs.SetKeepEverythingSynced(false); |
74 | 74 |
75 // Only bookmarks and device info are enabled by default. | 75 // Only bookmarks and device info are enabled by default. |
76 ModelTypeSet expected(BOOKMARKS, DEVICE_INFO); | 76 syncer::ModelTypeSet expected(syncer::BOOKMARKS, syncer::DEVICE_INFO); |
77 ModelTypeSet preferred_types = sync_prefs.GetPreferredDataTypes(UserTypes()); | 77 syncer::ModelTypeSet preferred_types = |
| 78 sync_prefs.GetPreferredDataTypes(syncer::UserTypes()); |
78 EXPECT_EQ(expected, preferred_types); | 79 EXPECT_EQ(expected, preferred_types); |
79 | 80 |
80 // Simulate an upgrade to delete directives + proxy tabs support. None of the | 81 // Simulate an upgrade to delete directives + proxy tabs support. None of the |
81 // new types or their pref group types should be registering, ensuring they | 82 // new types or their pref group types should be registering, ensuring they |
82 // don't have pref values. | 83 // don't have pref values. |
83 ModelTypeSet registered_types = UserTypes(); | 84 syncer::ModelTypeSet registered_types = syncer::UserTypes(); |
84 registered_types.Remove(PROXY_TABS); | 85 registered_types.Remove(syncer::PROXY_TABS); |
85 registered_types.Remove(TYPED_URLS); | 86 registered_types.Remove(syncer::TYPED_URLS); |
86 registered_types.Remove(SESSIONS); | 87 registered_types.Remove(syncer::SESSIONS); |
87 registered_types.Remove(HISTORY_DELETE_DIRECTIVES); | 88 registered_types.Remove(syncer::HISTORY_DELETE_DIRECTIVES); |
88 | 89 |
89 // Enable all other types. | 90 // Enable all other types. |
90 sync_prefs.SetPreferredDataTypes(registered_types, registered_types); | 91 sync_prefs.SetPreferredDataTypes(registered_types, registered_types); |
91 | 92 |
92 // Manually enable typed urls (to simulate the old world). | 93 // Manually enable typed urls (to simulate the old world). |
93 pref_service_.SetBoolean(prefs::kSyncTypedUrls, true); | 94 pref_service_.SetBoolean(prefs::kSyncTypedUrls, true); |
94 | 95 |
95 // Proxy tabs should not be enabled (since sessions wasn't), but history | 96 // Proxy tabs should not be enabled (since sessions wasn't), but history |
96 // delete directives should (since typed urls was). | 97 // delete directives should (since typed urls was). |
97 preferred_types = sync_prefs.GetPreferredDataTypes(UserTypes()); | 98 preferred_types = sync_prefs.GetPreferredDataTypes(syncer::UserTypes()); |
98 EXPECT_FALSE(preferred_types.Has(PROXY_TABS)); | 99 EXPECT_FALSE(preferred_types.Has(syncer::PROXY_TABS)); |
99 EXPECT_TRUE(preferred_types.Has(HISTORY_DELETE_DIRECTIVES)); | 100 EXPECT_TRUE(preferred_types.Has(syncer::HISTORY_DELETE_DIRECTIVES)); |
100 | 101 |
101 // Now manually enable sessions, which should result in proxy tabs also being | 102 // Now manually enable sessions, which should result in proxy tabs also being |
102 // enabled. Also, manually disable typed urls, which should mean that history | 103 // enabled. Also, manually disable typed urls, which should mean that history |
103 // delete directives are not enabled. | 104 // delete directives are not enabled. |
104 pref_service_.SetBoolean(prefs::kSyncTypedUrls, false); | 105 pref_service_.SetBoolean(prefs::kSyncTypedUrls, false); |
105 pref_service_.SetBoolean(prefs::kSyncSessions, true); | 106 pref_service_.SetBoolean(prefs::kSyncSessions, true); |
106 preferred_types = sync_prefs.GetPreferredDataTypes(UserTypes()); | 107 preferred_types = sync_prefs.GetPreferredDataTypes(syncer::UserTypes()); |
107 EXPECT_TRUE(preferred_types.Has(PROXY_TABS)); | 108 EXPECT_TRUE(preferred_types.Has(syncer::PROXY_TABS)); |
108 EXPECT_FALSE(preferred_types.Has(HISTORY_DELETE_DIRECTIVES)); | 109 EXPECT_FALSE(preferred_types.Has(syncer::HISTORY_DELETE_DIRECTIVES)); |
109 } | 110 } |
110 | 111 |
111 TEST_F(SyncPrefsTest, PreferredTypesKeepEverythingSynced) { | 112 TEST_F(SyncPrefsTest, PreferredTypesKeepEverythingSynced) { |
112 SyncPrefs sync_prefs(&pref_service_); | 113 SyncPrefs sync_prefs(&pref_service_); |
113 | 114 |
114 EXPECT_TRUE(sync_prefs.HasKeepEverythingSynced()); | 115 EXPECT_TRUE(sync_prefs.HasKeepEverythingSynced()); |
115 | 116 |
116 const ModelTypeSet user_types = UserTypes(); | 117 const syncer::ModelTypeSet user_types = syncer::UserTypes(); |
117 EXPECT_EQ(user_types, sync_prefs.GetPreferredDataTypes(user_types)); | 118 EXPECT_EQ(user_types, sync_prefs.GetPreferredDataTypes(user_types)); |
118 const ModelTypeSet user_visible_types = UserSelectableTypes(); | 119 const syncer::ModelTypeSet user_visible_types = syncer::UserSelectableTypes(); |
119 for (ModelTypeSet::Iterator it = user_visible_types.First(); it.Good(); | 120 for (syncer::ModelTypeSet::Iterator it = user_visible_types.First(); |
120 it.Inc()) { | 121 it.Good(); it.Inc()) { |
121 ModelTypeSet preferred_types; | 122 syncer::ModelTypeSet preferred_types; |
122 preferred_types.Put(it.Get()); | 123 preferred_types.Put(it.Get()); |
123 sync_prefs.SetPreferredDataTypes(user_types, preferred_types); | 124 sync_prefs.SetPreferredDataTypes(user_types, preferred_types); |
124 EXPECT_EQ(user_types, sync_prefs.GetPreferredDataTypes(user_types)); | 125 EXPECT_EQ(user_types, sync_prefs.GetPreferredDataTypes(user_types)); |
125 } | 126 } |
126 } | 127 } |
127 | 128 |
128 TEST_F(SyncPrefsTest, PreferredTypesNotKeepEverythingSynced) { | 129 TEST_F(SyncPrefsTest, PreferredTypesNotKeepEverythingSynced) { |
129 SyncPrefs sync_prefs(&pref_service_); | 130 SyncPrefs sync_prefs(&pref_service_); |
130 | 131 |
131 sync_prefs.SetKeepEverythingSynced(false); | 132 sync_prefs.SetKeepEverythingSynced(false); |
132 | 133 |
133 const ModelTypeSet user_types = UserTypes(); | 134 const syncer::ModelTypeSet user_types = syncer::UserTypes(); |
134 EXPECT_NE(user_types, sync_prefs.GetPreferredDataTypes(user_types)); | 135 EXPECT_NE(user_types, sync_prefs.GetPreferredDataTypes(user_types)); |
135 const ModelTypeSet user_visible_types = UserSelectableTypes(); | 136 const syncer::ModelTypeSet user_visible_types = syncer::UserSelectableTypes(); |
136 for (ModelTypeSet::Iterator it = user_visible_types.First(); it.Good(); | 137 for (syncer::ModelTypeSet::Iterator it = user_visible_types.First(); |
137 it.Inc()) { | 138 it.Good(); it.Inc()) { |
138 ModelTypeSet preferred_types; | 139 syncer::ModelTypeSet preferred_types; |
139 preferred_types.Put(it.Get()); | 140 preferred_types.Put(it.Get()); |
140 ModelTypeSet expected_preferred_types(preferred_types); | 141 syncer::ModelTypeSet expected_preferred_types(preferred_types); |
141 if (it.Get() == AUTOFILL) { | 142 if (it.Get() == syncer::AUTOFILL) { |
142 expected_preferred_types.Put(AUTOFILL_PROFILE); | 143 expected_preferred_types.Put(syncer::AUTOFILL_PROFILE); |
143 expected_preferred_types.Put(AUTOFILL_WALLET_DATA); | 144 expected_preferred_types.Put(syncer::AUTOFILL_WALLET_DATA); |
144 expected_preferred_types.Put(AUTOFILL_WALLET_METADATA); | 145 expected_preferred_types.Put(syncer::AUTOFILL_WALLET_METADATA); |
145 } | 146 } |
146 if (it.Get() == PREFERENCES) { | 147 if (it.Get() == syncer::PREFERENCES) { |
147 expected_preferred_types.Put(DICTIONARY); | 148 expected_preferred_types.Put(syncer::DICTIONARY); |
148 expected_preferred_types.Put(PRIORITY_PREFERENCES); | 149 expected_preferred_types.Put(syncer::PRIORITY_PREFERENCES); |
149 expected_preferred_types.Put(SEARCH_ENGINES); | 150 expected_preferred_types.Put(syncer::SEARCH_ENGINES); |
150 } | 151 } |
151 if (it.Get() == APPS) { | 152 if (it.Get() == syncer::APPS) { |
152 expected_preferred_types.Put(APP_LIST); | 153 expected_preferred_types.Put(syncer::APP_LIST); |
153 expected_preferred_types.Put(APP_NOTIFICATIONS); | 154 expected_preferred_types.Put(syncer::APP_NOTIFICATIONS); |
154 expected_preferred_types.Put(APP_SETTINGS); | 155 expected_preferred_types.Put(syncer::APP_SETTINGS); |
155 expected_preferred_types.Put(ARC_PACKAGE); | 156 expected_preferred_types.Put(syncer::ARC_PACKAGE); |
156 expected_preferred_types.Put(READING_LIST); | 157 expected_preferred_types.Put(syncer::READING_LIST); |
157 } | 158 } |
158 if (it.Get() == EXTENSIONS) { | 159 if (it.Get() == syncer::EXTENSIONS) { |
159 expected_preferred_types.Put(EXTENSION_SETTINGS); | 160 expected_preferred_types.Put(syncer::EXTENSION_SETTINGS); |
160 } | 161 } |
161 if (it.Get() == TYPED_URLS) { | 162 if (it.Get() == syncer::TYPED_URLS) { |
162 expected_preferred_types.Put(HISTORY_DELETE_DIRECTIVES); | 163 expected_preferred_types.Put(syncer::HISTORY_DELETE_DIRECTIVES); |
163 expected_preferred_types.Put(SESSIONS); | 164 expected_preferred_types.Put(syncer::SESSIONS); |
164 expected_preferred_types.Put(FAVICON_IMAGES); | 165 expected_preferred_types.Put(syncer::FAVICON_IMAGES); |
165 expected_preferred_types.Put(FAVICON_TRACKING); | 166 expected_preferred_types.Put(syncer::FAVICON_TRACKING); |
166 } | 167 } |
167 if (it.Get() == PROXY_TABS) { | 168 if (it.Get() == syncer::PROXY_TABS) { |
168 expected_preferred_types.Put(SESSIONS); | 169 expected_preferred_types.Put(syncer::SESSIONS); |
169 expected_preferred_types.Put(FAVICON_IMAGES); | 170 expected_preferred_types.Put(syncer::FAVICON_IMAGES); |
170 expected_preferred_types.Put(FAVICON_TRACKING); | 171 expected_preferred_types.Put(syncer::FAVICON_TRACKING); |
171 } | 172 } |
172 | 173 |
173 // Device info is always preferred. | 174 // Device info is always preferred. |
174 expected_preferred_types.Put(DEVICE_INFO); | 175 expected_preferred_types.Put(syncer::DEVICE_INFO); |
175 | 176 |
176 sync_prefs.SetPreferredDataTypes(user_types, preferred_types); | 177 sync_prefs.SetPreferredDataTypes(user_types, preferred_types); |
177 EXPECT_EQ(expected_preferred_types, | 178 EXPECT_EQ(expected_preferred_types, |
178 sync_prefs.GetPreferredDataTypes(user_types)); | 179 sync_prefs.GetPreferredDataTypes(user_types)); |
179 } | 180 } |
180 } | 181 } |
181 | 182 |
182 class MockSyncPrefObserver : public SyncPrefObserver { | 183 class MockSyncPrefObserver : public SyncPrefObserver { |
183 public: | 184 public: |
184 MOCK_METHOD1(OnSyncManagedPrefChange, void(bool)); | 185 MOCK_METHOD1(OnSyncManagedPrefChange, void(bool)); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 sync_prefs.ClearPreferences(); | 223 sync_prefs.ClearPreferences(); |
223 | 224 |
224 EXPECT_FALSE(sync_prefs.IsFirstSetupComplete()); | 225 EXPECT_FALSE(sync_prefs.IsFirstSetupComplete()); |
225 EXPECT_EQ(base::Time(), sync_prefs.GetLastSyncedTime()); | 226 EXPECT_EQ(base::Time(), sync_prefs.GetLastSyncedTime()); |
226 EXPECT_TRUE(sync_prefs.GetEncryptionBootstrapToken().empty()); | 227 EXPECT_TRUE(sync_prefs.GetEncryptionBootstrapToken().empty()); |
227 } | 228 } |
228 | 229 |
229 // Device info should always be enabled. | 230 // Device info should always be enabled. |
230 TEST_F(SyncPrefsTest, DeviceInfo) { | 231 TEST_F(SyncPrefsTest, DeviceInfo) { |
231 SyncPrefs sync_prefs(&pref_service_); | 232 SyncPrefs sync_prefs(&pref_service_); |
232 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO)); | 233 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(syncer::UserTypes()) |
| 234 .Has(syncer::DEVICE_INFO)); |
233 sync_prefs.SetKeepEverythingSynced(true); | 235 sync_prefs.SetKeepEverythingSynced(true); |
234 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO)); | 236 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(syncer::UserTypes()) |
| 237 .Has(syncer::DEVICE_INFO)); |
235 sync_prefs.SetKeepEverythingSynced(false); | 238 sync_prefs.SetKeepEverythingSynced(false); |
236 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO)); | 239 EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(syncer::UserTypes()) |
| 240 .Has(syncer::DEVICE_INFO)); |
237 } | 241 } |
238 | 242 |
239 // Verify that invalidation versions are persisted and loaded correctly. | 243 // Verify that invalidation versions are persisted and loaded correctly. |
240 TEST_F(SyncPrefsTest, InvalidationVersions) { | 244 TEST_F(SyncPrefsTest, InvalidationVersions) { |
241 std::map<ModelType, int64_t> versions; | 245 std::map<syncer::ModelType, int64_t> versions; |
242 versions[BOOKMARKS] = 10; | 246 versions[syncer::BOOKMARKS] = 10; |
243 versions[SESSIONS] = 20; | 247 versions[syncer::SESSIONS] = 20; |
244 versions[PREFERENCES] = 30; | 248 versions[syncer::PREFERENCES] = 30; |
245 | 249 |
246 SyncPrefs sync_prefs(&pref_service_); | 250 SyncPrefs sync_prefs(&pref_service_); |
247 sync_prefs.UpdateInvalidationVersions(versions); | 251 sync_prefs.UpdateInvalidationVersions(versions); |
248 | 252 |
249 std::map<ModelType, int64_t> versions2; | 253 std::map<syncer::ModelType, int64_t> versions2; |
250 sync_prefs.GetInvalidationVersions(&versions2); | 254 sync_prefs.GetInvalidationVersions(&versions2); |
251 | 255 |
252 EXPECT_EQ(versions.size(), versions2.size()); | 256 EXPECT_EQ(versions.size(), versions2.size()); |
253 for (auto map_iter : versions2) { | 257 for (auto map_iter : versions2) { |
254 EXPECT_EQ(versions[map_iter.first], map_iter.second); | 258 EXPECT_EQ(versions[map_iter.first], map_iter.second); |
255 } | 259 } |
256 } | 260 } |
257 | 261 |
258 } // namespace | 262 } // namespace |
259 | 263 |
260 } // namespace syncer | 264 } // namespace sync_driver |
OLD | NEW |