OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "chrome/browser/search_engines/default_search_manager.h" |
6 #include "chrome/browser/search_engines/default_search_policy_handler.h" | 7 #include "chrome/browser/search_engines/default_search_policy_handler.h" |
7 #include "chrome/common/pref_names.h" | 8 #include "chrome/common/pref_names.h" |
8 #include "components/policy/core/browser/configuration_policy_pref_store.h" | 9 #include "components/policy/core/browser/configuration_policy_pref_store.h" |
9 #include "components/policy/core/browser/configuration_policy_pref_store_test.h" | 10 #include "components/policy/core/browser/configuration_policy_pref_store_test.h" |
10 #include "policy/policy_constants.h" | 11 #include "policy/policy_constants.h" |
11 | 12 |
| 13 namespace { |
| 14 // TODO(caitkp): Should we find a way to route this through DefaultSearchManager |
| 15 // to avoid hardcoding this here? |
| 16 const char kDefaultSearchProviderData[] = |
| 17 "default_search_provider_data.template_url_data"; |
| 18 } // namespace |
| 19 |
12 namespace policy { | 20 namespace policy { |
13 | 21 |
14 class DefaultSearchPolicyHandlerTest | 22 class DefaultSearchPolicyHandlerTest |
15 : public ConfigurationPolicyPrefStoreTest { | 23 : public ConfigurationPolicyPrefStoreTest { |
16 public: | 24 public: |
17 DefaultSearchPolicyHandlerTest() { | 25 DefaultSearchPolicyHandlerTest() { |
18 default_alternate_urls_.AppendString( | 26 default_alternate_urls_.AppendString( |
19 "http://www.google.com/#q={searchTerms}"); | 27 "http://www.google.com/#q={searchTerms}"); |
20 default_alternate_urls_.AppendString( | 28 default_alternate_urls_.AppendString( |
21 "http://www.google.com/search#q={searchTerms}"); | 29 "http://www.google.com/search#q={searchTerms}"); |
22 } | 30 } |
23 | 31 |
24 virtual void SetUp() OVERRIDE { | 32 virtual void SetUp() OVERRIDE { |
25 handler_list_.AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 33 handler_list_.AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( |
26 new DefaultSearchPolicyHandler)); | 34 new DefaultSearchPolicyHandler)); |
27 } | 35 } |
28 | 36 |
29 protected: | 37 protected: |
30 static const char kSearchURL[]; | 38 static const char kSearchURL[]; |
31 static const char kSuggestURL[]; | 39 static const char kSuggestURL[]; |
32 static const char kIconURL[]; | 40 static const char kIconURL[]; |
33 static const char kName[]; | 41 static const char kName[]; |
34 static const char kKeyword[]; | 42 static const char kKeyword[]; |
35 static const char kReplacementKey[]; | 43 static const char kReplacementKey[]; |
36 static const char kImageURL[]; | 44 static const char kImageURL[]; |
37 static const char kImageParams[]; | 45 static const char kImageParams[]; |
38 static const char kNewTabURL[]; | 46 static const char kNewTabURL[]; |
| 47 static const char kFileSearchURL[]; |
| 48 static const char kHostName[]; |
39 | 49 |
40 // Build a default search policy by setting search-related keys in |policy| to | 50 // Build a default search policy by setting search-related keys in |policy| to |
41 // reasonable values. You can update any of the keys after calling this | 51 // reasonable values. You can update any of the keys after calling this |
42 // method. | 52 // method. |
43 void BuildDefaultSearchPolicy(PolicyMap* policy); | 53 void BuildDefaultSearchPolicy(PolicyMap* policy); |
44 | 54 |
45 base::ListValue default_alternate_urls_; | 55 base::ListValue default_alternate_urls_; |
46 }; | 56 }; |
47 | 57 |
48 const char DefaultSearchPolicyHandlerTest::kSearchURL[] = | 58 const char DefaultSearchPolicyHandlerTest::kSearchURL[] = |
49 "http://test.com/search?t={searchTerms}"; | 59 "http://test.com/search?t={searchTerms}"; |
50 const char DefaultSearchPolicyHandlerTest::kSuggestURL[] = | 60 const char DefaultSearchPolicyHandlerTest::kSuggestURL[] = |
51 "http://test.com/sugg?={searchTerms}"; | 61 "http://test.com/sugg?={searchTerms}"; |
52 const char DefaultSearchPolicyHandlerTest::kIconURL[] = | 62 const char DefaultSearchPolicyHandlerTest::kIconURL[] = |
53 "http://test.com/icon.jpg"; | 63 "http://test.com/icon.jpg"; |
54 const char DefaultSearchPolicyHandlerTest::kName[] = | 64 const char DefaultSearchPolicyHandlerTest::kName[] = |
55 "MyName"; | 65 "MyName"; |
56 const char DefaultSearchPolicyHandlerTest::kKeyword[] = | 66 const char DefaultSearchPolicyHandlerTest::kKeyword[] = |
57 "MyKeyword"; | 67 "MyKeyword"; |
58 const char DefaultSearchPolicyHandlerTest::kReplacementKey[] = | 68 const char DefaultSearchPolicyHandlerTest::kReplacementKey[] = |
59 "espv"; | 69 "espv"; |
60 const char DefaultSearchPolicyHandlerTest::kImageURL[] = | 70 const char DefaultSearchPolicyHandlerTest::kImageURL[] = |
61 "http://test.com/searchbyimage/upload"; | 71 "http://test.com/searchbyimage/upload"; |
62 const char DefaultSearchPolicyHandlerTest::kImageParams[] = | 72 const char DefaultSearchPolicyHandlerTest::kImageParams[] = |
63 "image_content=content,image_url=http://test.com/test.png"; | 73 "image_content=content,image_url=http://test.com/test.png"; |
64 const char DefaultSearchPolicyHandlerTest::kNewTabURL[] = | 74 const char DefaultSearchPolicyHandlerTest::kNewTabURL[] = |
65 "http://test.com/newtab"; | 75 "http://test.com/newtab"; |
| 76 const char DefaultSearchPolicyHandlerTest::kFileSearchURL[] = |
| 77 "file:///c:/path/to/search?t={searchTerms}"; |
| 78 const char DefaultSearchPolicyHandlerTest::kHostName[] = "test.com"; |
66 | 79 |
67 void DefaultSearchPolicyHandlerTest:: | 80 void DefaultSearchPolicyHandlerTest:: |
68 BuildDefaultSearchPolicy(PolicyMap* policy) { | 81 BuildDefaultSearchPolicy(PolicyMap* policy) { |
69 base::ListValue* encodings = new base::ListValue(); | 82 base::ListValue* encodings = new base::ListValue(); |
70 encodings->AppendString("UTF-16"); | 83 encodings->AppendString("UTF-16"); |
71 encodings->AppendString("UTF-8"); | 84 encodings->AppendString("UTF-8"); |
72 policy->Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, | 85 policy->Set(key::kDefaultSearchProviderEnabled, POLICY_LEVEL_MANDATORY, |
73 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true), NULL); | 86 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true), NULL); |
74 policy->Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, | 87 policy->Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, |
75 POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL), | 88 POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, | 125 policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY, |
113 POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL), | 126 POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL), |
114 NULL); | 127 NULL); |
115 UpdateProviderPolicy(policy); | 128 UpdateProviderPolicy(policy); |
116 | 129 |
117 const base::Value* value = NULL; | 130 const base::Value* value = NULL; |
118 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); | 131 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); |
119 EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value)); | 132 EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value)); |
120 | 133 |
121 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value)); | 134 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value)); |
122 EXPECT_TRUE(base::StringValue("test.com").Equals(value)); | 135 EXPECT_TRUE(base::StringValue(kHostName).Equals(value)); |
123 | 136 |
124 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value)); | 137 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value)); |
125 EXPECT_TRUE(base::StringValue("test.com").Equals(value)); | 138 EXPECT_TRUE(base::StringValue(kHostName).Equals(value)); |
126 | 139 |
127 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, | 140 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, |
128 &value)); | 141 &value)); |
129 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); | 142 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); |
130 | 143 |
131 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value)); | 144 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value)); |
132 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); | 145 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); |
133 | 146 |
134 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value)); | 147 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value)); |
135 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); | 148 EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 | 303 |
291 const base::Value* value = NULL; | 304 const base::Value* value = NULL; |
292 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEnabled, &value)); | 305 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEnabled, &value)); |
293 base::FundamentalValue expected_enabled(false); | 306 base::FundamentalValue expected_enabled(false); |
294 EXPECT_TRUE(base::Value::Equals(&expected_enabled, value)); | 307 EXPECT_TRUE(base::Value::Equals(&expected_enabled, value)); |
295 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); | 308 EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); |
296 base::StringValue expected_search_url((std::string())); | 309 base::StringValue expected_search_url((std::string())); |
297 EXPECT_TRUE(base::Value::Equals(&expected_search_url, value)); | 310 EXPECT_TRUE(base::Value::Equals(&expected_search_url, value)); |
298 } | 311 } |
299 | 312 |
| 313 // Checks that for a fully defined search policy, all elements have been |
| 314 // read properly into the dictionary pref. |
| 315 TEST_F(DefaultSearchPolicyHandlerTest, DictionaryPref) { |
| 316 PolicyMap policy; |
| 317 BuildDefaultSearchPolicy(&policy); |
| 318 UpdateProviderPolicy(policy); |
| 319 |
| 320 const base::Value* temp = NULL; |
| 321 const base::DictionaryValue* dictionary; |
| 322 std::string value; |
| 323 const base::ListValue* list_value; |
| 324 EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); |
| 325 temp->GetAsDictionary(&dictionary); |
| 326 |
| 327 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); |
| 328 EXPECT_EQ(kSearchURL, value); |
| 329 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); |
| 330 EXPECT_EQ(kName, value); |
| 331 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); |
| 332 EXPECT_EQ(kKeyword, value); |
| 333 |
| 334 EXPECT_TRUE( |
| 335 dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value)); |
| 336 EXPECT_EQ(kSuggestURL, value); |
| 337 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value)); |
| 338 EXPECT_EQ(kIconURL, value); |
| 339 |
| 340 base::ListValue encodings; |
| 341 encodings.AppendString("UTF-16"); |
| 342 encodings.AppendString("UTF-8"); |
| 343 |
| 344 EXPECT_TRUE( |
| 345 dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value)); |
| 346 EXPECT_TRUE(encodings.Equals(list_value)); |
| 347 |
| 348 EXPECT_TRUE( |
| 349 dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value)); |
| 350 EXPECT_TRUE(default_alternate_urls_.Equals(list_value)); |
| 351 |
| 352 EXPECT_TRUE(dictionary->GetString( |
| 353 DefaultSearchManager::kSearchTermsReplacementKey, &value)); |
| 354 EXPECT_EQ(kReplacementKey, value); |
| 355 |
| 356 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value)); |
| 357 EXPECT_EQ(kImageURL, value); |
| 358 |
| 359 EXPECT_TRUE( |
| 360 dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value)); |
| 361 EXPECT_EQ(kImageParams, value); |
| 362 |
| 363 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams, |
| 364 &value)); |
| 365 EXPECT_EQ(std::string(), value); |
| 366 |
| 367 EXPECT_TRUE(dictionary->GetString( |
| 368 DefaultSearchManager::kSuggestionsURLPostParams, &value)); |
| 369 EXPECT_EQ(std::string(), value); |
| 370 |
| 371 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams, |
| 372 &value)); |
| 373 EXPECT_EQ(std::string(), value); |
| 374 } |
| 375 |
| 376 // Checks that disabling default search is properly reflected the dictionary |
| 377 // pref. |
| 378 TEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefDSEDisabled) { |
| 379 PolicyMap policy; |
| 380 policy.Set(key::kDefaultSearchProviderEnabled, |
| 381 POLICY_LEVEL_MANDATORY, |
| 382 POLICY_SCOPE_USER, |
| 383 base::Value::CreateBooleanValue(false), |
| 384 NULL); |
| 385 UpdateProviderPolicy(policy); |
| 386 const base::Value* temp = NULL; |
| 387 const base::DictionaryValue* dictionary; |
| 388 EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); |
| 389 temp->GetAsDictionary(&dictionary); |
| 390 bool disabled = false; |
| 391 EXPECT_TRUE(dictionary->GetBoolean(DefaultSearchManager::kDisabledByPolicy, |
| 392 &disabled)); |
| 393 EXPECT_TRUE(disabled); |
| 394 } |
| 395 |
| 396 // Checks that if the policy for default search is valid, i.e. there's a |
| 397 // search URL, that all the elements have been given proper defaults. |
| 398 TEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefMinimallyDefined) { |
| 399 PolicyMap policy; |
| 400 policy.Set(key::kDefaultSearchProviderEnabled, |
| 401 POLICY_LEVEL_MANDATORY, |
| 402 POLICY_SCOPE_USER, |
| 403 base::Value::CreateBooleanValue(true), |
| 404 NULL); |
| 405 policy.Set(key::kDefaultSearchProviderSearchURL, |
| 406 POLICY_LEVEL_MANDATORY, |
| 407 POLICY_SCOPE_USER, |
| 408 base::Value::CreateStringValue(kSearchURL), |
| 409 NULL); |
| 410 UpdateProviderPolicy(policy); |
| 411 |
| 412 const base::Value* temp = NULL; |
| 413 const base::DictionaryValue* dictionary; |
| 414 std::string value; |
| 415 const base::ListValue* list_value; |
| 416 EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); |
| 417 temp->GetAsDictionary(&dictionary); |
| 418 |
| 419 // Name and keyword should be derived from host. |
| 420 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); |
| 421 EXPECT_EQ(kSearchURL, value); |
| 422 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); |
| 423 EXPECT_EQ(kHostName, value); |
| 424 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); |
| 425 EXPECT_EQ(kHostName, value); |
| 426 |
| 427 // Everything else should be set to the default value. |
| 428 EXPECT_TRUE( |
| 429 dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value)); |
| 430 EXPECT_EQ(std::string(), value); |
| 431 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value)); |
| 432 EXPECT_EQ(std::string(), value); |
| 433 EXPECT_TRUE( |
| 434 dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value)); |
| 435 EXPECT_TRUE(base::ListValue().Equals(list_value)); |
| 436 EXPECT_TRUE( |
| 437 dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value)); |
| 438 EXPECT_TRUE(base::ListValue().Equals(list_value)); |
| 439 EXPECT_TRUE(dictionary->GetString( |
| 440 DefaultSearchManager::kSearchTermsReplacementKey, &value)); |
| 441 EXPECT_EQ(std::string(), value); |
| 442 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value)); |
| 443 EXPECT_EQ(std::string(), value); |
| 444 EXPECT_TRUE( |
| 445 dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value)); |
| 446 EXPECT_EQ(std::string(), value); |
| 447 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams, |
| 448 &value)); |
| 449 EXPECT_EQ(std::string(), value); |
| 450 EXPECT_TRUE(dictionary->GetString( |
| 451 DefaultSearchManager::kSuggestionsURLPostParams, &value)); |
| 452 EXPECT_EQ(std::string(), value); |
| 453 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams, |
| 454 &value)); |
| 455 EXPECT_EQ(std::string(), value); |
| 456 } |
| 457 |
| 458 // Checks that setting a file URL as the default search is reflected properly in |
| 459 // the dictionary pref. |
| 460 TEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefFileURL) { |
| 461 PolicyMap policy; |
| 462 policy.Set(key::kDefaultSearchProviderEnabled, |
| 463 POLICY_LEVEL_MANDATORY, |
| 464 POLICY_SCOPE_USER, |
| 465 base::Value::CreateBooleanValue(true), |
| 466 NULL); |
| 467 policy.Set(key::kDefaultSearchProviderSearchURL, |
| 468 POLICY_LEVEL_MANDATORY, |
| 469 POLICY_SCOPE_USER, |
| 470 base::Value::CreateStringValue(kFileSearchURL), |
| 471 NULL); |
| 472 UpdateProviderPolicy(policy); |
| 473 |
| 474 const base::Value* temp = NULL; |
| 475 const base::DictionaryValue* dictionary; |
| 476 std::string value; |
| 477 |
| 478 EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); |
| 479 temp->GetAsDictionary(&dictionary); |
| 480 |
| 481 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); |
| 482 EXPECT_EQ(kFileSearchURL, value); |
| 483 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); |
| 484 EXPECT_EQ("_", value); |
| 485 EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); |
| 486 EXPECT_EQ("_", value); |
| 487 } |
300 } // namespace policy | 488 } // namespace policy |
OLD | NEW |