| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
| 7 #include "chrome/browser/prefs/pref_service.h" | 7 #include "chrome/browser/prefs/pref_service.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/common/chrome_constants.h" | 10 #include "chrome/common/chrome_constants.h" |
| 11 #include "chrome/common/chrome_paths.h" | 11 #include "chrome/common/chrome_paths.h" |
| 12 #include "chrome/common/pref_names.h" | 12 #include "chrome/common/pref_names.h" |
| 13 #include "chrome/test/base/in_process_browser_test.h" | 13 #include "chrome/test/base/in_process_browser_test.h" |
| 14 | 14 |
| 15 class PrefsTabHelperBrowserTest : public InProcessBrowserTest { | 15 class PrefsTabHelperBrowserTest : public InProcessBrowserTest { |
| 16 protected: | 16 protected: |
| 17 virtual bool SetUpUserDataDirectory() OVERRIDE { | 17 virtual FilePath GetPreferencesFilePath() { |
| 18 FilePath test_data_directory; | 18 FilePath test_data_directory; |
| 19 PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory); | 19 PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory); |
| 20 return test_data_directory |
| 21 .AppendASCII("profiles") |
| 22 .AppendASCII("webkit_global_migration") |
| 23 .AppendASCII("Default") |
| 24 .Append(chrome::kPreferencesFilename); |
| 25 } |
| 26 |
| 27 virtual bool SetUpUserDataDirectory() OVERRIDE { |
| 20 FilePath user_data_directory; | 28 FilePath user_data_directory; |
| 21 PathService::Get(chrome::DIR_USER_DATA, &user_data_directory); | 29 PathService::Get(chrome::DIR_USER_DATA, &user_data_directory); |
| 22 FilePath default_profile = user_data_directory.AppendASCII("Default"); | 30 FilePath default_profile = user_data_directory.AppendASCII("Default"); |
| 23 if (!file_util::CreateDirectory(default_profile)) { | 31 if (!file_util::CreateDirectory(default_profile)) { |
| 24 LOG(ERROR) << "Can't create " << default_profile.MaybeAsASCII(); | 32 LOG(ERROR) << "Can't create " << default_profile.MaybeAsASCII(); |
| 25 return false; | 33 return false; |
| 26 } | 34 } |
| 27 FilePath non_global_pref_file; | 35 FilePath non_global_pref_file = GetPreferencesFilePath(); |
| 28 non_global_pref_file = test_data_directory | |
| 29 .AppendASCII("profiles") | |
| 30 .AppendASCII("webkit_global_migration") | |
| 31 .AppendASCII("Default") | |
| 32 .Append(chrome::kPreferencesFilename); | |
| 33 if (!file_util::PathExists(non_global_pref_file)) { | 36 if (!file_util::PathExists(non_global_pref_file)) { |
| 34 LOG(ERROR) << "Doesn't exist " << non_global_pref_file.MaybeAsASCII(); | 37 LOG(ERROR) << "Doesn't exist " << non_global_pref_file.MaybeAsASCII(); |
| 35 return false; | 38 return false; |
| 36 } | 39 } |
| 37 FilePath default_pref_file = | 40 FilePath default_pref_file = |
| 38 default_profile.Append(chrome::kPreferencesFilename); | 41 default_profile.Append(chrome::kPreferencesFilename); |
| 39 if (!file_util::CopyFile(non_global_pref_file, default_pref_file)) { | 42 if (!file_util::CopyFile(non_global_pref_file, default_pref_file)) { |
| 40 LOG(ERROR) << "Copy error from " << non_global_pref_file.MaybeAsASCII() | 43 LOG(ERROR) << "Copy error from " << non_global_pref_file.MaybeAsASCII() |
| 41 << " to " << default_pref_file.MaybeAsASCII(); | 44 << " to " << default_pref_file.MaybeAsASCII(); |
| 42 return false; | 45 return false; |
| 43 } | 46 } |
| 44 | 47 |
| 45 #if defined(OS_WIN) | 48 #if defined(OS_WIN) |
| 46 // Make the copy writable. On POSIX we assume the umask allows files | 49 // Make the copy writable. On POSIX we assume the umask allows files |
| 47 // we create to be writable. | 50 // we create to be writable. |
| 48 if (!::SetFileAttributesW(default_pref_file.value().c_str(), | 51 if (!::SetFileAttributesW(default_pref_file.value().c_str(), |
| 49 FILE_ATTRIBUTE_NORMAL)) return false; | 52 FILE_ATTRIBUTE_NORMAL)) return false; |
| 50 #endif | 53 #endif |
| 51 return true; | 54 return true; |
| 52 } | 55 } |
| 53 }; | 56 }; |
| 54 | 57 |
| 58 // This tests migration like: |
| 59 // webkit.webprefs.default_charset -> webkit.webprefs.global.default_charset |
| 60 // This was needed for per-tab prefs, which have since been removed. So |
| 61 // eventually this migration will be replaced with the reverse migration. |
| 55 IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest, NonGlobalPrefsAreMigrated) { | 62 IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest, NonGlobalPrefsAreMigrated) { |
| 56 PrefService* prefs = browser()->profile()->GetPrefs(); | 63 PrefService* prefs = browser()->profile()->GetPrefs(); |
| 57 | 64 |
| 58 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kDefaultCharset)); | 65 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kDefaultCharset)); |
| 59 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitDefaultFontSize)); | 66 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitDefaultFontSize)); |
| 60 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitDefaultFixedFontSize)); | 67 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitDefaultFixedFontSize)); |
| 61 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitMinimumFontSize)); | 68 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitMinimumFontSize)); |
| 62 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitMinimumLogicalFontSize)); | 69 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitMinimumLogicalFontSize)); |
| 63 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitCursiveFontFamily)); | |
| 64 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitFantasyFontFamily)); | |
| 65 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitFixedFontFamily)); | |
| 66 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitSansSerifFontFamily)); | |
| 67 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitSerifFontFamily)); | |
| 68 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitStandardFontFamily)); | |
| 69 | 70 |
| 70 EXPECT_EQ("ISO-8859-1", prefs->GetString(prefs::kGlobalDefaultCharset)); | 71 EXPECT_EQ("ISO-8859-1", prefs->GetString(prefs::kGlobalDefaultCharset)); |
| 71 EXPECT_EQ(42, prefs->GetInteger(prefs::kWebKitGlobalDefaultFontSize)); | 72 EXPECT_EQ(42, prefs->GetInteger(prefs::kWebKitGlobalDefaultFontSize)); |
| 72 EXPECT_EQ(42, | 73 EXPECT_EQ(42, |
| 73 prefs->GetInteger(prefs::kWebKitGlobalDefaultFixedFontSize)); | 74 prefs->GetInteger(prefs::kWebKitGlobalDefaultFixedFontSize)); |
| 74 EXPECT_EQ(42, prefs->GetInteger(prefs::kWebKitGlobalMinimumFontSize)); | 75 EXPECT_EQ(42, prefs->GetInteger(prefs::kWebKitGlobalMinimumFontSize)); |
| 75 EXPECT_EQ(42, | 76 EXPECT_EQ(42, |
| 76 prefs->GetInteger(prefs::kWebKitGlobalMinimumLogicalFontSize)); | 77 prefs->GetInteger(prefs::kWebKitGlobalMinimumLogicalFontSize)); |
| 78 }; |
| 79 |
| 80 // This tests migration like: |
| 81 // webkit.webprefs.standard_font_family -> webkit.webprefs.fonts.standard.Zyyy |
| 82 // This migration moves the formerly "non-per-script" font prefs into the |
| 83 // per-script font maps, as the entry for "Common" script (Zyyy is the ISO 15924 |
| 84 // script code for the Common script). |
| 85 IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest, PrefsAreMigratedToFontMap) { |
| 86 PrefService* prefs = browser()->profile()->GetPrefs(); |
| 87 |
| 88 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldCursiveFontFamily)); |
| 89 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldFantasyFontFamily)); |
| 90 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldFixedFontFamily)); |
| 91 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldSansSerifFontFamily)); |
| 92 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldSerifFontFamily)); |
| 93 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitOldStandardFontFamily)); |
| 77 EXPECT_EQ("CursiveFontFamily", | 94 EXPECT_EQ("CursiveFontFamily", |
| 78 prefs->GetString(prefs::kWebKitGlobalCursiveFontFamily)); | 95 prefs->GetString(prefs::kWebKitCursiveFontFamily)); |
| 79 EXPECT_EQ("FantasyFontFamily", | 96 EXPECT_EQ("FantasyFontFamily", |
| 80 prefs->GetString(prefs::kWebKitGlobalFantasyFontFamily)); | 97 prefs->GetString(prefs::kWebKitFantasyFontFamily)); |
| 81 EXPECT_EQ("FixedFontFamily", | 98 EXPECT_EQ("FixedFontFamily", |
| 82 prefs->GetString(prefs::kWebKitGlobalFixedFontFamily)); | 99 prefs->GetString(prefs::kWebKitFixedFontFamily)); |
| 83 EXPECT_EQ("SansSerifFontFamily", | 100 EXPECT_EQ("SansSerifFontFamily", |
| 84 prefs->GetString(prefs::kWebKitGlobalSansSerifFontFamily)); | 101 prefs->GetString(prefs::kWebKitSansSerifFontFamily)); |
| 85 EXPECT_EQ("SerifFontFamily", | 102 EXPECT_EQ("SerifFontFamily", |
| 86 prefs->GetString(prefs::kWebKitGlobalSerifFontFamily)); | 103 prefs->GetString(prefs::kWebKitSerifFontFamily)); |
| 87 EXPECT_EQ("StandardFontFamily", | 104 EXPECT_EQ("StandardFontFamily", |
| 88 prefs->GetString(prefs::kWebKitGlobalStandardFontFamily)); | 105 prefs->GetString(prefs::kWebKitStandardFontFamily)); |
| 89 } | 106 }; |
| 107 |
| 108 class PrefsTabHelperBrowserTest2 : public PrefsTabHelperBrowserTest { |
| 109 protected: |
| 110 virtual FilePath GetPreferencesFilePath() OVERRIDE { |
| 111 FilePath test_data_directory; |
| 112 PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory); |
| 113 return test_data_directory |
| 114 .AppendASCII("profiles") |
| 115 .AppendASCII("webkit_global_reverse_migration") |
| 116 .AppendASCII("Default") |
| 117 .Append(chrome::kPreferencesFilename); |
| 118 } |
| 119 }; |
| 120 |
| 121 // This tests migration like: |
| 122 // webkit.webprefs.global.standard_font_family -> |
| 123 // webkit.webprefs.fonts.standard.Zyyy |
| 124 // This undoes the migration to "global" names (originally done for the per-tab |
| 125 // pref mechanism, which has since been removed). In addition, it moves the |
| 126 // formerly "non-per-script" font prefs into the per-script font maps, as |
| 127 // described in the comment for PrefsAreMigratedToFontMap. |
| 128 IN_PROC_BROWSER_TEST_F(PrefsTabHelperBrowserTest2, GlobalPrefsAreMigrated) { |
| 129 PrefService* prefs = browser()->profile()->GetPrefs(); |
| 130 |
| 131 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitGlobalCursiveFontFamily)); |
| 132 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitGlobalFantasyFontFamily)); |
| 133 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitGlobalFixedFontFamily)); |
| 134 EXPECT_EQ(NULL, |
| 135 prefs->FindPreference(prefs::kWebKitGlobalSansSerifFontFamily)); |
| 136 EXPECT_EQ(NULL, prefs->FindPreference(prefs::kWebKitGlobalSerifFontFamily)); |
| 137 EXPECT_EQ(NULL, |
| 138 prefs->FindPreference(prefs::kWebKitGlobalStandardFontFamily)); |
| 139 |
| 140 EXPECT_EQ("CursiveFontFamily", |
| 141 prefs->GetString(prefs::kWebKitCursiveFontFamily)); |
| 142 EXPECT_EQ("FantasyFontFamily", |
| 143 prefs->GetString(prefs::kWebKitFantasyFontFamily)); |
| 144 EXPECT_EQ("FixedFontFamily", |
| 145 prefs->GetString(prefs::kWebKitFixedFontFamily)); |
| 146 EXPECT_EQ("SansSerifFontFamily", |
| 147 prefs->GetString(prefs::kWebKitSansSerifFontFamily)); |
| 148 EXPECT_EQ("SerifFontFamily", |
| 149 prefs->GetString(prefs::kWebKitSerifFontFamily)); |
| 150 EXPECT_EQ("StandardFontFamily", |
| 151 prefs->GetString(prefs::kWebKitStandardFontFamily)); |
| 152 }; |
| OLD | NEW |