managed_web_contents()->GetView()->SetDelegate(this);
// Save the preferences in C++.
- base::DictionaryValue web_preferences;
- mate::ConvertFromV8(isolate, options.GetHandle(), &web_preferences);
- new WebContentsPreferences(web_contents, &web_preferences);
+ new WebContentsPreferences(web_contents, options);
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
#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)
WebContentsPreferences::WebContentsPreferences(
content::WebContents* web_contents,
- base::DictionaryValue* web_preferences) {
- web_preferences_.Swap(web_preferences);
+ 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");
+
+ mate::ConvertFromV8(isolate, copied.GetHandle(), &web_preferences_);
web_contents->SetUserData(UserDataKey(), this);
-
- // The "isGuest" is not a preferences field.
- web_preferences_.Remove("isGuest", nullptr);
}
WebContentsPreferences::~WebContentsPreferences() {
struct WebPreferences;
}
+namespace mate {
+class Dictionary;
+}
+
namespace atom {
// Stores and applies the preferences of WebContents.
content::WebContents* web_contents, content::WebPreferences* prefs);
WebContentsPreferences(content::WebContents* web_contents,
- base::DictionaryValue* web_preferences);
+ const mate::Dictionary& web_preferences);
~WebContentsPreferences() override;
// $.extend(|web_preferences_|, |new_web_preferences|).