| 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 <memory> | 5 #include <memory> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/base_switches.h" | 8 #include "base/base_switches.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 1214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1225 "id" : 1 | 1225 "id" : 1 |
| 1226 }, { | 1226 }, { |
| 1227 "keyword" : "badkeyword2", | 1227 "keyword" : "badkeyword2", |
| 1228 "name" : "badname2", | 1228 "name" : "badname2", |
| 1229 "search_url" : "http://bad_default_engine2/search?q=dirty_user_query", | 1229 "search_url" : "http://bad_default_engine2/search?q=dirty_user_query", |
| 1230 "encoding" : "utf-8", | 1230 "encoding" : "utf-8", |
| 1231 "id" : 2 | 1231 "id" : 2 |
| 1232 } | 1232 } |
| 1233 ] | 1233 ] |
| 1234 })"; | 1234 })"; |
| 1235 static constexpr char default_search_provider[] = R"( | |
| 1236 { | |
| 1237 "default_search_provider" : { | |
| 1238 "keyword" : "badkeyword", | |
| 1239 "name" : "badname", | |
| 1240 "search_url" : "http://bad_default_engine/search?q=dirty_user_query" | |
| 1241 } | |
| 1242 })"; | |
| 1243 | 1235 |
| 1244 // Try to override default search in all three of available preferences. | 1236 // Try to override default search in all three of available preferences. |
| 1245 auto attack1 = base::DictionaryValue::From( | 1237 auto attack1 = base::DictionaryValue::From( |
| 1246 base::JSONReader::Read(default_search_provider_data)); | 1238 base::JSONReader::Read(default_search_provider_data)); |
| 1247 auto attack2 = base::DictionaryValue::From( | 1239 auto attack2 = base::DictionaryValue::From( |
| 1248 base::JSONReader::Read(search_provider_overrides)); | 1240 base::JSONReader::Read(search_provider_overrides)); |
| 1249 auto attack3 = base::DictionaryValue::From( | |
| 1250 base::JSONReader::Read(default_search_provider)); | |
| 1251 unprotected_preferences->MergeDictionary(attack1.get()); | 1241 unprotected_preferences->MergeDictionary(attack1.get()); |
| 1252 unprotected_preferences->MergeDictionary(attack2.get()); | 1242 unprotected_preferences->MergeDictionary(attack2.get()); |
| 1253 unprotected_preferences->MergeDictionary(attack3.get()); | |
| 1254 if (protected_preferences) { | 1243 if (protected_preferences) { |
| 1255 // Override here, too. | 1244 // Override here, too. |
| 1256 protected_preferences->MergeDictionary(attack1.get()); | 1245 protected_preferences->MergeDictionary(attack1.get()); |
| 1257 protected_preferences->MergeDictionary(attack2.get()); | 1246 protected_preferences->MergeDictionary(attack2.get()); |
| 1258 protected_preferences->MergeDictionary(attack3.get()); | |
| 1259 } | 1247 } |
| 1260 } | 1248 } |
| 1261 | 1249 |
| 1262 void VerifyReactionToPrefAttack() override { | 1250 void VerifyReactionToPrefAttack() override { |
| 1263 DefaultSearchManager default_search_manager( | 1251 DefaultSearchManager default_search_manager( |
| 1264 profile()->GetPrefs(), DefaultSearchManager::ObserverCallback()); | 1252 profile()->GetPrefs(), DefaultSearchManager::ObserverCallback()); |
| 1265 DefaultSearchManager::Source dse_source = | 1253 DefaultSearchManager::Source dse_source = |
| 1266 static_cast<DefaultSearchManager::Source>(-1); | 1254 static_cast<DefaultSearchManager::Source>(-1); |
| 1267 | 1255 |
| 1268 const TemplateURLData* current_dse = | 1256 const TemplateURLData* current_dse = |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1283 EXPECT_EQ(DefaultSearchManager::FROM_FALLBACK, dse_source); | 1271 EXPECT_EQ(DefaultSearchManager::FROM_FALLBACK, dse_source); |
| 1284 EXPECT_NE(current_dse->keyword(), base::UTF8ToUTF16("badkeyword")); | 1272 EXPECT_NE(current_dse->keyword(), base::UTF8ToUTF16("badkeyword")); |
| 1285 EXPECT_NE(current_dse->short_name(), base::UTF8ToUTF16("badname")); | 1273 EXPECT_NE(current_dse->short_name(), base::UTF8ToUTF16("badname")); |
| 1286 EXPECT_NE(current_dse->url(), | 1274 EXPECT_NE(current_dse->url(), |
| 1287 "http://bad_default_engine/search?q=dirty_user_query"); | 1275 "http://bad_default_engine/search?q=dirty_user_query"); |
| 1288 } | 1276 } |
| 1289 } | 1277 } |
| 1290 }; | 1278 }; |
| 1291 | 1279 |
| 1292 PREF_HASH_BROWSER_TEST(PrefHashBrowserTestDefaultSearch, SearchProtected); | 1280 PREF_HASH_BROWSER_TEST(PrefHashBrowserTestDefaultSearch, SearchProtected); |
| OLD | NEW |