Просмотр исходного кода

LibWeb: Don't swallow args when forwarding cross-origin WindowProxy call

Fixes at least one WPT test that was previously timing out:
- html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html
Andreas Kling 9 месяцев назад
Родитель
Сommit
0b403d30d7

+ 1 - 0
Tests/LibWeb/Text/expected/HTML/cross-origin-WindowProxy-postMessage.txt

@@ -0,0 +1 @@
+PASS

+ 11 - 0
Tests/LibWeb/Text/input/HTML/cross-origin-WindowProxy-postMessage.html

@@ -0,0 +1,11 @@
+<script src="../include.js"></script>
+<iframe id="i"></iframe>
+<script>
+    asyncTest((done) => {
+        window.onmessage = function() {
+            println("PASS");
+            done();
+        };
+        i.src = "data:text/html,<script>top.postMessage('done', '*');</sc" + "ript>";
+    });
+</script>

+ 3 - 3
Userland/Libraries/LibWeb/HTML/CrossOrigin/AbstractOperations.cpp

@@ -135,7 +135,7 @@ Optional<JS::PropertyDescriptor> cross_origin_get_own_property_helper(Variant<HT
             if (value->is_function()) {
                 value = JS::NativeFunction::create(
                     realm, [function = JS::make_handle(*value)](auto& vm) {
-                        return JS::call(vm, function.value(), JS::js_undefined());
+                        return JS::call(vm, function.value(), JS::js_undefined(), vm.running_execution_context().arguments.span());
                     },
                     0, "");
             }
@@ -152,7 +152,7 @@ Optional<JS::PropertyDescriptor> cross_origin_get_own_property_helper(Variant<HT
             if (*entry.needs_get) {
                 cross_origin_get = JS::NativeFunction::create(
                     realm, [object_ptr, getter = JS::make_handle(*original_descriptor->get)](auto& vm) {
-                        return JS::call(vm, getter.cell(), object_ptr);
+                        return JS::call(vm, getter.cell(), object_ptr, vm.running_execution_context().arguments.span());
                     },
                     0, "");
             }
@@ -164,7 +164,7 @@ Optional<JS::PropertyDescriptor> cross_origin_get_own_property_helper(Variant<HT
             if (*entry.needs_set) {
                 cross_origin_set = JS::NativeFunction::create(
                     realm, [object_ptr, setter = JS::make_handle(*original_descriptor->set)](auto& vm) {
-                        return JS::call(vm, setter.cell(), object_ptr);
+                        return JS::call(vm, setter.cell(), object_ptr, vm.running_execution_context().arguments.span());
                     },
                     0, "");
             }