default_search_policy_handler_unittest.cc revision 116680a4aac90f2aa7413d9095a592090648e557
1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
28bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
38bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// found in the LICENSE file.
48bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_pref_store.h"
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_pref_store_test.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/default_search_manager.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/default_search_policy_handler.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/search_engines_pref_names.h"
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "policy/policy_constants.h"
128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace {
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// TODO(caitkp): Should we find a way to route this through DefaultSearchManager
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// to avoid hardcoding this here?
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kDefaultSearchProviderData[] =
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    "default_search_provider_data.template_url_data";
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)namespace policy {
218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class DefaultSearchPolicyHandlerTest
238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    : public ConfigurationPolicyPrefStoreTest {
248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) public:
258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  DefaultSearchPolicyHandlerTest() {
268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    default_alternate_urls_.AppendString(
278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)        "http://www.google.com/#q={searchTerms}");
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    default_alternate_urls_.AppendString(
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)        "http://www.google.com/search#q={searchTerms}");
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  }
318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void SetUp() OVERRIDE {
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    handler_list_.AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        new DefaultSearchPolicyHandler));
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) protected:
388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kSearchURL[];
398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kSuggestURL[];
408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kIconURL[];
418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kName[];
428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kKeyword[];
438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kReplacementKey[];
448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kImageURL[];
458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kImageParams[];
468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const char kNewTabURL[];
475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  static const char kFileSearchURL[];
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  static const char kHostName[];
498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Build a default search policy by setting search-related keys in |policy| to
518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // reasonable values. You can update any of the keys after calling this
528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // method.
538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  void BuildDefaultSearchPolicy(PolicyMap* policy);
548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  base::ListValue default_alternate_urls_;
568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)};
578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kSearchURL[] =
598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "http://test.com/search?t={searchTerms}";
608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kSuggestURL[] =
618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "http://test.com/sugg?={searchTerms}";
628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kIconURL[] =
638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "http://test.com/icon.jpg";
648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kName[] =
658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "MyName";
668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kKeyword[] =
678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "MyKeyword";
688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kReplacementKey[] =
698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "espv";
708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kImageURL[] =
718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "http://test.com/searchbyimage/upload";
728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kImageParams[] =
738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "image_content=content,image_url=http://test.com/test.png";
748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const char DefaultSearchPolicyHandlerTest::kNewTabURL[] =
758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    "http://test.com/newtab";
765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char DefaultSearchPolicyHandlerTest::kFileSearchURL[] =
775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    "file:///c:/path/to/search?t={searchTerms}";
785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char DefaultSearchPolicyHandlerTest::kHostName[] = "test.com";
798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)void DefaultSearchPolicyHandlerTest::
818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    BuildDefaultSearchPolicy(PolicyMap* policy) {
828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  base::ListValue* encodings = new base::ListValue();
838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  encodings->AppendString("UTF-16");
848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  encodings->AppendString("UTF-8");
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  policy->Set(key::kDefaultSearchProviderEnabled,
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              POLICY_LEVEL_MANDATORY,
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              POLICY_SCOPE_USER,
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              new base::FundamentalValue(true),
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              NULL);
908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL),
928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              NULL);
938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderName, POLICY_LEVEL_MANDATORY,
948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, base::Value::CreateStringValue(kName), NULL);
958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderKeyword, POLICY_LEVEL_MANDATORY,
968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, base::Value::CreateStringValue(kKeyword),
978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              NULL);
988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderSuggestURL, POLICY_LEVEL_MANDATORY,
998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, base::Value::CreateStringValue(kSuggestURL),
1008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              NULL);
1018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderIconURL, POLICY_LEVEL_MANDATORY,
1028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, base::Value::CreateStringValue(kIconURL),
1038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              NULL);
1048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderEncodings, POLICY_LEVEL_MANDATORY,
1058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, encodings, NULL);
1068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderAlternateURLs, POLICY_LEVEL_MANDATORY,
1078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_SCOPE_USER, default_alternate_urls_.DeepCopy(), NULL);
1088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderSearchTermsReplacementKey,
1098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
1108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              base::Value::CreateStringValue(kReplacementKey), NULL);
1118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderImageURL,
1128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
1138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              base::Value::CreateStringValue(kImageURL), NULL);
1148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderImageURLPostParams,
1158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
1168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              base::Value::CreateStringValue(kImageParams), NULL);
1178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy->Set(key::kDefaultSearchProviderNewTabURL,
1188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
1198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)              base::Value::CreateStringValue(kNewTabURL), NULL);
1208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
1218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the policy for default search is valid, i.e. there's a
1238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// search URL, that all the elements have been given proper defaults.
1248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, MinimallyDefined) {
1258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  PolicyMap policy;
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  policy.Set(key::kDefaultSearchProviderEnabled,
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             POLICY_LEVEL_MANDATORY,
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             POLICY_SCOPE_USER,
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(true),
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             NULL);
1318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
1328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)             POLICY_SCOPE_USER, base::Value::CreateStringValue(kSearchURL),
1338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)             NULL);
1348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  UpdateProviderPolicy(policy);
1358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::Value* value = NULL;
1378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value));
1388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value));
1398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value));
1415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(base::StringValue(kHostName).Equals(value));
1428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value));
1445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(base::StringValue(kHostName).Equals(value));
1458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL,
1478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                               &value));
1488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value));
1518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value));
1548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL,
1578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                               &value));
1588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs,
1618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                             &value));
1628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::ListValue().Equals(value));
1638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(
1658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      store_->GetValue(prefs::kDefaultSearchProviderSearchTermsReplacementKey,
1668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      &value));
1678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, &value));
1708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
1738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSearchURLPostParams, &value));
1748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
1778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSuggestURLPostParams, &value));
1788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
1818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderInstantURLPostParams, &value));
1828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
1858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderImageURLPostParams, &value));
1868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
1898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderNewTabURL, &value));
1908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
1918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
1928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that for a fully defined search policy, all elements have been
1948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// read properly.
1958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, FullyDefined) {
1968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  PolicyMap policy;
1978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  BuildDefaultSearchPolicy(&policy);
1988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  UpdateProviderPolicy(policy);
1998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::Value* value = NULL;
2018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value));
2028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value));
2038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value));
2058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kName).Equals(value));
2068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value));
2088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kKeyword).Equals(value));
2098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL,
2118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                               &value));
2128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kSuggestURL).Equals(value));
2138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value));
2158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kIconURL).Equals(value));
2168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value));
2188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue("UTF-16;UTF-8").Equals(value));
2198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
2218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderAlternateURLs, &value));
2228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(default_alternate_urls_.Equals(value));
2238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(
2258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      store_->GetValue(prefs::kDefaultSearchProviderSearchTermsReplacementKey,
2268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      &value));
2278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(kReplacementKey).Equals(value));
2288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, &value));
2308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string(kImageURL)).Equals(value));
2318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURLPostParams,
2338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                               &value));
2348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string(kImageParams)).Equals(value));
2358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
2378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSearchURLPostParams, &value));
2388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
2398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
2418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSuggestURLPostParams, &value));
2428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
2438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(
2458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderInstantURLPostParams, &value));
2468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::StringValue(std::string()).Equals(value));
2478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
2488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is missing, that no elements of the
2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present.
2518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, MissingUrl) {
2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  PolicyMap policy;
2538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  BuildDefaultSearchPolicy(&policy);
2548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy.Erase(key::kDefaultSearchProviderSearchURL);
2558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  UpdateProviderPolicy(policy);
2568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL));
2588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderName, NULL));
2598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, NULL));
2608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL));
2618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, NULL));
2628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, NULL));
2638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs,
2648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                                NULL));
2658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(
2668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSearchTermsReplacementKey, NULL));
2678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, NULL));
2688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(
2698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderImageURLPostParams, NULL));
2708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL, NULL));
2718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderNewTabURL, NULL));
2728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
2738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is invalid, that no elements of the
2758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present.
2768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, Invalid) {
2778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  PolicyMap policy;
2788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  BuildDefaultSearchPolicy(&policy);
2798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const char bad_search_url[] = "http://test.com/noSearchTerms";
2808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  policy.Set(key::kDefaultSearchProviderSearchURL, POLICY_LEVEL_MANDATORY,
2818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)             POLICY_SCOPE_USER,
2828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)             base::Value::CreateStringValue(bad_search_url), NULL);
2838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  UpdateProviderPolicy(policy);
2848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL));
2868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderName, NULL));
2878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, NULL));
2888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL));
2898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, NULL));
2908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, NULL));
2918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs,
2928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                                NULL));
2938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(
2948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderSearchTermsReplacementKey, NULL));
2958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, NULL));
2968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(
2978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs::kDefaultSearchProviderImageURLPostParams, NULL));
2988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL, NULL));
2998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderNewTabURL, NULL));
3008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
3018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
3028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is invalid, that no elements of the
3038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present.
3048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, Disabled) {
3058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  PolicyMap policy;
306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  policy.Set(key::kDefaultSearchProviderEnabled,
307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             POLICY_LEVEL_MANDATORY,
308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             POLICY_SCOPE_USER,
309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(false),
310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             NULL);
3118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  UpdateProviderPolicy(policy);
3128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
3138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::Value* value = NULL;
3148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEnabled, &value));
3158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  base::FundamentalValue expected_enabled(false);
3168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_enabled, value));
3178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value));
3188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  base::StringValue expected_search_url((std::string()));
3198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(base::Value::Equals(&expected_search_url, value));
3208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
3218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
3225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that for a fully defined search policy, all elements have been
3235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// read properly into the dictionary pref.
3245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPref) {
3255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  PolicyMap policy;
3265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  BuildDefaultSearchPolicy(&policy);
3275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  UpdateProviderPolicy(policy);
3285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::Value* temp = NULL;
3305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::DictionaryValue* dictionary;
3315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  std::string value;
3325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::ListValue* list_value;
3335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp));
3345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  temp->GetAsDictionary(&dictionary);
3355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value));
3375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kSearchURL, value);
3385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value));
3395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kName, value);
3405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value));
3415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kKeyword, value);
3425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
3445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value));
3455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kSuggestURL, value);
3465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value));
3475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kIconURL, value);
3485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  base::ListValue encodings;
3505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  encodings.AppendString("UTF-16");
3515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  encodings.AppendString("UTF-8");
3525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
3545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value));
3555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(encodings.Equals(list_value));
3565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
3585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value));
3595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(default_alternate_urls_.Equals(list_value));
3605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(
3625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      DefaultSearchManager::kSearchTermsReplacementKey, &value));
3635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kReplacementKey, value);
3645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value));
3665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kImageURL, value);
3675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
3695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value));
3705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kImageParams, value);
3715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams,
3735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    &value));
3745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
3755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(
3775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      DefaultSearchManager::kSuggestionsURLPostParams, &value));
3785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
3795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams,
3815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    &value));
3825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
3835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
3845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that disabling default search is properly reflected the dictionary
3865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// pref.
3875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefDSEDisabled) {
3885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  PolicyMap policy;
3895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  policy.Set(key::kDefaultSearchProviderEnabled,
3905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_LEVEL_MANDATORY,
3915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_SCOPE_USER,
392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(false),
3935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             NULL);
3945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  UpdateProviderPolicy(policy);
3955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::Value* temp = NULL;
3965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::DictionaryValue* dictionary;
3975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp));
3985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  temp->GetAsDictionary(&dictionary);
3995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  bool disabled = false;
4005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetBoolean(DefaultSearchManager::kDisabledByPolicy,
4015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                     &disabled));
4025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(disabled);
4035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
4045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that if the policy for default search is valid, i.e. there's a
4065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// search URL, that all the elements have been given proper defaults.
4075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefMinimallyDefined) {
4085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  PolicyMap policy;
4095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  policy.Set(key::kDefaultSearchProviderEnabled,
4105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_LEVEL_MANDATORY,
4115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_SCOPE_USER,
412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(true),
4135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             NULL);
4145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  policy.Set(key::kDefaultSearchProviderSearchURL,
4155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_LEVEL_MANDATORY,
4165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_SCOPE_USER,
4175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             base::Value::CreateStringValue(kSearchURL),
4185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             NULL);
4195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  UpdateProviderPolicy(policy);
4205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::Value* temp = NULL;
4225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::DictionaryValue* dictionary;
4235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  std::string value;
4245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::ListValue* list_value;
4255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp));
4265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  temp->GetAsDictionary(&dictionary);
4275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Name and keyword should be derived from host.
4295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value));
4305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kSearchURL, value);
4315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value));
4325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kHostName, value);
4335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value));
4345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kHostName, value);
4355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Everything else should be set to the default value.
4375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
4385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value));
4395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value));
4415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
4435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value));
4445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(base::ListValue().Equals(list_value));
4455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
4465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value));
4475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(base::ListValue().Equals(list_value));
4485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(
4495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      DefaultSearchManager::kSearchTermsReplacementKey, &value));
4505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value));
4525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(
4545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value));
4555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams,
4575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    &value));
4585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(
4605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      DefaultSearchManager::kSuggestionsURLPostParams, &value));
4615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams,
4635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    &value));
4645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(std::string(), value);
4655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
4665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that setting a file URL as the default search is reflected properly in
4685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// the dictionary pref.
4695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefFileURL) {
4705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  PolicyMap policy;
4715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  policy.Set(key::kDefaultSearchProviderEnabled,
4725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_LEVEL_MANDATORY,
4735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_SCOPE_USER,
474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(true),
4755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             NULL);
4765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  policy.Set(key::kDefaultSearchProviderSearchURL,
4775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_LEVEL_MANDATORY,
4785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             POLICY_SCOPE_USER,
4795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             base::Value::CreateStringValue(kFileSearchURL),
4805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu             NULL);
4815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  UpdateProviderPolicy(policy);
4825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::Value* temp = NULL;
4845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const base::DictionaryValue* dictionary;
4855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  std::string value;
4865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp));
4885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  temp->GetAsDictionary(&dictionary);
4895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
4905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value));
4915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(kFileSearchURL, value);
4925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value));
4935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ("_", value);
4945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value));
4955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ("_", value);
4965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
4978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}  // namespace policy
498