From afca4e271e354c7fcbd1378cd08e030259b8de57 Mon Sep 17 00:00:00 2001 From: Sam Maddock Date: Fri, 14 Mar 2025 21:00:13 -0400 Subject: [PATCH] feat: ServiceWorkerMain.scriptURL (#45863) feat: serviceWorker.scriptURL --- docs/api/service-worker-main.md | 4 ++++ shell/browser/api/electron_api_service_worker_main.cc | 7 +++++++ shell/browser/api/electron_api_service_worker_main.h | 1 + spec/api-service-worker-main-spec.ts | 11 +++++++++++ 4 files changed, 23 insertions(+) diff --git a/docs/api/service-worker-main.md b/docs/api/service-worker-main.md index fb30fd889d24..1118328c55a1 100644 --- a/docs/api/service-worker-main.md +++ b/docs/api/service-worker-main.md @@ -46,6 +46,10 @@ An [`IpcMainServiceWorker`](ipc-main-service-worker.md) instance scoped to the s A `string` representing the scope URL of the service worker. +#### `serviceWorker.scriptURL` _Readonly_ _Experimental_ + +A `string` representing the script URL of the service worker. + #### `serviceWorker.versionId` _Readonly_ _Experimental_ A `number` representing the ID of the specific version of the service worker script in its scope. diff --git a/shell/browser/api/electron_api_service_worker_main.cc b/shell/browser/api/electron_api_service_worker_main.cc index 4d06cc083a12..585822147df2 100644 --- a/shell/browser/api/electron_api_service_worker_main.cc +++ b/shell/browser/api/electron_api_service_worker_main.cc @@ -282,6 +282,12 @@ GURL ServiceWorkerMain::ScopeURL() const { return version_info()->scope; } +GURL ServiceWorkerMain::ScriptURL() const { + if (version_destroyed_) + return {}; + return version_info()->script_url; +} + // static gin::Handle ServiceWorkerMain::New(v8::Isolate* isolate) { return gin::Handle(); @@ -330,6 +336,7 @@ void ServiceWorkerMain::FillObjectTemplate( &ServiceWorkerMain::CountExternalRequestsForTest) .SetProperty("versionId", &ServiceWorkerMain::VersionID) .SetProperty("scope", &ServiceWorkerMain::ScopeURL) + .SetProperty("scriptURL", &ServiceWorkerMain::ScriptURL) .Build(); } diff --git a/shell/browser/api/electron_api_service_worker_main.h b/shell/browser/api/electron_api_service_worker_main.h index 7166c6fac090..9189daca9c1b 100644 --- a/shell/browser/api/electron_api_service_worker_main.h +++ b/shell/browser/api/electron_api_service_worker_main.h @@ -147,6 +147,7 @@ class ServiceWorkerMain final int64_t VersionID() const; GURL ScopeURL() const; + GURL ScriptURL() const; // Version ID unique only to the StoragePartition. int64_t version_id_; diff --git a/spec/api-service-worker-main-spec.ts b/spec/api-service-worker-main-spec.ts index f42d3590125f..fd0ed33b49b5 100644 --- a/spec/api-service-worker-main-spec.ts +++ b/spec/api-service-worker-main-spec.ts @@ -314,6 +314,17 @@ describe('ServiceWorkerMain module', () => { }); }); + describe("'scriptURL' property", () => { + it('matches the expected value', async () => { + loadWorkerScript(); + const serviceWorker = await waitForServiceWorker(); + expect(serviceWorker).to.not.be.undefined(); + if (!serviceWorker) return; + expect(serviceWorker).to.have.property('scriptURL').that.is.a('string'); + expect(serviceWorker.scriptURL).to.equal(`${baseUrl}/sw.js`); + }); + }); + describe('ipc', () => { beforeEach(() => { registerPreload('preload-tests.js');