|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "base/files/file_util.h" | 
|  | #include "base/path_service.h" | 
|  | #include "build/build_config.h" | 
|  | #include "chrome/browser/profiles/profile.h" | 
|  | #include "chrome/browser/ui/browser.h" | 
|  | #include "chrome/common/chrome_constants.h" | 
|  | #include "chrome/common/chrome_paths.h" | 
|  | #include "chrome/common/pref_names.h" | 
|  | #include "chrome/test/base/in_process_browser_test.h" | 
|  | #include "chrome/test/base/testing_profile.h" | 
|  | #include "components/prefs/pref_service.h" | 
|  |  | 
|  | class PrefsTabHelperBrowserTest : public InProcessBrowserTest { | 
|  | protected: | 
|  | virtual base::FilePath GetPreferencesFilePath() { | 
|  | base::FilePath test_data_directory; | 
|  | base::PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory); | 
|  | return test_data_directory | 
|  | .AppendASCII("profiles") | 
|  | .AppendASCII("web_prefs") | 
|  | .AppendASCII("Default") | 
|  | .Append(chrome::kPreferencesFilename); | 
|  | } | 
|  |  | 
|  | bool SetUpUserDataDirectory() override { | 
|  | base::FilePath user_data_directory; | 
|  | base::PathService::Get(chrome::DIR_USER_DATA, &user_data_directory); | 
|  | base::FilePath default_profile = | 
|  | user_data_directory.AppendASCII(TestingProfile::kTestUserProfileDir); | 
|  | if (!base::CreateDirectory(default_profile)) { | 
|  | LOG(ERROR) << "Can't create " << default_profile.MaybeAsASCII(); | 
|  | return false; | 
|  | } | 
|  | base::FilePath pref_file = GetPreferencesFilePath(); | 
|  | if (!base::PathExists(pref_file)) { | 
|  | LOG(ERROR) << "Doesn't exist " << pref_file.MaybeAsASCII(); | 
|  | return false; | 
|  | } | 
|  | base::FilePath default_pref_file = | 
|  | default_profile.Append(chrome::kPreferencesFilename); | 
|  | if (!base::CopyFile(pref_file, default_pref_file)) { | 
|  | LOG(ERROR) << "Copy error from " << pref_file.MaybeAsASCII() | 
|  | << " to " << default_pref_file.MaybeAsASCII(); | 
|  | return false; | 
|  | } | 
|  |  | 
|  | #if defined(OS_WIN) | 
|  | // Make the copy writable.  On POSIX we assume the umask allows files | 
|  | // we create to be writable. | 
|  | if (!::SetFileAttributesW(default_pref_file.value().c_str(), | 
|  | FILE_ATTRIBUTE_NORMAL)) return false; | 
|  | #endif | 
|  | return true; | 
|  | } | 
|  | }; | 
|  |  | 
|  | // Tests that a sampling of web prefs are registered and ones with values in the | 
|  | // test user preferences file take on those values. | 
|  | IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest, WebPrefs) { | 
|  | PrefService* prefs = browser()->profile()->GetPrefs(); | 
|  |  | 
|  | EXPECT_TRUE(prefs->FindPreference( | 
|  | prefs::kWebKitCursiveFontFamily)->IsDefaultValue()); | 
|  | EXPECT_TRUE(prefs->FindPreference( | 
|  | prefs::kWebKitSerifFontFamily)->IsDefaultValue()); | 
|  | EXPECT_TRUE(prefs->FindPreference( | 
|  | prefs::kWebKitSerifFontFamilyJapanese)->IsDefaultValue()); | 
|  |  | 
|  | EXPECT_EQ("windows-1251", prefs->GetString(prefs::kDefaultCharset)); | 
|  | EXPECT_EQ(16, prefs->GetInteger(prefs::kWebKitDefaultFontSize)); | 
|  | EXPECT_EQ("Noto Sans CJK KR", | 
|  | prefs->GetString(prefs::kWebKitStandardFontFamilyKorean)); | 
|  | EXPECT_EQ("Tinos", prefs->GetString(prefs::kWebKitStandardFontFamily)); | 
|  | EXPECT_EQ("DejaVu Sans", prefs->GetString(prefs::kWebKitSansSerifFontFamily)); | 
|  | }; | 
|  |  | 
|  |  |