LibWeb: Implement some custom JS internal overrides for Location

As required by the spec. Note that this isn't the full suite of
overrides.
This commit is contained in:
Luke Wilde 2021-09-12 14:54:17 +01:00 committed by Andreas Kling
parent 7991077284
commit ee5bac0891
Notes: sideshowbarker 2024-07-18 04:09:30 +09:00
2 changed files with 27 additions and 2 deletions

View File

@ -11,8 +11,7 @@
#include <LibWeb/DOM/Document.h>
#include <LibWeb/DOM/Window.h>
namespace Web {
namespace Bindings {
namespace Web::Bindings {
LocationObject::LocationObject(JS::GlobalObject& global_object)
: Object(*global_object.object_prototype())
@ -118,6 +117,25 @@ JS_DEFINE_NATIVE_FUNCTION(LocationObject::reload)
return JS::js_undefined();
}
// https://html.spec.whatwg.org/multipage/history.html#location-setprototypeof
bool LocationObject::internal_set_prototype_of(Object* prototype)
{
// 1. Return ! SetImmutablePrototype(this, V).
return set_immutable_prototype(prototype);
}
// https://html.spec.whatwg.org/multipage/history.html#location-isextensible
bool LocationObject::internal_is_extensible() const
{
// 1. Return true.
return true;
}
// https://html.spec.whatwg.org/multipage/history.html#location-preventextensions
bool LocationObject::internal_prevent_extensions()
{
// 1. Return false.
return false;
}
}

View File

@ -20,6 +20,13 @@ public:
virtual void initialize(JS::GlobalObject&) override;
virtual ~LocationObject() override;
virtual bool internal_set_prototype_of(Object* prototype) override;
virtual bool internal_is_extensible() const override;
virtual bool internal_prevent_extensions() override;
// FIXME: There should also be a custom [[GetPrototypeOf]], [[GetOwnProperty]], [[DefineOwnProperty]], [[Get]], [[Set]], [[Delete]] and [[OwnPropertyKeys]],
// but we don't have the infrastructure in place to implement them yet.
private:
JS_DECLARE_NATIVE_FUNCTION(reload);