fix: reject with error when url not loaded (#16571)
* fix: reject with error when url not loaded * improve descriptive spec naming
This commit is contained in:
parent
138ba53511
commit
a25f82c91f
2 changed files with 15 additions and 5 deletions
|
@ -1444,12 +1444,17 @@ v8::Local<v8::Promise> WebContents::HasServiceWorker() {
|
||||||
auto* context = GetServiceWorkerContext(web_contents());
|
auto* context = GetServiceWorkerContext(web_contents());
|
||||||
if (!context) {
|
if (!context) {
|
||||||
promise->RejectWithErrorMessage("Unable to get ServiceWorker context.");
|
promise->RejectWithErrorMessage("Unable to get ServiceWorker context.");
|
||||||
|
return promise->GetHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
GURL url = web_contents()->GetLastCommittedURL();
|
||||||
|
if (!url.is_valid()) {
|
||||||
|
promise->RejectWithErrorMessage("URL invalid or not yet loaded.");
|
||||||
|
return promise->GetHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
context->CheckHasServiceWorker(
|
context->CheckHasServiceWorker(
|
||||||
web_contents()->GetLastCommittedURL(),
|
url, url, base::BindOnce(&OnServiceWorkerCheckDone, promise));
|
||||||
web_contents()->GetLastCommittedURL(),
|
|
||||||
base::BindOnce(&OnServiceWorkerCheckDone, promise));
|
|
||||||
|
|
||||||
return promise->GetHandle();
|
return promise->GetHandle();
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,13 +229,18 @@ describe('webContents module', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('ServiceWorker APIs', () => {
|
describe('ServiceWorker APIs', () => {
|
||||||
it('can successfully register a ServiceWorker', async () => {
|
it('can successfully check for presence of a ServiceWorker', async () => {
|
||||||
await w.loadFile(path.join(fixtures, 'api', 'service-worker', 'service-worker.html'))
|
await w.loadFile(path.join(fixtures, 'api', 'service-worker', 'service-worker.html'))
|
||||||
const hasSW = await w.webContents.hasServiceWorker()
|
const hasSW = await w.webContents.hasServiceWorker()
|
||||||
expect(hasSW).to.be.true()
|
expect(hasSW).to.be.true()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('can successfully register a ServiceWorker (callback)', (done) => {
|
it('throws properly for invalid url', async () => {
|
||||||
|
const promise = w.webContents.hasServiceWorker()
|
||||||
|
return expect(promise).to.be.eventually.rejectedWith(Error, 'URL invalid or not yet loaded.')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can successfully check for presence of a ServiceWorker (callback)', (done) => {
|
||||||
w.loadFile(path.join(fixtures, 'api', 'service-worker', 'service-worker.html')).then(() => {
|
w.loadFile(path.join(fixtures, 'api', 'service-worker', 'service-worker.html')).then(() => {
|
||||||
w.webContents.hasServiceWorker(hasSW => {
|
w.webContents.hasServiceWorker(hasSW => {
|
||||||
expect(hasSW).to.be.true()
|
expect(hasSW).to.be.true()
|
||||||
|
|
Loading…
Reference in a new issue