Browse Source

fix: "Failed to serialize arguments" when emitting 'context-menu' for webview (#31259)

* fix: sanitize params for 'context-menu' event sent over IPC for webview

* Revert "fix: sanitize params for 'context-menu' event sent over IPC for webview"

This reverts commit 7fee455138e8470756a677dcca1a830260ba8d97.

* fix: make frame property non-enumerable in params for 'context-menu' event
Milan Burda 3 years ago
parent
commit
d7a7c120d1

+ 1 - 1
shell/common/gin_converters/content_converter.cc

@@ -80,7 +80,7 @@ v8::Local<v8::Value> Converter<ContextMenuParamsWithRenderFrameHost>::ToV8(
   const auto& params = val.first;
   content::RenderFrameHost* render_frame_host = val.second;
   gin_helper::Dictionary dict = gin::Dictionary::CreateEmpty(isolate);
-  dict.SetGetter("frame", render_frame_host);
+  dict.SetGetter("frame", render_frame_host, v8::DontEnum);
   dict.Set("x", params.x);
   dict.Set("y", params.y);
   dict.Set("linkURL", params.link_url);

+ 4 - 2
shell/common/gin_helper/dictionary.h

@@ -111,7 +111,9 @@ class Dictionary : public gin::Dictionary {
   }
 
   template <typename K, typename V>
-  bool SetGetter(const K& key, const V& val) {
+  bool SetGetter(const K& key,
+                 const V& val,
+                 v8::PropertyAttribute attribute = v8::None) {
     AccessorValue<V> acc_value;
     acc_value.Value = val;
 
@@ -136,7 +138,7 @@ class Dictionary : public gin::Dictionary {
               if (gin::TryConvertToV8(info.GetIsolate(), val, &v8_value))
                 info.GetReturnValue().Set(v8_value);
             },
-            NULL, v8_value_accessor)
+            nullptr, v8_value_accessor, v8::DEFAULT, attribute)
         .ToChecked();
   }