1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/file_util.h"
6 #include "base/path_service.h"
7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/common/chrome_constants.h"
11 #include "chrome/common/chrome_paths.h"
12 #include "chrome/common/pref_names.h"
13 #include "chrome/test/base/in_process_browser_test.h"
14 #include "chrome/test/base/testing_profile.h"
16 class PrefsTabHelperBrowserTest
: public InProcessBrowserTest
{
18 virtual base::FilePath
GetPreferencesFilePath() {
19 base::FilePath test_data_directory
;
20 PathService::Get(chrome::DIR_TEST_DATA
, &test_data_directory
);
21 return test_data_directory
22 .AppendASCII("profiles")
23 .AppendASCII("web_prefs")
24 .AppendASCII("Default")
25 .Append(chrome::kPreferencesFilename
);
28 virtual bool SetUpUserDataDirectory() OVERRIDE
{
29 base::FilePath user_data_directory
;
30 PathService::Get(chrome::DIR_USER_DATA
, &user_data_directory
);
31 base::FilePath default_profile
=
32 user_data_directory
.AppendASCII(TestingProfile::kTestUserProfileDir
);
33 if (!base::CreateDirectory(default_profile
)) {
34 LOG(ERROR
) << "Can't create " << default_profile
.MaybeAsASCII();
37 base::FilePath pref_file
= GetPreferencesFilePath();
38 if (!base::PathExists(pref_file
)) {
39 LOG(ERROR
) << "Doesn't exist " << pref_file
.MaybeAsASCII();
42 base::FilePath default_pref_file
=
43 default_profile
.Append(chrome::kPreferencesFilename
);
44 if (!base::CopyFile(pref_file
, default_pref_file
)) {
45 LOG(ERROR
) << "Copy error from " << pref_file
.MaybeAsASCII()
46 << " to " << default_pref_file
.MaybeAsASCII();
51 // Make the copy writable. On POSIX we assume the umask allows files
52 // we create to be writable.
53 if (!::SetFileAttributesW(default_pref_file
.value().c_str(),
54 FILE_ATTRIBUTE_NORMAL
)) return false;
60 // Tests that a sampling of web prefs are registered and ones with values in the
61 // test user preferences file take on those values.
62 IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest
, WebPrefs
) {
63 PrefService
* prefs
= browser()->profile()->GetPrefs();
65 EXPECT_TRUE(prefs
->FindPreference(
66 prefs::kWebKitCursiveFontFamily
)->IsDefaultValue());
67 EXPECT_TRUE(prefs
->FindPreference(
68 prefs::kWebKitSerifFontFamily
)->IsDefaultValue());
69 EXPECT_TRUE(prefs
->FindPreference(
70 prefs::kWebKitSerifFontFamilyJapanese
)->IsDefaultValue());
72 EXPECT_EQ("ISO-8859-1", prefs
->GetString(prefs::kDefaultCharset
));
73 EXPECT_EQ(16, prefs
->GetInteger(prefs::kWebKitDefaultFontSize
));
74 EXPECT_EQ("Nanum Gothic",
75 prefs
->GetString(prefs::kWebKitStandardFontFamilyKorean
));
76 EXPECT_EQ("Tinos", prefs
->GetString(prefs::kWebKitStandardFontFamily
));
77 EXPECT_EQ("DejaVu Sans", prefs
->GetString(prefs::kWebKitSansSerifFontFamily
));