Avoid storing unrelated things in WebContentsPreferences

This commit is contained in:
Cheng Zhao 2015-11-11 10:32:25 +08:00
parent b807685453
commit ba457681b2
3 changed files with 17 additions and 9 deletions

View file

@ -6,10 +6,12 @@
#include <string>
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/strings/string_number_conversions.h"
#include "content/public/common/web_preferences.h"
#include "native_mate/dictionary.h"
#include "net/base/filename_util.h"
#if defined(OS_WIN)
@ -36,12 +38,16 @@ const char* kWebRuntimeFeatures[] = {
WebContentsPreferences::WebContentsPreferences(
content::WebContents* web_contents,
base::DictionaryValue* web_preferences) {
web_preferences_.Swap(web_preferences);
web_contents->SetUserData(UserDataKey(), this);
const mate::Dictionary& web_preferences) {
v8::Isolate* isolate = web_preferences.isolate();
mate::Dictionary copied(isolate, web_preferences.GetHandle()->Clone());
// Following fields should not be stored.
copied.Delete("embedder");
copied.Delete("isGuest");
copied.Delete("session");
// The "isGuest" is not a preferences field.
web_preferences_.Remove("isGuest", nullptr);
mate::ConvertFromV8(isolate, copied.GetHandle(), &web_preferences_);
web_contents->SetUserData(UserDataKey(), this);
}
WebContentsPreferences::~WebContentsPreferences() {