feat: ServiceWorkerMain.scriptURL (#45863)

feat: serviceWorker.scriptURL
This commit is contained in:
Sam Maddock 2025-03-14 21:00:13 -04:00 committed by GitHub
parent 30d2fadb28
commit afca4e271e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 23 additions and 0 deletions

View file

@ -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. 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_ #### `serviceWorker.versionId` _Readonly_ _Experimental_
A `number` representing the ID of the specific version of the service worker script in its scope. A `number` representing the ID of the specific version of the service worker script in its scope.

View file

@ -282,6 +282,12 @@ GURL ServiceWorkerMain::ScopeURL() const {
return version_info()->scope; return version_info()->scope;
} }
GURL ServiceWorkerMain::ScriptURL() const {
if (version_destroyed_)
return {};
return version_info()->script_url;
}
// static // static
gin::Handle<ServiceWorkerMain> ServiceWorkerMain::New(v8::Isolate* isolate) { gin::Handle<ServiceWorkerMain> ServiceWorkerMain::New(v8::Isolate* isolate) {
return gin::Handle<ServiceWorkerMain>(); return gin::Handle<ServiceWorkerMain>();
@ -330,6 +336,7 @@ void ServiceWorkerMain::FillObjectTemplate(
&ServiceWorkerMain::CountExternalRequestsForTest) &ServiceWorkerMain::CountExternalRequestsForTest)
.SetProperty("versionId", &ServiceWorkerMain::VersionID) .SetProperty("versionId", &ServiceWorkerMain::VersionID)
.SetProperty("scope", &ServiceWorkerMain::ScopeURL) .SetProperty("scope", &ServiceWorkerMain::ScopeURL)
.SetProperty("scriptURL", &ServiceWorkerMain::ScriptURL)
.Build(); .Build();
} }

View file

@ -147,6 +147,7 @@ class ServiceWorkerMain final
int64_t VersionID() const; int64_t VersionID() const;
GURL ScopeURL() const; GURL ScopeURL() const;
GURL ScriptURL() const;
// Version ID unique only to the StoragePartition. // Version ID unique only to the StoragePartition.
int64_t version_id_; int64_t version_id_;

View file

@ -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', () => { describe('ipc', () => {
beforeEach(() => { beforeEach(() => {
registerPreload('preload-tests.js'); registerPreload('preload-tests.js');