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); 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderSearchURL, 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kSearchURL), 948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL); 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderName, 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kName), 998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL); 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderKeyword, 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kKeyword), 1048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL); 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderSuggestURL, 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kSuggestURL), 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderIconURL, 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kIconURL), 1148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL); 1158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderEncodings, POLICY_LEVEL_MANDATORY, 1168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) POLICY_SCOPE_USER, encodings, NULL); 1178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderAlternateURLs, POLICY_LEVEL_MANDATORY, 1188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) POLICY_SCOPE_USER, default_alternate_urls_.DeepCopy(), NULL); 1198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderSearchTermsReplacementKey, 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kReplacementKey), 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderImageURL, 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kImageURL), 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderImageURLPostParams, 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kImageParams), 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy->Set(key::kDefaultSearchProviderNewTabURL, 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kNewTabURL), 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 1408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the policy for default search is valid, i.e. there's a 1428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// search URL, that all the elements have been given proper defaults. 1438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, MinimallyDefined) { 1448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PolicyMap policy; 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch policy.Set(key::kDefaultSearchProviderEnabled, 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch POLICY_LEVEL_MANDATORY, 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch POLICY_SCOPE_USER, 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(true), 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch NULL); 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy.Set(key::kDefaultSearchProviderSearchURL, 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_SCOPE_USER, 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kSearchURL), 1548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL); 1558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) UpdateProviderPolicy(policy); 1568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::Value* value = NULL; 1588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); 1598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value)); 1608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value)); 1625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(base::StringValue(kHostName).Equals(value)); 1638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value)); 1655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(base::StringValue(kHostName).Equals(value)); 1668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, 1688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 1698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value)); 1728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value)); 1758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL, 1788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 1798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs, 1828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 1838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::ListValue().Equals(value)); 1848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE( 1868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) store_->GetValue(prefs::kDefaultSearchProviderSearchTermsReplacementKey, 1878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 1888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, &value)); 1918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 1948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSearchURLPostParams, &value)); 1958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 1968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 1988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSuggestURLPostParams, &value)); 1998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderInstantURLPostParams, &value)); 2038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderImageURLPostParams, &value)); 2078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderNewTabURL, &value)); 2118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 2138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that for a fully defined search policy, all elements have been 2158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// read properly. 2168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, FullyDefined) { 2178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PolicyMap policy; 2188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) BuildDefaultSearchPolicy(&policy); 2198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) UpdateProviderPolicy(policy); 2208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::Value* value = NULL; 2228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); 2238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kSearchURL).Equals(value)); 2248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderName, &value)); 2268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kName).Equals(value)); 2278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, &value)); 2298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kKeyword).Equals(value)); 2308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, 2328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 2338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kSuggestURL).Equals(value)); 2348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, &value)); 2368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kIconURL).Equals(value)); 2378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, &value)); 2398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue("UTF-16;UTF-8").Equals(value)); 2408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderAlternateURLs, &value)); 2438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(default_alternate_urls_.Equals(value)); 2448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE( 2468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) store_->GetValue(prefs::kDefaultSearchProviderSearchTermsReplacementKey, 2478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 2488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(kReplacementKey).Equals(value)); 2498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, &value)); 2518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string(kImageURL)).Equals(value)); 2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderImageURLPostParams, 2548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) &value)); 2558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string(kImageParams)).Equals(value)); 2568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSearchURLPostParams, &value)); 2598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSuggestURLPostParams, &value)); 2638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue( 2668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderInstantURLPostParams, &value)); 2678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::StringValue(std::string()).Equals(value)); 2688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 2698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is missing, that no elements of the 2718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present. 2728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, MissingUrl) { 2738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PolicyMap policy; 2748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) BuildDefaultSearchPolicy(&policy); 2758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy.Erase(key::kDefaultSearchProviderSearchURL); 2768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) UpdateProviderPolicy(policy); 2778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL)); 2798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderName, NULL)); 2808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, NULL)); 2818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL)); 2828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, NULL)); 2838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, NULL)); 2848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs, 2858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL)); 2868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue( 2878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSearchTermsReplacementKey, NULL)); 2888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, NULL)); 2898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue( 2908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderImageURLPostParams, NULL)); 2918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL, NULL)); 2928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderNewTabURL, NULL)); 2938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 2948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is invalid, that no elements of the 2968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present. 2978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, Invalid) { 2988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PolicyMap policy; 2998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) BuildDefaultSearchPolicy(&policy); 3008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char bad_search_url[] = "http://test.com/noSearchTerms"; 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy.Set(key::kDefaultSearchProviderSearchURL, 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) POLICY_LEVEL_MANDATORY, 3038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) POLICY_SCOPE_USER, 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(bad_search_url), 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 3068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) UpdateProviderPolicy(policy); 3078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 3088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL)); 3098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderName, NULL)); 3108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderKeyword, NULL)); 3118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL)); 3128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderIconURL, NULL)); 3138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderEncodings, NULL)); 3148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderAlternateURLs, 3158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NULL)); 3168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue( 3178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderSearchTermsReplacementKey, NULL)); 3188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderImageURL, NULL)); 3198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue( 3208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kDefaultSearchProviderImageURLPostParams, NULL)); 3218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderInstantURL, NULL)); 3228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kDefaultSearchProviderNewTabURL, NULL)); 3238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 3248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 3258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Checks that if the default search policy is invalid, that no elements of the 3268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// default search policy will be present. 3278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(DefaultSearchPolicyHandlerTest, Disabled) { 3288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PolicyMap policy; 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch policy.Set(key::kDefaultSearchProviderEnabled, 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch POLICY_LEVEL_MANDATORY, 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch POLICY_SCOPE_USER, 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch NULL); 3348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) UpdateProviderPolicy(policy); 3358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 3368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const base::Value* value = NULL; 3378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderEnabled, &value)); 3388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::FundamentalValue expected_enabled(false); 3398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::Value::Equals(&expected_enabled, value)); 3408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kDefaultSearchProviderSearchURL, &value)); 3418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::StringValue expected_search_url((std::string())); 3428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(base::Value::Equals(&expected_search_url, value)); 3438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 3448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 3455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that for a fully defined search policy, all elements have been 3465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// read properly into the dictionary pref. 3475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPref) { 3485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu PolicyMap policy; 3495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu BuildDefaultSearchPolicy(&policy); 3505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UpdateProviderPolicy(policy); 3515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Value* temp = NULL; 3535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::DictionaryValue* dictionary; 3545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string value; 3555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::ListValue* list_value; 3565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); 3575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu temp->GetAsDictionary(&dictionary); 3585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); 3605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kSearchURL, value); 3615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); 3625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kName, value); 3635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); 3645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kKeyword, value); 3655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 3675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value)); 3685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kSuggestURL, value); 3695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value)); 3705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kIconURL, value); 3715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::ListValue encodings; 3735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu encodings.AppendString("UTF-16"); 3745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu encodings.AppendString("UTF-8"); 3755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 3775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value)); 3785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(encodings.Equals(list_value)); 3795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 3815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value)); 3825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(default_alternate_urls_.Equals(list_value)); 3835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString( 3855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DefaultSearchManager::kSearchTermsReplacementKey, &value)); 3865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kReplacementKey, value); 3875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value)); 3895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kImageURL, value); 3905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 3925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value)); 3935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kImageParams, value); 3945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams, 3965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &value)); 3975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 3985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 3995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString( 4005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DefaultSearchManager::kSuggestionsURLPostParams, &value)); 4015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams, 4045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &value)); 4055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 4075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that disabling default search is properly reflected the dictionary 4095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// pref. 4105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefDSEDisabled) { 4115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu PolicyMap policy; 4125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu policy.Set(key::kDefaultSearchProviderEnabled, 4135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_LEVEL_MANDATORY, 4145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_SCOPE_USER, 415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 4165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NULL); 4175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UpdateProviderPolicy(policy); 4185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Value* temp = NULL; 4195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::DictionaryValue* dictionary; 4205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); 4215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu temp->GetAsDictionary(&dictionary); 4225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool disabled = false; 4235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetBoolean(DefaultSearchManager::kDisabledByPolicy, 4245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &disabled)); 4255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(disabled); 4265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 4275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that if the policy for default search is valid, i.e. there's a 4295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// search URL, that all the elements have been given proper defaults. 4305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefMinimallyDefined) { 4315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu PolicyMap policy; 4325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu policy.Set(key::kDefaultSearchProviderEnabled, 4335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_LEVEL_MANDATORY, 4345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_SCOPE_USER, 435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(true), 4365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NULL); 4375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu policy.Set(key::kDefaultSearchProviderSearchURL, 4385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_LEVEL_MANDATORY, 4395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_SCOPE_USER, 4405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kSearchURL), 4415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NULL); 4425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UpdateProviderPolicy(policy); 4435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Value* temp = NULL; 4455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::DictionaryValue* dictionary; 4465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string value; 4475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::ListValue* list_value; 4485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); 4495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu temp->GetAsDictionary(&dictionary); 4505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Name and keyword should be derived from host. 4525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); 4535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kSearchURL, value); 4545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); 4555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kHostName, value); 4565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); 4575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kHostName, value); 4585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Everything else should be set to the default value. 4605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 4615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetString(DefaultSearchManager::kSuggestionsURL, &value)); 4625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kFaviconURL, &value)); 4645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 4665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetList(DefaultSearchManager::kInputEncodings, &list_value)); 4675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(base::ListValue().Equals(list_value)); 4685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 4695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetList(DefaultSearchManager::kAlternateURLs, &list_value)); 4705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(base::ListValue().Equals(list_value)); 4715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString( 4725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DefaultSearchManager::kSearchTermsReplacementKey, &value)); 4735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kImageURL, &value)); 4755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE( 4775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dictionary->GetString(DefaultSearchManager::kImageURLPostParams, &value)); 4785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kSearchURLPostParams, 4805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &value)); 4815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString( 4835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DefaultSearchManager::kSuggestionsURLPostParams, &value)); 4845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kInstantURLPostParams, 4865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &value)); 4875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(std::string(), value); 4885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 4895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Checks that setting a file URL as the default search is reflected properly in 4915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// the dictionary pref. 4925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(DefaultSearchPolicyHandlerTest, DictionaryPrefFileURL) { 4935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu PolicyMap policy; 4945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu policy.Set(key::kDefaultSearchProviderEnabled, 4955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_LEVEL_MANDATORY, 4965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_SCOPE_USER, 497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(true), 4985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NULL); 4995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu policy.Set(key::kDefaultSearchProviderSearchURL, 5005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_LEVEL_MANDATORY, 5015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu POLICY_SCOPE_USER, 5025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(kFileSearchURL), 5035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NULL); 5045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UpdateProviderPolicy(policy); 5055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 5065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Value* temp = NULL; 5075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::DictionaryValue* dictionary; 5085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string value; 5095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 5105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(store_->GetValue(kDefaultSearchProviderData, &temp)); 5115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu temp->GetAsDictionary(&dictionary); 5125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 5135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kURL, &value)); 5145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ(kFileSearchURL, value); 5155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kShortName, &value)); 5165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ("_", value); 5175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(dictionary->GetString(DefaultSearchManager::kKeyword, &value)); 5185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_EQ("_", value); 5195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 5208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} // namespace policy 521