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