mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 18:17:22 +02:00
LibWeb/HTML: Fix Origin.from(value) for Window objects
I had completely managed to forget about the special case of Window where a WindowProxy is what is received over IDL. This was caught by the origin-from-window WPT test, but unfortunately this cannot be imported as it relies on a web server running and other surroundsing WPT infrastructure.
This commit is contained in:
committed by
Jelle Raaijmakers
parent
45ab134de9
commit
865b2b88b0
Notes:
github-actions[bot]
2025-12-30 17:50:59 +00:00
Author: https://github.com/shannonbooth Commit: https://github.com/LadybirdBrowser/ladybird/commit/865b2b88b06 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/7283 Reviewed-by: https://github.com/gmta ✅
@@ -8,6 +8,8 @@
|
||||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/Bindings/OriginPrototype.h>
|
||||
#include <LibWeb/DOMURL/Origin.h>
|
||||
#include <LibWeb/HTML/Window.h>
|
||||
#include <LibWeb/HTML/WindowProxy.h>
|
||||
|
||||
namespace Web::DOMURL {
|
||||
|
||||
@@ -39,6 +41,10 @@ WebIDL::ExceptionOr<GC::Ref<Origin>> Origin::from(JS::VM& vm, JS::Value value)
|
||||
{
|
||||
auto& realm = *vm.current_realm();
|
||||
|
||||
// NB: IDL only ever sees HTML::WindowProxy but we want to use HTML::Window.
|
||||
if (auto* window_proxy = value.as_if<HTML::WindowProxy>())
|
||||
value = window_proxy->window();
|
||||
|
||||
// 1. If value is a platform object:
|
||||
if (auto* object = value.as_if<Bindings::PlatformObject>()) {
|
||||
// 1. Let origin be the result of executing value's extract an origin operation.
|
||||
|
||||
Reference in New Issue
Block a user