Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1362)

Unified Diff: chrome/browser/ui/prefs/prefs_tab_helper.cc

Issue 8879016: Add more per-tab preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed "migration done" preference Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/prefs/prefs_tab_helper.cc
diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc
index aae0a6a8a8b5663fce61fda63f7ded2454ef4fce..62240564e14be4db0bab76d45eee153dff33e598 100644
--- a/chrome/browser/ui/prefs/prefs_tab_helper.cc
+++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc
@@ -6,6 +6,7 @@
#include "base/stringprintf.h"
#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
@@ -27,40 +28,103 @@
namespace {
const char* kPerTabPrefsToObserve[] = {
- prefs::kWebKitJavascriptEnabled
+ prefs::kDefaultCharset,
+ prefs::kWebKitJavascriptEnabled,
+ prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
+ prefs::kWebKitLoadsImagesAutomatically,
+ prefs::kWebKitPluginsEnabled,
+ prefs::kWebKitCursiveFontFamily,
+ prefs::kWebKitFantasyFontFamily,
+ prefs::kWebKitFixedFontFamily,
+ prefs::kWebKitSansSerifFontFamily,
+ prefs::kWebKitSerifFontFamily,
+ prefs::kWebKitStandardFontFamily,
+ prefs::kWebKitDefaultFontSize,
+ prefs::kWebKitDefaultFixedFontSize,
+ prefs::kWebKitMinimumFontSize,
+ prefs::kWebKitMinimumLogicalFontSize
};
const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve);
-void RegisterPerTabUserPrefs(PrefService* prefs) {
+static void RegisterFontsAndCharsetPrefs(PrefService* prefs) {
+ WebPreferences pref_defaults;
+
+ prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset,
+ IDS_DEFAULT_ENCODING,
+ PrefService::SYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily,
+ IDS_STANDARD_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily,
+ IDS_FIXED_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily,
+ IDS_SERIF_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily,
+ IDS_SANS_SERIF_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily,
+ IDS_CURSIVE_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily,
+ IDS_FANTASY_FONT_FAMILY,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize,
+ IDS_DEFAULT_FONT_SIZE,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize,
+ IDS_DEFAULT_FIXED_FONT_SIZE,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize,
+ IDS_MINIMUM_FONT_SIZE,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize,
+ IDS_MINIMUM_LOGICAL_FONT_SIZE,
+ PrefService::UNSYNCABLE_PREF);
+}
+
+static void RegisterPerTabUserPrefs(PrefService* prefs) {
WebPreferences pref_defaults;
prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
pref_defaults.javascript_enabled,
PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterBooleanPref(
+ prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
+ true,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically,
+ pref_defaults.loads_images_automatically,
+ PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled,
+ pref_defaults.plugins_enabled,
+ PrefService::UNSYNCABLE_PREF);
+ RegisterFontsAndCharsetPrefs(prefs);
}
// The list of prefs we want to observe.
const char* kPrefsToObserve[] = {
- prefs::kDefaultCharset,
prefs::kDefaultZoomLevel,
+ prefs::kGlobalDefaultCharset,
prefs::kEnableReferrers,
prefs::kWebKitAllowDisplayingInsecureContent,
prefs::kWebKitAllowRunningInsecureContent,
- prefs::kWebKitCursiveFontFamily,
- prefs::kWebKitDefaultFixedFontSize,
- prefs::kWebKitDefaultFontSize,
- prefs::kWebKitFantasyFontFamily,
- prefs::kWebKitFixedFontFamily,
+ prefs::kWebKitGlobalCursiveFontFamily,
+ prefs::kWebKitGlobalDefaultFixedFontSize,
+ prefs::kWebKitGlobalDefaultFontSize,
+ prefs::kWebKitGlobalFantasyFontFamily,
+ prefs::kWebKitGlobalFixedFontFamily,
prefs::kWebKitGlobalJavascriptEnabled,
prefs::kWebKitJavaEnabled,
- prefs::kWebKitLoadsImagesAutomatically,
- prefs::kWebKitMinimumFontSize,
- prefs::kWebKitMinimumLogicalFontSize,
- prefs::kWebKitPluginsEnabled,
- prefs::kWebKitSansSerifFontFamily,
- prefs::kWebKitSerifFontFamily,
- prefs::kWebKitStandardFontFamily,
+ prefs::kWebKitGlobalLoadsImagesAutomatically,
+ prefs::kWebKitGlobalMinimumFontSize,
+ prefs::kWebKitGlobalMinimumLogicalFontSize,
+ prefs::kWebKitGlobalPluginsEnabled,
+ prefs::kWebKitGlobalSansSerifFontFamily,
+ prefs::kWebKitGlobalSerifFontFamily,
+ prefs::kWebKitGlobalStandardFontFamily,
prefs::kWebkitTabsToLinks,
prefs::kWebKitUsesUniversalDetector
};
@@ -257,6 +321,8 @@ PrefsTabHelper::PrefsTabHelper(TabContentsWrapper* wrapper)
PrefsTabHelper::~PrefsTabHelper() {
}
+static void MigratePreferences(PrefService* prefs);
+
// static
void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
WebPreferences pref_defaults;
@@ -267,13 +333,13 @@ void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
pref_defaults.web_security_enabled,
PrefService::UNSYNCABLE_PREF);
prefs->RegisterBooleanPref(
- prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
+ prefs::kWebKitGlobalJavascriptCanOpenWindowsAutomatically,
true,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically,
+ prefs->RegisterBooleanPref(prefs::kWebKitGlobalLoadsImagesAutomatically,
pref_defaults.loads_images_automatically,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled,
+ prefs->RegisterBooleanPref(prefs::kWebKitGlobalPluginsEnabled,
pref_defaults.plugins_enabled,
PrefService::UNSYNCABLE_PREF);
prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled,
@@ -310,25 +376,25 @@ void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
IDS_ACCEPT_LANGUAGES,
PrefService::UNSYNCABLE_PREF);
#endif
- prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset,
+ prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset,
IDS_DEFAULT_ENCODING,
PrefService::SYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily,
IDS_STANDARD_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily,
IDS_FIXED_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily,
IDS_SERIF_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily,
IDS_SANS_SERIF_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily,
IDS_CURSIVE_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily,
+ prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily,
IDS_FANTASY_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
@@ -359,18 +425,19 @@ void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap);
RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap);
- prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize,
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFontSize,
IDS_DEFAULT_FONT_SIZE,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize,
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFixedFontSize,
IDS_DEFAULT_FIXED_FONT_SIZE,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize,
+ prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalMinimumFontSize,
IDS_MINIMUM_FONT_SIZE,
PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize,
- IDS_MINIMUM_LOGICAL_FONT_SIZE,
- PrefService::UNSYNCABLE_PREF);
+ prefs->RegisterLocalizedIntegerPref(
+ prefs::kWebKitGlobalMinimumLogicalFontSize,
+ IDS_MINIMUM_LOGICAL_FONT_SIZE,
+ PrefService::UNSYNCABLE_PREF);
prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector,
IDS_USES_UNIVERSAL_DETECTOR,
PrefService::SYNCABLE_PREF);
@@ -380,6 +447,7 @@ void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding,
"",
PrefService::UNSYNCABLE_PREF);
+ MigratePreferences(prefs);
}
void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) {
@@ -408,7 +476,8 @@ void PrefsTabHelper::Observe(int type,
DCHECK(content::Source<PrefService>(source).ptr() ==
wrapper_->profile()->GetPrefs() ||
content::Source<PrefService>(source).ptr() == per_tab_prefs_);
- if ((*pref_name_in == prefs::kDefaultCharset) ||
+ if ((*pref_name_in == prefs::kDefaultCharset ||
+ *pref_name_in == prefs::kGlobalDefaultCharset) ||
StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
UpdateWebPreferences();
} else if (*pref_name_in == prefs::kDefaultZoomLevel ||
@@ -429,6 +498,36 @@ void PrefsTabHelper::UpdateWebPreferences() {
WebPreferences prefs = rvhd->GetWebkitPrefs();
prefs.javascript_enabled =
per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled);
+ prefs.javascript_can_open_windows_automatically =
+ per_tab_prefs_->GetBoolean(
+ prefs::kWebKitJavascriptCanOpenWindowsAutomatically);
+ prefs.loads_images_automatically =
+ per_tab_prefs_->GetBoolean(prefs::kWebKitLoadsImagesAutomatically);
+ prefs.plugins_enabled =
+ per_tab_prefs_->GetBoolean(prefs::kWebKitPluginsEnabled);
+ prefs.standard_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitStandardFontFamily));
+ prefs.fixed_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFixedFontFamily));
+ prefs.serif_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSerifFontFamily));
+ prefs.sans_serif_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSansSerifFontFamily));
+ prefs.cursive_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitCursiveFontFamily));
+ prefs.fantasy_font_family =
+ UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFantasyFontFamily));
+ prefs.default_font_size =
+ per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFontSize);
+ prefs.default_fixed_font_size =
+ per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFixedFontSize);
+ prefs.minimum_font_size =
+ per_tab_prefs_->GetInteger(prefs::kWebKitMinimumFontSize);
+ prefs.minimum_logical_font_size =
+ per_tab_prefs_->GetInteger(prefs::kWebKitMinimumLogicalFontSize);
+ prefs.default_encoding =
+ per_tab_prefs_->GetString(prefs::kDefaultCharset);
+
tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs);
}
@@ -437,3 +536,46 @@ void PrefsTabHelper::UpdateRendererPreferences() {
tab_contents()->GetMutableRendererPrefs(), wrapper_->profile());
tab_contents()->render_view_host()->SyncRendererPrefs();
}
+
+const struct {
+ const char* from;
+ const char* to;
+} kPrefNamesToMigrate[] = {
Bernhard Bauer 2011/12/21 16:41:32 Put this into an anonymous namespace and move to t
mnaganov (inactive) 2011/12/21 18:43:33 Oh, right. There is an anonymous n/s already. Move
+ { prefs::kDefaultCharset,
+ prefs::kGlobalDefaultCharset },
+ { prefs::kWebKitCursiveFontFamily,
+ prefs::kWebKitGlobalCursiveFontFamily },
+ { prefs::kWebKitDefaultFixedFontSize,
+ prefs::kWebKitGlobalDefaultFixedFontSize },
+ { prefs::kWebKitDefaultFontSize,
+ prefs::kWebKitGlobalDefaultFontSize },
+ { prefs::kWebKitFantasyFontFamily,
+ prefs::kWebKitGlobalFantasyFontFamily },
+ { prefs::kWebKitFixedFontFamily,
+ prefs::kWebKitGlobalFixedFontFamily },
+ { prefs::kWebKitMinimumFontSize,
+ prefs::kWebKitGlobalMinimumFontSize },
+ { prefs::kWebKitMinimumLogicalFontSize,
+ prefs::kWebKitGlobalMinimumLogicalFontSize },
+ { prefs::kWebKitSansSerifFontFamily,
+ prefs::kWebKitGlobalSansSerifFontFamily },
+ { prefs::kWebKitSerifFontFamily,
+ prefs::kWebKitGlobalSerifFontFamily },
+ { prefs::kWebKitStandardFontFamily,
+ prefs::kWebKitGlobalStandardFontFamily },
+};
+
+const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate);
Bernhard Bauer 2011/12/21 16:41:32 Can you use arraysize here or does it something li
mnaganov (inactive) 2011/12/21 18:43:33 arraysize doesn't work for anonymous structs. htt
+
+static void MigratePreferences(PrefService* prefs) {
+ RegisterFontsAndCharsetPrefs(prefs);
+ for (int i = 0; i < kPrefsToMigrateLength; ++i) {
+ const PrefService::Preference *pref =
+ prefs->FindPreference(kPrefNamesToMigrate[i].from);
+ if (!pref) continue;
+ if (!pref->IsDefaultValue()) {
+ prefs->Set(kPrefNamesToMigrate[i].to, *pref->GetValue()->DeepCopy());
+ }
+ prefs->ClearPref(kPrefNamesToMigrate[i].from);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698