chrome_pref_service_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/command_line.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/file_util.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/path_service.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/utf_string_conversions.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/policy/configuration_policy_pref_store.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/policy/mock_configuration_policy_provider.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/browser_prefs.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/command_line_pref_store.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/pref_service_mock_builder.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/scoped_user_pref_update.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/chrome_paths.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/chrome_switches.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/chrome_render_view_host_test_harness.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_pref_service_syncable.h" 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_profile.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/user_prefs/pref_registry_syncable.h" 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_browser_thread.h" 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/web_contents_tester.h" 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/test/data/resource.h" 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "webkit/glue/webpreferences.h" 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using content::BrowserThread; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using content::WebContentsTester; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(ChromePrefServiceTest, UpdateCommandLinePrefStore) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSimple prefs; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.registry()->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, false); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Check to make sure the value is as expected. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PrefService::Preference* pref = 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.FindPreference(prefs::kCloudPrintProxyEnabled); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(pref); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Value* value = pref->GetValue(); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(value); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(Value::TYPE_BOOLEAN, value->GetType()); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool actual_bool_value = true; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(value->GetAsBoolean(&actual_bool_value)); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(actual_bool_value); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Change the command line. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine cmd_line(CommandLine::NO_PROGRAM); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cmd_line.AppendSwitch(switches::kEnableCloudPrintProxy); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Call UpdateCommandLinePrefStore and check to see if the value has changed. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.UpdateCommandLinePrefStore(new CommandLinePrefStore(&cmd_line)); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref = prefs.FindPreference(prefs::kCloudPrintProxyEnabled); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(pref); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) value = pref->GetValue(); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(value); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(Value::TYPE_BOOLEAN, value->GetType()); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) actual_bool_value = false; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(value->GetAsBoolean(&actual_bool_value)); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(actual_bool_value); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ChromePrefServiceUserFilePrefsTest : public testing::Test { 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() { 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_dir_)); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data_dir_ = data_dir_.AppendASCII("pref_service"); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(file_util::PathExists(data_dir_)); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ClearListValue(PrefService* prefs, const char* key) { 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ListPrefUpdate updater(prefs, key); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) updater->Clear(); 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ClearDictionaryValue(PrefService* prefs, const char* key) { 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DictionaryPrefUpdate updater(prefs, key); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) updater->Clear(); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The path to temporary directory used to contain the test operations. 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The path to the directory where the test data is stored. 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath data_dir_; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A message loop that we can use as the file thread message loop. 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MessageLoop message_loop_; 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verifies that ListValue and DictionaryValue pref with non emtpy default 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// preserves its empty value. 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(ChromePrefServiceUserFilePrefsTest, PreserveEmptyValue) { 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath pref_file = temp_dir_.path().AppendASCII("write.json"); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(file_util::CopyFile( 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data_dir_.AppendASCII("read.need_empty_value.json"), 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_file)); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefServiceMockBuilder builder; 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) builder.WithUserFilePrefs(pref_file, message_loop_.message_loop_proxy()); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<user_prefs::PrefRegistrySyncable> registry( 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new user_prefs::PrefRegistrySyncable); 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs(builder.CreateSyncable(registry)); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Register testing prefs. 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterListPref("list", 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDictionaryPref( 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "dict", 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ListValue* non_empty_list = new base::ListValue; 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) non_empty_list->Append(base::Value::CreateStringValue("test")); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterListPref("list_needs_empty_value", 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) non_empty_list, 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::DictionaryValue* non_empty_dict = new base::DictionaryValue; 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) non_empty_dict->SetString("dummy", "whatever"); 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDictionaryPref( 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "dict_needs_empty_value", 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) non_empty_dict, 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set all testing prefs to empty. 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearListValue(prefs.get(), "list"); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearListValue(prefs.get(), "list_needs_empty_value"); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearDictionaryValue(prefs.get(), "dict"); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearDictionaryValue(prefs.get(), "dict_needs_empty_value"); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Write to file. 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs->CommitPendingWrite(); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) message_loop_.RunUntilIdle(); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Compare to expected output. 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath golden_output_file = 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data_dir_.AppendASCII("write.golden.need_empty_value.json"); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(file_util::PathExists(golden_output_file)); 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(file_util::TextContentsEqual(golden_output_file, pref_file)); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ChromePrefServiceWebKitPrefs : public ChromeRenderViewHostTestHarness { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ChromePrefServiceWebKitPrefs() 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : ui_thread_(BrowserThread::UI, &message_loop_) { 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() { 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ChromeRenderViewHostTestHarness::SetUp(); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Supply our own profile so we use the correct profile data. The test 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // harness is not supposed to overwrite a profile if it's already created. 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set some (WebKit) user preferences. 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* pref_services = 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile()->GetTestingPrefService(); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(TOOLKIT_GTK) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref(prefs::kUsesSystemTheme, 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateBooleanValue(false)); 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref(prefs::kDefaultCharset, 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateStringValue("utf8")); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref(prefs::kWebKitDefaultFontSize, 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateIntegerValue(20)); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref(prefs::kWebKitTextAreasAreResizable, 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateBooleanValue(false)); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref(prefs::kWebKitUsesUniversalDetector, 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateBooleanValue(true)); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_services->SetUserPref("webkit.webprefs.foo", 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Value::CreateStringValue("bar")); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::TestBrowserThread ui_thread_; 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Tests to see that webkit preferences are properly loaded and copied over 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// to a WebPreferences object. 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(ChromePrefServiceWebKitPrefs, PrefsCopied) { 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebPreferences webkit_prefs = 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContentsTester::For(web_contents())->TestGetWebkitPrefs(); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These values have been overridden by the profile preferences. 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("UTF-8", webkit_prefs.default_encoding); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(20, webkit_prefs.default_font_size); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(webkit_prefs.text_areas_are_resizable); 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(webkit_prefs.uses_universal_detector); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These should still be the default values. 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_MACOSX) 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char kDefaultFont[] = "Times"; 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_CHROMEOS) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char kDefaultFont[] = "Tinos"; 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char kDefaultFont[] = "Times New Roman"; 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16(kDefaultFont), 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) webkit_prefs.standard_font_family_map[prefs::kWebKitCommonScript]); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(webkit_prefs.javascript_enabled); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 204