From 4417f63ca08fd8c07fd1c541b4ff941c08a20ab3 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sat, 30 Nov 2024 18:01:40 +1300 Subject: [PATCH] LibWeb: Move ServiceWorker classes to ServiceWorker namespace These are defined by the ServiceWorker spec, not the HTML one. --- Libraries/LibWeb/CMakeLists.txt | 6 +++--- Libraries/LibWeb/Forward.h | 8 ++++++-- Libraries/LibWeb/HTML/Navigator.cpp | 6 +++--- Libraries/LibWeb/HTML/Navigator.h | 4 ++-- Libraries/LibWeb/HTML/Navigator.idl | 2 +- Libraries/LibWeb/HTML/WorkerNavigator.cpp | 4 ++-- Libraries/LibWeb/HTML/WorkerNavigator.h | 6 +++--- .../{HTML => ServiceWorker}/ServiceWorker.cpp | 4 ++-- .../{HTML => ServiceWorker}/ServiceWorker.h | 2 +- .../{HTML => ServiceWorker}/ServiceWorker.idl | 0 .../ServiceWorkerContainer.cpp | 15 ++++++++------- .../ServiceWorkerContainer.h | 6 +++--- .../ServiceWorkerContainer.idl | 2 +- .../ServiceWorkerRegistration.cpp | 4 ++-- .../ServiceWorkerRegistration.h | 2 +- .../ServiceWorkerRegistration.idl | 2 +- Libraries/LibWeb/idl_files.cmake | 6 +++--- .../LibWeb/BindingsGenerator/IDLGenerators.cpp | 1 + .../LibWeb/BindingsGenerator/Namespaces.h | 1 + 19 files changed, 44 insertions(+), 37 deletions(-) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorker.cpp (94%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorker.h (97%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorker.idl (100%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerContainer.cpp (93%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerContainer.h (87%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerContainer.idl (96%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerRegistration.cpp (88%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerRegistration.h (95%) rename Libraries/LibWeb/{HTML => ServiceWorker}/ServiceWorkerRegistration.idl (95%) diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 625534295ad..601716b3a81 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -463,9 +463,6 @@ set(SOURCES HTML/Scripting/SerializedEnvironmentSettingsObject.cpp HTML/SelectedFile.cpp HTML/SelectItem.cpp - HTML/ServiceWorker.cpp - HTML/ServiceWorkerContainer.cpp - HTML/ServiceWorkerRegistration.cpp HTML/SessionHistoryEntry.cpp HTML/SessionHistoryTraversalQueue.cpp HTML/ShadowRealmGlobalScope.cpp @@ -670,7 +667,10 @@ set(SOURCES SecureContexts/AbstractOperations.cpp ServiceWorker/Job.cpp ServiceWorker/Registration.cpp + ServiceWorker/ServiceWorker.cpp + ServiceWorker/ServiceWorkerContainer.cpp ServiceWorker/ServiceWorkerRecord.cpp + ServiceWorker/ServiceWorkerRegistration.cpp SRI/SRI.cpp StorageAPI/NavigatorStorage.cpp StorageAPI/StorageKey.cpp diff --git a/Libraries/LibWeb/Forward.h b/Libraries/LibWeb/Forward.h index 5ca69c94fb6..cf90e784ed8 100644 --- a/Libraries/LibWeb/Forward.h +++ b/Libraries/LibWeb/Forward.h @@ -516,8 +516,6 @@ class PluginArray; class PromiseRejectionEvent; class RadioNodeList; class SelectedFile; -class ServiceWorkerContainer; -class ServiceWorkerRegistration; class SessionHistoryEntry; class SharedResourceRequest; class Storage; @@ -716,6 +714,12 @@ namespace Web::Selection { class Selection; } +namespace Web::ServiceWorker { +class ServiceWorker; +class ServiceWorkerContainer; +class ServiceWorkerRegistration; +} + namespace Web::Streams { class ByteLengthQueuingStrategy; class CountQueuingStrategy; diff --git a/Libraries/LibWeb/HTML/Navigator.cpp b/Libraries/LibWeb/HTML/Navigator.cpp index 478b975cb3f..eaef3f45130 100644 --- a/Libraries/LibWeb/HTML/Navigator.cpp +++ b/Libraries/LibWeb/HTML/Navigator.cpp @@ -13,10 +13,10 @@ #include #include #include -#include #include #include #include +#include namespace Web::HTML { @@ -117,10 +117,10 @@ Optional Navigator::do_not_track() const return {}; } -GC::Ref Navigator::service_worker() +GC::Ref Navigator::service_worker() { if (!m_service_worker_container) - m_service_worker_container = realm().create(realm()); + m_service_worker_container = realm().create(realm()); return *m_service_worker_container; } diff --git a/Libraries/LibWeb/HTML/Navigator.h b/Libraries/LibWeb/HTML/Navigator.h index 2a72bcb8f70..ffbcd26b64d 100644 --- a/Libraries/LibWeb/HTML/Navigator.h +++ b/Libraries/LibWeb/HTML/Navigator.h @@ -57,7 +57,7 @@ public: Optional do_not_track() const; - GC::Ref service_worker(); + GC::Ref service_worker(); GC::Ref media_capabilities(); @@ -86,7 +86,7 @@ private: GC::Ptr m_user_activation; // https://w3c.github.io/ServiceWorker/#navigator-serviceworker - GC::Ptr m_service_worker_container; + GC::Ptr m_service_worker_container; // https://w3c.github.io/media-capabilities/#dom-navigator-mediacapabilities GC::Ptr m_media_capabilities; diff --git a/Libraries/LibWeb/HTML/Navigator.idl b/Libraries/LibWeb/HTML/Navigator.idl index e93f60d8cdd..cae3a1e69d4 100644 --- a/Libraries/LibWeb/HTML/Navigator.idl +++ b/Libraries/LibWeb/HTML/Navigator.idl @@ -7,9 +7,9 @@ #import #import #import -#import #import #import +#import #import // https://html.spec.whatwg.org/multipage/system-state.html#navigator diff --git a/Libraries/LibWeb/HTML/WorkerNavigator.cpp b/Libraries/LibWeb/HTML/WorkerNavigator.cpp index 67145d68fc0..188b61ae072 100644 --- a/Libraries/LibWeb/HTML/WorkerNavigator.cpp +++ b/Libraries/LibWeb/HTML/WorkerNavigator.cpp @@ -47,10 +47,10 @@ GC::Ref WorkerNavigator::media_capabili return *m_media_capabilities; } -GC::Ref WorkerNavigator::service_worker() +GC::Ref WorkerNavigator::service_worker() { if (!m_service_worker_container) - m_service_worker_container = realm().create(realm()); + m_service_worker_container = realm().create(realm()); return *m_service_worker_container; } diff --git a/Libraries/LibWeb/HTML/WorkerNavigator.h b/Libraries/LibWeb/HTML/WorkerNavigator.h index ab76f1347d6..94ecdd6f9b5 100644 --- a/Libraries/LibWeb/HTML/WorkerNavigator.h +++ b/Libraries/LibWeb/HTML/WorkerNavigator.h @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include #include namespace Web::HTML { @@ -32,7 +32,7 @@ class WorkerNavigator : public Bindings::PlatformObject public: [[nodiscard]] static GC::Ref create(WorkerGlobalScope&); - GC::Ref service_worker(); + GC::Ref service_worker(); virtual ~WorkerNavigator() override; @@ -50,7 +50,7 @@ private: // https://w3c.github.io/media-capabilities/#dom-workernavigator-mediacapabilities GC::Ptr m_media_capabilities; - GC::Ptr m_service_worker_container; + GC::Ptr m_service_worker_container; }; } diff --git a/Libraries/LibWeb/HTML/ServiceWorker.cpp b/Libraries/LibWeb/ServiceWorker/ServiceWorker.cpp similarity index 94% rename from Libraries/LibWeb/HTML/ServiceWorker.cpp rename to Libraries/LibWeb/ServiceWorker/ServiceWorker.cpp index 9af4e8dd2c7..6ccf9d8a2ba 100644 --- a/Libraries/LibWeb/HTML/ServiceWorker.cpp +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorker.cpp @@ -8,9 +8,9 @@ #include #include #include -#include +#include -namespace Web::HTML { +namespace Web::ServiceWorker { ServiceWorker::ServiceWorker(JS::Realm& realm, String script_url) : DOM::EventTarget(realm) diff --git a/Libraries/LibWeb/HTML/ServiceWorker.h b/Libraries/LibWeb/ServiceWorker/ServiceWorker.h similarity index 97% rename from Libraries/LibWeb/HTML/ServiceWorker.h rename to Libraries/LibWeb/ServiceWorker/ServiceWorker.h index 89cc547ba6b..39531f97594 100644 --- a/Libraries/LibWeb/HTML/ServiceWorker.h +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorker.h @@ -13,7 +13,7 @@ E(onstatechange, HTML::EventNames::statechange) \ E(onerror, HTML::EventNames::error) -namespace Web::HTML { +namespace Web::ServiceWorker { class ServiceWorker : public DOM::EventTarget { WEB_PLATFORM_OBJECT(ServiceWorker, DOM::EventTarget); diff --git a/Libraries/LibWeb/HTML/ServiceWorker.idl b/Libraries/LibWeb/ServiceWorker/ServiceWorker.idl similarity index 100% rename from Libraries/LibWeb/HTML/ServiceWorker.idl rename to Libraries/LibWeb/ServiceWorker/ServiceWorker.idl diff --git a/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.cpp similarity index 93% rename from Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.cpp index 32fe8b56e65..a31e75cf36d 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.cpp @@ -10,17 +10,18 @@ #include #include #include -#include #include +#include +#include #include -namespace Web::HTML { +namespace Web::ServiceWorker { GC_DEFINE_ALLOCATOR(ServiceWorkerContainer); ServiceWorkerContainer::ServiceWorkerContainer(JS::Realm& realm) : DOM::EventTarget(realm) - , m_service_worker_client(relevant_settings_object(*this)) + , m_service_worker_client(HTML::relevant_settings_object(*this)) { } @@ -61,7 +62,7 @@ GC::Ref ServiceWorkerContainer::register_(String script_url, Re auto client = m_service_worker_client; // 4. Let scriptURL be the result of parsing scriptURL with this's relevant settings object’s API base URL. - auto base_url = relevant_settings_object(*this).api_base_url(); + auto base_url = HTML::relevant_settings_object(*this).api_base_url(); auto parsed_script_url = DOMURL::parse(script_url, base_url); // 5. Let scopeURL be null. @@ -80,7 +81,7 @@ GC::Ref ServiceWorkerContainer::register_(String script_url, Re } // https://w3c.github.io/ServiceWorker/#start-register-algorithm -void ServiceWorkerContainer::start_register(Optional scope_url, URL::URL script_url, GC::Ref promise, EnvironmentSettingsObject& client, URL::URL referrer, Bindings::WorkerType worker_type, Bindings::ServiceWorkerUpdateViaCache update_via_cache) +void ServiceWorkerContainer::start_register(Optional scope_url, URL::URL script_url, GC::Ref promise, HTML::EnvironmentSettingsObject& client, URL::URL referrer, Bindings::WorkerType worker_type, Bindings::ServiceWorkerUpdateViaCache update_via_cache) { auto& realm = this->realm(); auto& vm = realm.vm(); @@ -155,7 +156,7 @@ void ServiceWorkerContainer::start_register(Optional scope_url, URL::U } // 11. Let job be the result of running Create Job with register, storage key, scopeURL, scriptURL, promise, and client. - auto job = ServiceWorker::Job::create(vm, ServiceWorker::Job::Type::Register, storage_key.value(), scope_url.value(), script_url, promise, client); + auto job = Job::create(vm, Job::Type::Register, storage_key.value(), scope_url.value(), script_url, promise, client); // 12. Set job’s worker type to workerType. job->worker_type = worker_type; @@ -167,7 +168,7 @@ void ServiceWorkerContainer::start_register(Optional scope_url, URL::U job->referrer = move(referrer); // 15. Invoke Schedule Job with job. - ServiceWorker::schedule_job(vm, job); + schedule_job(vm, job); } #undef __ENUMERATE diff --git a/Libraries/LibWeb/HTML/ServiceWorkerContainer.h b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.h similarity index 87% rename from Libraries/LibWeb/HTML/ServiceWorkerContainer.h rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.h index e640ee2ef8d..58780889926 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerContainer.h +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.h @@ -18,7 +18,7 @@ E(onmessage, HTML::EventNames::message) \ E(onmessageerror, HTML::EventNames::messageerror) -namespace Web::HTML { +namespace Web::ServiceWorker { struct RegistrationOptions { Optional scope; @@ -49,9 +49,9 @@ private: virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; - void start_register(Optional scope_url, URL::URL script_url, GC::Ref, EnvironmentSettingsObject&, URL::URL referrer, Bindings::WorkerType, Bindings::ServiceWorkerUpdateViaCache); + void start_register(Optional scope_url, URL::URL script_url, GC::Ref, HTML::EnvironmentSettingsObject&, URL::URL referrer, Bindings::WorkerType, Bindings::ServiceWorkerUpdateViaCache); - GC::Ref m_service_worker_client; + GC::Ref m_service_worker_client; }; } diff --git a/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.idl similarity index 96% rename from Libraries/LibWeb/HTML/ServiceWorkerContainer.idl rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.idl index c8567dc23f3..9047dbb5c32 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerContainer.idl @@ -1,7 +1,7 @@ #import #import -#import #import +#import // https://w3c.github.io/ServiceWorker/#serviceworkercontainer-interface [SecureContext, Exposed=(Window,Worker)] diff --git a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.cpp b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.cpp similarity index 88% rename from Libraries/LibWeb/HTML/ServiceWorkerRegistration.cpp rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.cpp index d7e50e81c78..607e05f9ceb 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.cpp +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.cpp @@ -7,9 +7,9 @@ #include #include #include -#include +#include -namespace Web::HTML { +namespace Web::ServiceWorker { GC_DEFINE_ALLOCATOR(ServiceWorkerRegistration); diff --git a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.h b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.h similarity index 95% rename from Libraries/LibWeb/HTML/ServiceWorkerRegistration.h rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.h index 12286782a56..e2b405126f4 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.h +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.h @@ -8,7 +8,7 @@ #include -namespace Web::HTML { +namespace Web::ServiceWorker { class ServiceWorkerRegistration : public DOM::EventTarget { WEB_PLATFORM_OBJECT(ServiceWorkerRegistration, DOM::EventTarget); diff --git a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.idl b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.idl similarity index 95% rename from Libraries/LibWeb/HTML/ServiceWorkerRegistration.idl rename to Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.idl index 9f097e9f3e8..9c7785305c3 100644 --- a/Libraries/LibWeb/HTML/ServiceWorkerRegistration.idl +++ b/Libraries/LibWeb/ServiceWorker/ServiceWorkerRegistration.idl @@ -1,6 +1,6 @@ #import #import -#import +#import // https://w3c.github.io/ServiceWorker/#serviceworkerregistration-interface [SecureContext, Exposed=(Window,Worker)] diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index d50709e9835..fbcd14f5b6f 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -221,9 +221,6 @@ libweb_js_bindings(HTML/PluginArray) libweb_js_bindings(HTML/PopStateEvent) libweb_js_bindings(HTML/PromiseRejectionEvent) libweb_js_bindings(HTML/RadioNodeList) -libweb_js_bindings(HTML/ServiceWorker) -libweb_js_bindings(HTML/ServiceWorkerContainer) -libweb_js_bindings(HTML/ServiceWorkerRegistration) libweb_js_bindings(HTML/ShadowRealmGlobalScope GLOBAL) libweb_js_bindings(HTML/Storage) libweb_js_bindings(HTML/SubmitEvent) @@ -278,6 +275,9 @@ libweb_js_bindings(RequestIdleCallback/IdleDeadline) libweb_js_bindings(ResizeObserver/ResizeObserver) libweb_js_bindings(ResizeObserver/ResizeObserverEntry) libweb_js_bindings(ResizeObserver/ResizeObserverSize) +libweb_js_bindings(ServiceWorker/ServiceWorker) +libweb_js_bindings(ServiceWorker/ServiceWorkerContainer) +libweb_js_bindings(ServiceWorker/ServiceWorkerRegistration) libweb_js_bindings(Streams/ByteLengthQueuingStrategy) libweb_js_bindings(Streams/CountQueuingStrategy) libweb_js_bindings(Streams/ReadableByteStreamController) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 532a60cea7d..784e0233ca9 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -4308,6 +4308,7 @@ using namespace Web::PerformanceTimeline; using namespace Web::RequestIdleCallback; using namespace Web::ResizeObserver; using namespace Web::Selection; +using namespace Web::ServiceWorker; using namespace Web::StorageAPI; using namespace Web::Streams; using namespace Web::SVG; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h index f1f9de0a9f5..a9ae100ff98 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h @@ -35,6 +35,7 @@ static constexpr Array libweb_interface_namespaces = { "ResizeObserver"sv, "SVG"sv, "Selection"sv, + "ServiceWorker"sv, "UIEvents"sv, "WebAudio"sv, "WebGL"sv,