15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/content_settings_policy_provider.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/auto_reset.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/content_settings_mock_observer.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/content_settings_utils.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_pref_service_syncable.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/browser/content_settings_rule.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::_; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content_settings { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::vector<Rule> Rules; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PolicyProviderTest : public testing::Test { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProviderTest() 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ui_thread_(BrowserThread::UI, &message_loop_) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(markusheintz): Check if it's possible to derive the provider class 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // from NonThreadSafe and to use native thread identifiers instead of 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BrowserThread IDs. Then we could get rid of the message_loop and ui_thread 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // fields. 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop message_loop_; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread ui_thread_; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, DefaultGeolocationContentSetting) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Rules rules; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<RuleIterator> rule_iterator( 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.GetRuleIterator( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_GEOLOCATION, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(), 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rule_iterator->HasNext()); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Change the managed value of the default geolocation setting 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedDefaultGeolocationSetting, 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::FundamentalValue(CONTENT_SETTING_BLOCK)); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rule_iterator.reset( 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.GetRuleIterator( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_GEOLOCATION, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(), 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rule_iterator->HasNext()); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Rule rule = rule_iterator->Next(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rule_iterator->HasNext()); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ContentSettingsPattern::Wildcard(), rule.primary_pattern); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ContentSettingsPattern::Wildcard(), rule.secondary_pattern); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_BLOCK, ValueToContentSetting(rule.value.get())); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, ManagedDefaultContentSettings) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedDefaultPluginsSetting, 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::FundamentalValue(CONTENT_SETTING_BLOCK)); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<RuleIterator> rule_iterator( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.GetRuleIterator( 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_PLUGINS, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(), 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rule_iterator->HasNext()); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Rule rule = rule_iterator->Next(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rule_iterator->HasNext()); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ContentSettingsPattern::Wildcard(), rule.primary_pattern); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ContentSettingsPattern::Wildcard(), rule.secondary_pattern); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_BLOCK, ValueToContentSetting(rule.value.get())); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When a default-content-setting is set to a managed setting a 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CONTENT_SETTINGS_CHANGED notification should be fired. The same should happen 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// if the managed setting is removed. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, ObserveManagedSettingsChange) { 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockObserver mock_observer; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(mock_observer, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnContentSettingChanged(_, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_DEFAULT, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "")); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.AddObserver(&mock_observer); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the managed default-content-setting. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedDefaultImagesSetting, 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::FundamentalValue(CONTENT_SETTING_BLOCK)); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::testing::Mock::VerifyAndClearExpectations(&mock_observer); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(mock_observer, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnContentSettingChanged(_, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_DEFAULT, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "")); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove the managed default-content-setting. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RemoveManagedPref(prefs::kManagedDefaultImagesSetting); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, GettingManagedContentSettings) { 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* value = new base::ListValue(); 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->Append(new base::StringValue("[*.]google.com")); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedImagesBlockedForUrls, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsPattern yt_url_pattern = 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsPattern::FromString("www.youtube.com"); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL youtube_url("http://www.youtube.com"); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL google_url("http://mail.google.com"); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_DEFAULT, 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSetting(&provider, 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_COOKIES, 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSettingValue(&provider, 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_COOKIES, 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_BLOCK, 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSetting(&provider, 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_IMAGES, 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::Value> value_ptr( 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSettingValue(&provider, 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_IMAGES, 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int int_value = -1; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value_ptr->GetAsInteger(&int_value); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_BLOCK, IntToContentSetting(int_value)); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The PolicyProvider does not allow setting content settings as they are 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // enforced via policies and not set by the user or extension. So a call to 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SetWebsiteSetting does nothing. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::Value> value_block( 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::FundamentalValue(CONTENT_SETTING_BLOCK)); 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool owned = provider.SetWebsiteSetting(yt_url_pattern, 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) yt_url_pattern, 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_COOKIES, 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) value_block.get()); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(owned); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_DEFAULT, 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSetting(&provider, 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_COOKIES, 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, ResourceIdentifier) { 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* value = new base::ListValue(); 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->Append(new base::StringValue("[*.]google.com")); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedPluginsAllowedForUrls, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL youtube_url("http://www.youtube.com"); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL google_url("http://mail.google.com"); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_DEFAULT, 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetContentSetting( 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &provider, youtube_url, youtube_url, 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_PLUGINS, "someplugin", false)); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // There is currently no policy support for resource content settings. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resource identifiers are simply ignored by the PolicyProvider. 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_ALLOW, 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSetting(&provider, 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_PLUGINS, 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CONTENT_SETTING_DEFAULT, 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetContentSetting( 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &provider, google_url, google_url, 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_PLUGINS, "someplugin", false)); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PolicyProviderTest, AutoSelectCertificateList) { 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyProvider provider(prefs); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL google_url("https://mail.google.com"); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tests the default setting for auto selecting certificates 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ( 253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NULL, 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSettingValue(&provider, 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the content settings pattern list for origins to auto select 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // certificates. 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string pattern_str("\"pattern\":\"[*.]google.com\""); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string filter_str("\"filter\":{\"ISSUER\":{\"CN\":\"issuer name\"}}"); 2655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* value = new base::ListValue(); 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->Append( 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue("{" + pattern_str + "," + filter_str + "}")); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetManagedPref(prefs::kManagedAutoSelectCertificateForUrls, 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL youtube_url("https://www.youtube.com"); 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ( 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NULL, 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSettingValue(&provider, 274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) youtube_url, 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 2795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::Value> cert_filter( 280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContentSettingValue(&provider, 281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) google_url, 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false)); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(base::Value::TYPE_DICTIONARY, cert_filter->GetType()); 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* dict_value = 2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static_cast<base::DictionaryValue*>(cert_filter.get()); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string actual_common_name; 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(dict_value->GetString("ISSUER.CN", &actual_common_name)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("issuer name", actual_common_name); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider.ShutdownOnUIThread(); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content_settings 297