Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/files/scoped_temp_dir.h" | 5 #include "base/files/scoped_temp_dir.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/strings/string_split.h" | 7 #include "base/strings/string_split.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 class DefaultSearchManagerTest : public testing::Test { | 138 class DefaultSearchManagerTest : public testing::Test { |
| 139 public: | 139 public: |
| 140 DefaultSearchManagerTest() {}; | 140 DefaultSearchManagerTest() {}; |
| 141 | 141 |
| 142 virtual void SetUp() OVERRIDE { | 142 virtual void SetUp() OVERRIDE { |
| 143 pref_service_.reset(new TestingPrefServiceSyncable); | 143 pref_service_.reset(new TestingPrefServiceSyncable); |
| 144 DefaultSearchManager::RegisterProfilePrefs(pref_service_->registry()); | 144 DefaultSearchManager::RegisterProfilePrefs(pref_service_->registry()); |
| 145 TemplateURLPrepopulateData::RegisterProfilePrefs(pref_service_->registry()); | 145 TemplateURLPrepopulateData::RegisterProfilePrefs(pref_service_->registry()); |
| 146 } | 146 } |
| 147 | 147 |
| 148 TestingPrefServiceSyncable* pref_service() { return pref_service_.get(); } | 148 TestingPrefServiceSyncable* pref_service() { return pref_service_.get(); } |
|
erikwright (departed)
2014/05/02 16:35:56
TODO: Add observer tests.
| |
| 149 | 149 |
| 150 private: | 150 private: |
| 151 scoped_ptr<TestingPrefServiceSyncable> pref_service_; | 151 scoped_ptr<TestingPrefServiceSyncable> pref_service_; |
| 152 | 152 |
| 153 DISALLOW_COPY_AND_ASSIGN(DefaultSearchManagerTest); | 153 DISALLOW_COPY_AND_ASSIGN(DefaultSearchManagerTest); |
| 154 }; | 154 }; |
| 155 | 155 |
| 156 // Test that a TemplateURLData object is properly written and read from Prefs. | |
| 157 TEST_F(DefaultSearchManagerTest, ReadAndWritePref) { | |
| 158 DefaultSearchManager manager(pref_service(), | |
| 159 DefaultSearchManager::ObserverCallback()); | |
| 160 TemplateURLData data; | |
| 161 data.short_name = base::UTF8ToUTF16("name1"); | |
| 162 data.SetKeyword(base::UTF8ToUTF16("key1")); | |
| 163 data.SetURL("http://foo1/{searchTerms}"); | |
| 164 data.suggestions_url = "http://sugg1"; | |
| 165 data.alternate_urls.push_back("http://foo1/alt"); | |
| 166 data.favicon_url = GURL("http://icon1"); | |
| 167 data.safe_for_autoreplace = true; | |
| 168 data.show_in_default_list = true; | |
| 169 base::SplitString("UTF-8;UTF-16", ';', &data.input_encodings); | |
| 170 data.date_created = base::Time(); | |
| 171 data.last_modified = base::Time(); | |
| 172 | |
| 173 manager.SetUserSelectedDefaultSearchEngine(data); | |
| 174 TemplateURLData* read_data = manager.GetDefaultSearchEngine(NULL); | |
| 175 ExpectSimilar(&data, read_data); | |
| 176 } | |
| 177 | |
| 156 // Test DefaultSearchmanager handles user-selected DSEs correctly. | 178 // Test DefaultSearchmanager handles user-selected DSEs correctly. |
| 157 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { | 179 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByUserPref) { |
| 158 size_t default_search_index = 0; | 180 size_t default_search_index = 0; |
| 159 DefaultSearchManager manager(pref_service()); | 181 DefaultSearchManager manager(pref_service(), |
| 182 DefaultSearchManager::ObserverCallback()); | |
| 160 ScopedVector<TemplateURLData> prepopulated_urls = | 183 ScopedVector<TemplateURLData> prepopulated_urls = |
| 161 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), | 184 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), |
| 162 &default_search_index); | 185 &default_search_index); |
| 186 DefaultSearchManager::Source source = DefaultSearchManager::FROM_POLICY; | |
| 163 // If no user pref is set, we should use the pre-populated values. | 187 // If no user pref is set, we should use the pre-populated values. |
| 164 ExpectSimilar(prepopulated_urls[default_search_index], | 188 ExpectSimilar(prepopulated_urls[default_search_index], |
| 165 manager.GetDefaultSearchEngine()); | 189 manager.GetDefaultSearchEngine(&source)); |
| 166 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 190 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
| 167 manager.GetDefaultSearchEngineSource()); | |
| 168 | 191 |
| 169 // Setting a user pref overrides the pre-populated values. | 192 // Setting a user pref overrides the pre-populated values. |
| 170 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 193 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
| 171 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 194 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
| 172 | 195 |
| 173 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 196 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
| 174 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 197 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 175 manager.GetDefaultSearchEngineSource()); | |
| 176 | 198 |
| 177 // Updating the user pref (externally to this instance of | 199 // Updating the user pref (externally to this instance of |
| 178 // DefaultSearchManager) triggers an update. | 200 // DefaultSearchManager) triggers an update. |
| 179 scoped_ptr<TemplateURLData> new_data = GenerateDummyTemplateURLData("user2"); | 201 scoped_ptr<TemplateURLData> new_data = GenerateDummyTemplateURLData("user2"); |
| 180 DefaultSearchManager other_manager(pref_service()); | 202 DefaultSearchManager other_manager(pref_service(), |
| 203 DefaultSearchManager::ObserverCallback()); | |
| 181 other_manager.SetUserSelectedDefaultSearchEngine(*new_data.get()); | 204 other_manager.SetUserSelectedDefaultSearchEngine(*new_data.get()); |
| 182 | 205 |
| 183 ExpectSimilar(new_data.get(), manager.GetDefaultSearchEngine()); | 206 ExpectSimilar(new_data.get(), manager.GetDefaultSearchEngine(&source)); |
| 184 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 207 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 185 manager.GetDefaultSearchEngineSource()); | |
| 186 | 208 |
| 187 // Clearing the user pref should cause the default search to revert to the | 209 // Clearing the user pref should cause the default search to revert to the |
| 188 // prepopulated vlaues. | 210 // prepopulated vlaues. |
| 189 manager.ClearUserSelectedDefaultSearchEngine(); | 211 manager.ClearUserSelectedDefaultSearchEngine(); |
| 190 ExpectSimilar(prepopulated_urls[default_search_index], | 212 ExpectSimilar(prepopulated_urls[default_search_index], |
| 191 manager.GetDefaultSearchEngine()); | 213 manager.GetDefaultSearchEngine(&source)); |
| 192 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 214 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
| 193 manager.GetDefaultSearchEngineSource()); | |
| 194 } | 215 } |
| 195 | 216 |
| 196 // Test that DefaultSearch manager detects changes to kSearchProviderOverrides. | 217 // Test that DefaultSearch manager detects changes to kSearchProviderOverrides. |
| 197 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByOverrides) { | 218 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByOverrides) { |
| 198 SetOverrides(pref_service(), false); | 219 SetOverrides(pref_service(), false); |
| 199 size_t default_search_index = 0; | 220 size_t default_search_index = 0; |
| 200 DefaultSearchManager manager(pref_service()); | 221 DefaultSearchManager manager(pref_service(), |
| 222 DefaultSearchManager::ObserverCallback()); | |
| 201 ScopedVector<TemplateURLData> prepopulated_urls = | 223 ScopedVector<TemplateURLData> prepopulated_urls = |
| 202 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), | 224 TemplateURLPrepopulateData::GetPrepopulatedEngines(pref_service(), |
| 203 &default_search_index); | 225 &default_search_index); |
| 204 | 226 |
| 205 TemplateURLData first_default(*manager.GetDefaultSearchEngine()); | 227 DefaultSearchManager::Source source = DefaultSearchManager::FROM_POLICY; |
| 228 TemplateURLData first_default(*manager.GetDefaultSearchEngine(&source)); | |
| 206 ExpectSimilar(prepopulated_urls[default_search_index], &first_default); | 229 ExpectSimilar(prepopulated_urls[default_search_index], &first_default); |
| 207 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 230 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
| 208 manager.GetDefaultSearchEngineSource()); | |
| 209 | 231 |
| 210 // Update the overrides: | 232 // Update the overrides: |
| 211 SetOverrides(pref_service(), true); | 233 SetOverrides(pref_service(), true); |
| 212 prepopulated_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( | 234 prepopulated_urls = TemplateURLPrepopulateData::GetPrepopulatedEngines( |
| 213 pref_service(), &default_search_index); | 235 pref_service(), &default_search_index); |
| 214 | 236 |
| 215 // Make sure DefaultSearchManager updated: | 237 // Make sure DefaultSearchManager updated: |
| 216 ExpectSimilar(prepopulated_urls[default_search_index], | 238 ExpectSimilar(prepopulated_urls[default_search_index], |
| 217 manager.GetDefaultSearchEngine()); | 239 manager.GetDefaultSearchEngine(&source)); |
| 218 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, | 240 EXPECT_EQ(DefaultSearchManager::Source::FROM_FALLBACK, source); |
| 219 manager.GetDefaultSearchEngineSource()); | 241 EXPECT_NE(manager.GetDefaultSearchEngine(NULL)->short_name, |
| 220 EXPECT_NE(manager.GetDefaultSearchEngine()->short_name, | |
| 221 first_default.short_name); | 242 first_default.short_name); |
| 222 EXPECT_NE(manager.GetDefaultSearchEngine()->keyword(), | 243 EXPECT_NE(manager.GetDefaultSearchEngine(NULL)->keyword(), |
| 223 first_default.keyword()); | 244 first_default.keyword()); |
| 224 } | 245 } |
| 225 | 246 |
| 226 // Test DefaultSearchManager handles policy-enforced DSEs correctly. | 247 // Test DefaultSearchManager handles policy-enforced DSEs correctly. |
| 227 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { | 248 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByPolicy) { |
| 228 DefaultSearchManager manager(pref_service()); | 249 DefaultSearchManager manager(pref_service(), |
| 250 DefaultSearchManager::ObserverCallback()); | |
| 229 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 251 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
| 230 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 252 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
| 231 | 253 |
| 232 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 254 DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; |
| 233 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 255 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
| 234 manager.GetDefaultSearchEngineSource()); | 256 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 235 | 257 |
| 236 scoped_ptr<TemplateURLData> policy_data = | 258 scoped_ptr<TemplateURLData> policy_data = |
| 237 GenerateDummyTemplateURLData("policy"); | 259 GenerateDummyTemplateURLData("policy"); |
| 238 SetPolicy(pref_service(), true, policy_data.get()); | 260 SetPolicy(pref_service(), true, policy_data.get()); |
| 239 | 261 |
| 240 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine()); | 262 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine(&source)); |
| 241 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 263 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
| 242 manager.GetDefaultSearchEngineSource()); | |
| 243 | 264 |
| 244 TemplateURLData null_policy_data; | 265 TemplateURLData null_policy_data; |
| 245 SetPolicy(pref_service(), false, &null_policy_data); | 266 SetPolicy(pref_service(), false, &null_policy_data); |
| 246 EXPECT_EQ(NULL, manager.GetDefaultSearchEngine()); | 267 EXPECT_EQ(NULL, manager.GetDefaultSearchEngine(&source)); |
| 247 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 268 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
| 248 manager.GetDefaultSearchEngineSource()); | |
| 249 | 269 |
| 250 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); | 270 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); |
| 251 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 271 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
| 252 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 272 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 253 manager.GetDefaultSearchEngineSource()); | |
| 254 } | 273 } |
| 255 | 274 |
| 256 // Test DefaultSearchManager handles extension-controlled DSEs correctly. | 275 // Test DefaultSearchManager handles extension-controlled DSEs correctly. |
| 257 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { | 276 TEST_F(DefaultSearchManagerTest, DefaultSearchSetByExtension) { |
| 258 DefaultSearchManager manager(pref_service()); | 277 DefaultSearchManager manager(pref_service(), |
| 278 DefaultSearchManager::ObserverCallback()); | |
| 259 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); | 279 scoped_ptr<TemplateURLData> data = GenerateDummyTemplateURLData("user"); |
| 260 manager.SetUserSelectedDefaultSearchEngine(*data.get()); | 280 manager.SetUserSelectedDefaultSearchEngine(*data.get()); |
| 261 | 281 |
| 262 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 282 DefaultSearchManager::Source source = DefaultSearchManager::FROM_FALLBACK; |
| 263 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 283 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
| 264 manager.GetDefaultSearchEngineSource()); | 284 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 265 | 285 |
| 266 // Extension trumps prefs: | 286 // Extension trumps prefs: |
| 267 scoped_ptr<TemplateURLData> extension_data_1 = | 287 scoped_ptr<TemplateURLData> extension_data_1 = |
| 268 GenerateDummyTemplateURLData("ext1"); | 288 GenerateDummyTemplateURLData("ext1"); |
| 269 TemplateURLData tmp = *extension_data_1.get(); | 289 TemplateURLData tmp = *extension_data_1.get(); |
| 270 manager.SetExtensionControlledDefaultSearchEngine(extension_data_1.release()); | 290 manager.SetExtensionControlledDefaultSearchEngine(extension_data_1.release()); |
| 271 | 291 |
| 272 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine()); | 292 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine(&source)); |
| 273 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, | 293 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, source); |
| 274 manager.GetDefaultSearchEngineSource()); | |
| 275 | 294 |
| 276 // Policy trumps extension: | 295 // Policy trumps extension: |
| 277 scoped_ptr<TemplateURLData> policy_data = | 296 scoped_ptr<TemplateURLData> policy_data = |
| 278 GenerateDummyTemplateURLData("policy"); | 297 GenerateDummyTemplateURLData("policy"); |
| 279 SetPolicy(pref_service(), true, policy_data.get()); | 298 SetPolicy(pref_service(), true, policy_data.get()); |
| 280 | 299 |
| 281 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine()); | 300 ExpectSimilar(policy_data.get(), manager.GetDefaultSearchEngine(&source)); |
| 282 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, | 301 EXPECT_EQ(DefaultSearchManager::Source::FROM_POLICY, source); |
| 283 manager.GetDefaultSearchEngineSource()); | |
| 284 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); | 302 pref_service()->RemoveManagedPref(kDefaultSearchProviderData); |
| 285 | 303 |
| 286 // Extensions trump each other: | 304 // Extensions trump each other: |
| 287 scoped_ptr<TemplateURLData> extension_data_2 = | 305 scoped_ptr<TemplateURLData> extension_data_2 = |
| 288 GenerateDummyTemplateURLData("ext2"); | 306 GenerateDummyTemplateURLData("ext2"); |
| 289 scoped_ptr<TemplateURLData> extension_data_3 = | 307 scoped_ptr<TemplateURLData> extension_data_3 = |
| 290 GenerateDummyTemplateURLData("ext3"); | 308 GenerateDummyTemplateURLData("ext3"); |
| 291 tmp = *extension_data_3.get(); | 309 tmp = *extension_data_3.get(); |
| 292 manager.SetExtensionControlledDefaultSearchEngine(extension_data_2.release()); | 310 manager.SetExtensionControlledDefaultSearchEngine(extension_data_2.release()); |
| 293 manager.SetExtensionControlledDefaultSearchEngine(extension_data_3.release()); | 311 manager.SetExtensionControlledDefaultSearchEngine(extension_data_3.release()); |
| 294 | 312 |
| 295 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine()); | 313 ExpectSimilar(&tmp, manager.GetDefaultSearchEngine(&source)); |
| 296 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, | 314 EXPECT_EQ(DefaultSearchManager::Source::FROM_EXTENSION, source); |
| 297 manager.GetDefaultSearchEngineSource()); | |
| 298 | 315 |
| 299 manager.ClearExtensionControlledDefaultSearchEngine(); | 316 manager.ClearExtensionControlledDefaultSearchEngine(); |
| 300 | 317 |
| 301 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine()); | 318 ExpectSimilar(data.get(), manager.GetDefaultSearchEngine(&source)); |
| 302 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, | 319 EXPECT_EQ(DefaultSearchManager::Source::FROM_USER, source); |
| 303 manager.GetDefaultSearchEngineSource()); | |
| 304 } | 320 } |
| OLD | NEW |