15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_constants.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefsTabHelperBrowserTest : public InProcessBrowserTest { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::FilePath GetPreferencesFilePath() { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_data_directory; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return test_data_directory 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("profiles") 238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) .AppendASCII("web_prefs") 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("Default") 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .Append(chrome::kPreferencesFilename); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool SetUpUserDataDirectory() OVERRIDE { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath user_data_directory; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PathService::Get(chrome::DIR_USER_DATA, &user_data_directory); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath default_profile = 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) user_data_directory.AppendASCII(TestingProfile::kTestUserProfileDir); 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!base::CreateDirectory(default_profile)) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LOG(ERROR) << "Can't create " << default_profile.MaybeAsASCII(); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::FilePath pref_file = GetPreferencesFilePath(); 388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) if (!base::PathExists(pref_file)) { 398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) LOG(ERROR) << "Doesn't exist " << pref_file.MaybeAsASCII(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath default_pref_file = 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_profile.Append(chrome::kPreferencesFilename); 448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) if (!base::CopyFile(pref_file, default_pref_file)) { 458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) LOG(ERROR) << "Copy error from " << pref_file.MaybeAsASCII() 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << " to " << default_pref_file.MaybeAsASCII(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make the copy writable. On POSIX we assume the umask allows files 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we create to be writable. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!::SetFileAttributesW(default_pref_file.value().c_str(), 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_ATTRIBUTE_NORMAL)) return false; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Tests that a sampling of web prefs are registered and ones with values in the 618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// test user preferences file take on those values. 628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest, WebPrefs) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = browser()->profile()->GetPrefs(); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(prefs->FindPreference( 668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kWebKitCursiveFontFamily)->IsDefaultValue()); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(prefs->FindPreference( 688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kWebKitSerifFontFamily)->IsDefaultValue()); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(prefs->FindPreference( 708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs::kWebKitSerifFontFamilyJapanese)->IsDefaultValue()); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("ISO-8859-1", prefs->GetString(prefs::kDefaultCharset)); 738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ(16, prefs->GetInteger(prefs::kWebKitDefaultFontSize)); 748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ("Nanum Gothic", 758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) prefs->GetString(prefs::kWebKitStandardFontFamilyKorean)); 768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ("Tinos", prefs->GetString(prefs::kWebKitStandardFontFamily)); 778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_EQ("DejaVu Sans", prefs->GetString(prefs::kWebKitSansSerifFontFamily)); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 81