| 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 "components/search_engines/template_url_prepopulate_data.h" | 5 #include "components/search_engines/template_url_prepopulate_data.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/scoped_vector.h" | |
| 16 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 17 #include "components/google/core/browser/google_switches.h" | 16 #include "components/google/core/browser/google_switches.h" |
| 18 #include "components/pref_registry/testing_pref_service_syncable.h" | 17 #include "components/pref_registry/testing_pref_service_syncable.h" |
| 19 #include "components/search_engines/prepopulated_engines.h" | 18 #include "components/search_engines/prepopulated_engines.h" |
| 20 #include "components/search_engines/search_engines_pref_names.h" | 19 #include "components/search_engines/search_engines_pref_names.h" |
| 21 #include "components/search_engines/search_terms_data.h" | 20 #include "components/search_engines/search_terms_data.h" |
| 22 #include "components/search_engines/template_url.h" | 21 #include "components/search_engines/template_url.h" |
| 23 #include "components/search_engines/template_url_service.h" | 22 #include "components/search_engines/template_url_service.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 25 | 24 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 'T'<<8|'L', 'T'<<8|'M', 'T'<<8|'N', 'T'<<8|'O', 'T'<<8|'R', | 98 'T'<<8|'L', 'T'<<8|'M', 'T'<<8|'N', 'T'<<8|'O', 'T'<<8|'R', |
| 100 'T'<<8|'T', 'T'<<8|'V', 'T'<<8|'W', 'T'<<8|'Z', 'U'<<8|'A', | 99 'T'<<8|'T', 'T'<<8|'V', 'T'<<8|'W', 'T'<<8|'Z', 'U'<<8|'A', |
| 101 'U'<<8|'G', 'U'<<8|'M', 'U'<<8|'S', 'U'<<8|'Y', 'U'<<8|'Z', | 100 'U'<<8|'G', 'U'<<8|'M', 'U'<<8|'S', 'U'<<8|'Y', 'U'<<8|'Z', |
| 102 'V'<<8|'A', 'V'<<8|'C', 'V'<<8|'E', 'V'<<8|'G', 'V'<<8|'I', | 101 'V'<<8|'A', 'V'<<8|'C', 'V'<<8|'E', 'V'<<8|'G', 'V'<<8|'I', |
| 103 'V'<<8|'N', 'V'<<8|'U', 'W'<<8|'F', 'W'<<8|'S', 'Y'<<8|'E', | 102 'V'<<8|'N', 'V'<<8|'U', 'W'<<8|'F', 'W'<<8|'S', 'Y'<<8|'E', |
| 104 'Y'<<8|'T', 'Z'<<8|'A', 'Z'<<8|'M', 'Z'<<8|'W', -1 }; | 103 'Y'<<8|'T', 'Z'<<8|'A', 'Z'<<8|'M', 'Z'<<8|'W', -1 }; |
| 105 | 104 |
| 106 for (size_t i = 0; i < arraysize(kCountryIds); ++i) { | 105 for (size_t i = 0; i < arraysize(kCountryIds); ++i) { |
| 107 prefs_.SetInteger(prefs::kCountryIDAtInstall, kCountryIds[i]); | 106 prefs_.SetInteger(prefs::kCountryIDAtInstall, kCountryIds[i]); |
| 108 size_t default_index; | 107 size_t default_index; |
| 109 ScopedVector<TemplateURLData> urls = | 108 std::vector<std::unique_ptr<TemplateURLData>> urls = |
| 110 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, | 109 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, |
| 111 &default_index); | 110 &default_index); |
| 112 std::set<int> unique_ids; | 111 std::set<int> unique_ids; |
| 113 for (size_t turl_i = 0; turl_i < urls.size(); ++turl_i) { | 112 for (size_t turl_i = 0; turl_i < urls.size(); ++turl_i) { |
| 114 ASSERT_TRUE(unique_ids.find(urls[turl_i]->prepopulate_id) == | 113 ASSERT_TRUE(unique_ids.find(urls[turl_i]->prepopulate_id) == |
| 115 unique_ids.end()); | 114 unique_ids.end()); |
| 116 unique_ids.insert(urls[turl_i]->prepopulate_id); | 115 unique_ids.insert(urls[turl_i]->prepopulate_id); |
| 117 } | 116 } |
| 118 } | 117 } |
| 119 } | 118 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 132 entry->SetString("favicon_url", "http://foi.com/favicon.ico"); | 131 entry->SetString("favicon_url", "http://foi.com/favicon.ico"); |
| 133 entry->SetString("encoding", "UTF-8"); | 132 entry->SetString("encoding", "UTF-8"); |
| 134 entry->SetInteger("id", 1001); | 133 entry->SetInteger("id", 1001); |
| 135 overrides->Append(entry->CreateDeepCopy()); | 134 overrides->Append(entry->CreateDeepCopy()); |
| 136 prefs_.SetUserPref(prefs::kSearchProviderOverrides, overrides); | 135 prefs_.SetUserPref(prefs::kSearchProviderOverrides, overrides); |
| 137 | 136 |
| 138 int version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); | 137 int version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); |
| 139 EXPECT_EQ(1, version); | 138 EXPECT_EQ(1, version); |
| 140 | 139 |
| 141 size_t default_index; | 140 size_t default_index; |
| 142 ScopedVector<TemplateURLData> t_urls = | 141 std::vector<std::unique_ptr<TemplateURLData>> t_urls = |
| 143 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, | 142 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, |
| 144 &default_index); | 143 &default_index); |
| 145 | 144 |
| 146 ASSERT_EQ(1u, t_urls.size()); | 145 ASSERT_EQ(1u, t_urls.size()); |
| 147 EXPECT_EQ(ASCIIToUTF16("foo"), t_urls[0]->short_name()); | 146 EXPECT_EQ(ASCIIToUTF16("foo"), t_urls[0]->short_name()); |
| 148 EXPECT_EQ(ASCIIToUTF16("fook"), t_urls[0]->keyword()); | 147 EXPECT_EQ(ASCIIToUTF16("fook"), t_urls[0]->keyword()); |
| 149 EXPECT_EQ("foo.com", GetHostFromTemplateURLData(*t_urls[0])); | 148 EXPECT_EQ("foo.com", GetHostFromTemplateURLData(*t_urls[0])); |
| 150 EXPECT_EQ("foi.com", t_urls[0]->favicon_url.host()); | 149 EXPECT_EQ("foi.com", t_urls[0]->favicon_url.host()); |
| 151 EXPECT_EQ(1u, t_urls[0]->input_encodings.size()); | 150 EXPECT_EQ(1u, t_urls[0]->input_encodings.size()); |
| 152 EXPECT_EQ(1001, t_urls[0]->prepopulate_id); | 151 EXPECT_EQ(1001, t_urls[0]->prepopulate_id); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 int version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); | 223 int version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); |
| 225 EXPECT_EQ(1, version); | 224 EXPECT_EQ(1, version); |
| 226 | 225 |
| 227 // This call removes the above search engine. | 226 // This call removes the above search engine. |
| 228 TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(&prefs_); | 227 TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(&prefs_); |
| 229 | 228 |
| 230 version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); | 229 version = TemplateURLPrepopulateData::GetDataVersion(&prefs_); |
| 231 EXPECT_EQ(TemplateURLPrepopulateData::kCurrentDataVersion, version); | 230 EXPECT_EQ(TemplateURLPrepopulateData::kCurrentDataVersion, version); |
| 232 | 231 |
| 233 size_t default_index; | 232 size_t default_index; |
| 234 ScopedVector<TemplateURLData> t_urls = | 233 std::vector<std::unique_ptr<TemplateURLData>> t_urls = |
| 235 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, | 234 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, |
| 236 &default_index); | 235 &default_index); |
| 237 ASSERT_FALSE(t_urls.empty()); | 236 ASSERT_FALSE(t_urls.empty()); |
| 238 for (size_t i = 0; i < t_urls.size(); ++i) { | 237 for (size_t i = 0; i < t_urls.size(); ++i) { |
| 239 EXPECT_NE(ASCIIToUTF16("foo"), t_urls[i]->short_name()); | 238 EXPECT_NE(ASCIIToUTF16("foo"), t_urls[i]->short_name()); |
| 240 EXPECT_NE(ASCIIToUTF16("fook"), t_urls[i]->keyword()); | 239 EXPECT_NE(ASCIIToUTF16("fook"), t_urls[i]->keyword()); |
| 241 EXPECT_NE("foi.com", t_urls[i]->favicon_url.host()); | 240 EXPECT_NE("foi.com", t_urls[i]->favicon_url.host()); |
| 242 EXPECT_NE("foo.com", GetHostFromTemplateURLData(*t_urls[i])); | 241 EXPECT_NE("foo.com", GetHostFromTemplateURLData(*t_urls[i])); |
| 243 EXPECT_NE(1001, t_urls[i]->prepopulate_id); | 242 EXPECT_NE(1001, t_urls[i]->prepopulate_id); |
| 244 } | 243 } |
| 245 // Ensures the default URL is Google and has the optional fields filled. | 244 // Ensures the default URL is Google and has the optional fields filled. |
| 246 EXPECT_EQ(ASCIIToUTF16("Google"), t_urls[default_index]->short_name()); | 245 EXPECT_EQ(ASCIIToUTF16("Google"), t_urls[default_index]->short_name()); |
| 247 EXPECT_FALSE(t_urls[default_index]->suggestions_url.empty()); | 246 EXPECT_FALSE(t_urls[default_index]->suggestions_url.empty()); |
| 248 EXPECT_FALSE(t_urls[default_index]->instant_url.empty()); | 247 EXPECT_FALSE(t_urls[default_index]->instant_url.empty()); |
| 249 EXPECT_FALSE(t_urls[default_index]->image_url.empty()); | 248 EXPECT_FALSE(t_urls[default_index]->image_url.empty()); |
| 250 EXPECT_FALSE(t_urls[default_index]->new_tab_url.empty()); | 249 EXPECT_FALSE(t_urls[default_index]->new_tab_url.empty()); |
| 251 EXPECT_FALSE(t_urls[default_index]->contextual_search_url.empty()); | 250 EXPECT_FALSE(t_urls[default_index]->contextual_search_url.empty()); |
| 252 EXPECT_FALSE(t_urls[default_index]->image_url_post_params.empty()); | 251 EXPECT_FALSE(t_urls[default_index]->image_url_post_params.empty()); |
| 253 EXPECT_EQ(SEARCH_ENGINE_GOOGLE, | 252 EXPECT_EQ(SEARCH_ENGINE_GOOGLE, |
| 254 TemplateURL(*t_urls[default_index]).GetEngineType( | 253 TemplateURL(*t_urls[default_index]).GetEngineType( |
| 255 SearchTermsData())); | 254 SearchTermsData())); |
| 256 } | 255 } |
| 257 | 256 |
| 258 // Verifies that built-in search providers are processed correctly. | 257 // Verifies that built-in search providers are processed correctly. |
| 259 TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrepopulated) { | 258 TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrepopulated) { |
| 260 // Use United States. | 259 // Use United States. |
| 261 prefs_.SetInteger(prefs::kCountryIDAtInstall, 'U'<<8|'S'); | 260 prefs_.SetInteger(prefs::kCountryIDAtInstall, 'U'<<8|'S'); |
| 262 size_t default_index; | 261 size_t default_index; |
| 263 ScopedVector<TemplateURLData> t_urls = | 262 std::vector<std::unique_ptr<TemplateURLData>> t_urls = |
| 264 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, | 263 TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, |
| 265 &default_index); | 264 &default_index); |
| 266 | 265 |
| 267 // Ensure all the URLs have the required fields populated. | 266 // Ensure all the URLs have the required fields populated. |
| 268 ASSERT_FALSE(t_urls.empty()); | 267 ASSERT_FALSE(t_urls.empty()); |
| 269 for (size_t i = 0; i < t_urls.size(); ++i) { | 268 for (size_t i = 0; i < t_urls.size(); ++i) { |
| 270 ASSERT_FALSE(t_urls[i]->short_name().empty()); | 269 ASSERT_FALSE(t_urls[i]->short_name().empty()); |
| 271 ASSERT_FALSE(t_urls[i]->keyword().empty()); | 270 ASSERT_FALSE(t_urls[i]->keyword().empty()); |
| 272 ASSERT_FALSE(t_urls[i]->favicon_url.host().empty()); | 271 ASSERT_FALSE(t_urls[i]->favicon_url.host().empty()); |
| 273 ASSERT_FALSE(GetHostFromTemplateURLData(*t_urls[i]).empty()); | 272 ASSERT_FALSE(GetHostFromTemplateURLData(*t_urls[i]).empty()); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 const std::vector<const PrepopulatedEngine*> all_engines = | 356 const std::vector<const PrepopulatedEngine*> all_engines = |
| 358 TemplateURLPrepopulateData::GetAllPrepopulatedEngines(); | 357 TemplateURLPrepopulateData::GetAllPrepopulatedEngines(); |
| 359 for (const PrepopulatedEngine* engine : all_engines) { | 358 for (const PrepopulatedEngine* engine : all_engines) { |
| 360 std::unique_ptr<TemplateURLData> data = | 359 std::unique_ptr<TemplateURLData> data = |
| 361 TemplateURLPrepopulateData::MakeTemplateURLDataFromPrepopulatedEngine( | 360 TemplateURLPrepopulateData::MakeTemplateURLDataFromPrepopulatedEngine( |
| 362 *engine); | 361 *engine); |
| 363 EXPECT_EQ(engine->type, | 362 EXPECT_EQ(engine->type, |
| 364 TemplateURL(*data).GetEngineType(SearchTermsData())); | 363 TemplateURL(*data).GetEngineType(SearchTermsData())); |
| 365 } | 364 } |
| 366 } | 365 } |
| OLD | NEW |