mirror of
https://github.com/electron/electron.git
synced 2026-01-26 15:58:07 -05:00
🐛 Fix webpreferences not accepting numeric options
The webpreferences attribute values are parsed as strings instead of numbers. Therefore, a conversion is required.
This commit is contained in:
committed by
Kevin Sawicki
parent
852519a826
commit
42f65c52fb
@@ -5,6 +5,7 @@
|
||||
#include "atom/browser/web_contents_preferences.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -215,6 +216,25 @@ bool WebContentsPreferences::IsSandboxed(content::WebContents* web_contents) {
|
||||
return sandboxed;
|
||||
}
|
||||
|
||||
// static
|
||||
bool WebContentsPreferences::ConvertValueToIntegerFromString(
|
||||
WebContentsPreferences* pref, std::string attributeName, int* intValue) {
|
||||
|
||||
// if it is already an integer, no conversion needed
|
||||
if (pref->web_preferences_.GetInteger(attributeName, intValue)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string stringValue;
|
||||
|
||||
if (pref->web_preferences_.GetString(attributeName, &stringValue)) {
|
||||
std::stringstream(stringValue) >> *intValue;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
void WebContentsPreferences::OverrideWebkitPrefs(
|
||||
content::WebContents* web_contents, content::WebPreferences* prefs) {
|
||||
@@ -254,11 +274,11 @@ void WebContentsPreferences::OverrideWebkitPrefs(
|
||||
prefs->fantasy_font_family_map[content::kCommonScript] = font;
|
||||
}
|
||||
int size;
|
||||
if (self->web_preferences_.GetInteger("defaultFontSize", &size))
|
||||
if (ConvertValueToIntegerFromString(self, "defaultFontSize", &size))
|
||||
prefs->default_font_size = size;
|
||||
if (self->web_preferences_.GetInteger("defaultMonospaceFontSize", &size))
|
||||
if (ConvertValueToIntegerFromString(self, "defaultMonospaceFontSize", &size))
|
||||
prefs->default_fixed_font_size = size;
|
||||
if (self->web_preferences_.GetInteger("minimumFontSize", &size))
|
||||
if (ConvertValueToIntegerFromString(self, "minimumFontSize", &size))
|
||||
prefs->minimum_font_size = size;
|
||||
std::string encoding;
|
||||
if (self->web_preferences_.GetString("defaultEncoding", &encoding))
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef ATOM_BROWSER_WEB_CONTENTS_PREFERENCES_H_
|
||||
#define ATOM_BROWSER_WEB_CONTENTS_PREFERENCES_H_
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "base/values.h"
|
||||
@@ -38,6 +39,9 @@ class WebContentsPreferences
|
||||
|
||||
static bool IsSandboxed(content::WebContents* web_contents);
|
||||
|
||||
static bool ConvertValueToIntegerFromString(
|
||||
WebContentsPreferences* pref, std::string attributeName, int* intValue);
|
||||
|
||||
// Modify the WebPreferences according to |web_contents|'s preferences.
|
||||
static void OverrideWebkitPrefs(
|
||||
content::WebContents* web_contents, content::WebPreferences* prefs);
|
||||
|
||||
Reference in New Issue
Block a user