LibWeb: Stub the ServiceWorkerContainer interface

This commit is contained in:
Tim Ledbetter 2024-08-22 17:27:30 +01:00 committed by Andreas Kling
commit 53ab6fa403
Notes: github-actions[bot] 2024-08-25 10:54:07 +00:00
8 changed files with 92 additions and 0 deletions

View file

@ -85,6 +85,7 @@ static bool is_platform_object(Type const& type)
"ReadableStream"sv, "ReadableStream"sv,
"Request"sv, "Request"sv,
"Selection"sv, "Selection"sv,
"ServiceWorkerContainer"sv,
"ServiceWorkerRegistration"sv, "ServiceWorkerRegistration"sv,
"SVGTransform"sv, "SVGTransform"sv,
"ShadowRoot"sv, "ShadowRoot"sv,

View file

@ -317,6 +317,7 @@ SVGUseElement
Screen Screen
ScreenOrientation ScreenOrientation
Selection Selection
ServiceWorkerContainer
ServiceWorkerRegistration ServiceWorkerRegistration
Set Set
ShadowRealm ShadowRealm

View file

@ -442,6 +442,7 @@ set(SOURCES
HTML/Scripting/SerializedEnvironmentSettingsObject.cpp HTML/Scripting/SerializedEnvironmentSettingsObject.cpp
HTML/SelectedFile.cpp HTML/SelectedFile.cpp
HTML/SelectItem.cpp HTML/SelectItem.cpp
HTML/ServiceWorkerContainer.cpp
HTML/ServiceWorkerRegistration.cpp HTML/ServiceWorkerRegistration.cpp
HTML/SessionHistoryEntry.cpp HTML/SessionHistoryEntry.cpp
HTML/SessionHistoryTraversalQueue.cpp HTML/SessionHistoryTraversalQueue.cpp

View file

@ -485,6 +485,7 @@ class Plugin;
class PluginArray; class PluginArray;
class PromiseRejectionEvent; class PromiseRejectionEvent;
class SelectedFile; class SelectedFile;
class ServiceWorkerContainer;
class ServiceWorkerRegistration; class ServiceWorkerRegistration;
class SharedResourceRequest; class SharedResourceRequest;
class Storage; class Storage;

View file

@ -0,0 +1,32 @@
/*
* Copyright (c) 2024, Tim Ledbetter <tim.ledbetter@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/Bindings/ServiceWorkerContainerPrototype.h>
#include <LibWeb/HTML/ServiceWorkerContainer.h>
namespace Web::HTML {
JS_DEFINE_ALLOCATOR(ServiceWorkerContainer);
ServiceWorkerContainer::ServiceWorkerContainer(JS::Realm& realm)
: DOM::EventTarget(realm)
{
}
void ServiceWorkerContainer::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ServiceWorkerContainer);
}
JS::NonnullGCPtr<ServiceWorkerContainer> ServiceWorkerContainer::create(JS::Realm& realm)
{
return realm.heap().allocate<ServiceWorkerContainer>(realm, realm);
}
}

View file

@ -0,0 +1,26 @@
/*
* Copyright (c) 2024, Tim Ledbetter <tim.ledbetter@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/DOM/EventTarget.h>
namespace Web::HTML {
class ServiceWorkerContainer : public DOM::EventTarget {
WEB_PLATFORM_OBJECT(ServiceWorkerContainer, DOM::EventTarget);
JS_DECLARE_ALLOCATOR(ServiceWorkerContainer);
public:
[[nodiscard]] static JS::NonnullGCPtr<ServiceWorkerContainer> create(JS::Realm& realm);
explicit ServiceWorkerContainer(JS::Realm&);
virtual ~ServiceWorkerContainer() override = default;
virtual void initialize(JS::Realm&) override;
};
}

View file

@ -0,0 +1,29 @@
#import <DOM/EventTarget.idl>
#import <DOM/EventHandler.idl>
#import <HTML/ServiceWorkerRegistration.idl>
#import <HTML/Worker.idl>
// https://w3c.github.io/ServiceWorker/#serviceworkercontainer-interface
[SecureContext, Exposed=(Window,Worker)]
interface ServiceWorkerContainer : EventTarget {
[FIXME] readonly attribute ServiceWorker? controller;
[FIXME] readonly attribute Promise<ServiceWorkerRegistration> ready;
[FIXME, NewObject] Promise<ServiceWorkerRegistration> register((TrustedScriptURL or USVString) scriptURL, optional RegistrationOptions options = {});
[FIXME, NewObject] Promise<(ServiceWorkerRegistration or undefined)> getRegistration(optional USVString clientURL = "");
[FIXME, NewObject] Promise<FrozenArray<ServiceWorkerRegistration>> getRegistrations();
[FIXME] undefined startMessages();
// events
[FIXME] attribute EventHandler oncontrollerchange;
[FIXME] attribute EventHandler onmessage; // event.source of message events is ServiceWorker object
[FIXME] attribute EventHandler onmessageerror;
};
dictionary RegistrationOptions {
USVString scope;
WorkerType type = "classic";
ServiceWorkerUpdateViaCache updateViaCache = "imports";
};

View file

@ -213,6 +213,7 @@ libweb_js_bindings(HTML/Plugin)
libweb_js_bindings(HTML/PluginArray) libweb_js_bindings(HTML/PluginArray)
libweb_js_bindings(HTML/PopStateEvent) libweb_js_bindings(HTML/PopStateEvent)
libweb_js_bindings(HTML/PromiseRejectionEvent) libweb_js_bindings(HTML/PromiseRejectionEvent)
libweb_js_bindings(HTML/ServiceWorkerContainer)
libweb_js_bindings(HTML/ServiceWorkerRegistration) libweb_js_bindings(HTML/ServiceWorkerRegistration)
libweb_js_bindings(HTML/Storage) libweb_js_bindings(HTML/Storage)
libweb_js_bindings(HTML/SubmitEvent) libweb_js_bindings(HTML/SubmitEvent)