Commit 3d582411 authored by Raphael Kubo da Costa's avatar Raphael Kubo da Costa Committed by Commit Bot

wake lock: Always reject screen lock requests with NotAllowedError for hidden documents

Adjust to https://github.com/w3c/wake-lock/pull/234. Screen wake lock
requests could be rejected with either AbortError or NotAllowedError
depending on when the document became hidden.

For consistency, always reject the promise with NotAllowedError.

Bug: 257511
Change-Id: I00eb478af62a794692a8c439926ce89480cd0510
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1856166
Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Commit-Queue: Reilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705162}
parent 62a443a7
...@@ -109,7 +109,9 @@ void WakeLockController::DidReceivePermissionResponse( ...@@ -109,7 +109,9 @@ void WakeLockController::DidReceivePermissionResponse(
// abort early. // abort early.
if (type == WakeLockType::kScreen && if (type == WakeLockType::kScreen &&
!(GetPage() && GetPage()->IsPageVisible())) { !(GetPage() && GetPage()->IsPageVisible())) {
ReleaseWakeLock(type, resolver); resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kNotAllowedError,
"The requesting page is not visible"));
return; return;
} }
// 6.2. Let success be the result of awaiting acquire a wake lock with promise // 6.2. Let success be the result of awaiting acquire a wake lock with promise
......
...@@ -20,7 +20,7 @@ promise_test(t => { ...@@ -20,7 +20,7 @@ promise_test(t => {
const screenLock = WakeLock.request('screen'); const screenLock = WakeLock.request('screen');
window.testRunner.setPageVisibility('hidden'); window.testRunner.setPageVisibility('hidden');
assert_true(document.hidden); assert_true(document.hidden);
return promise_rejects(t, "AbortError", screenLock); return promise_rejects(t, "NotAllowedError", screenLock);
}, "WakeLock.request('screen') aborts when the page is hidden"); }, "WakeLock.request('screen') aborts when the page is hidden");
promise_test(async t => { promise_test(async t => {
...@@ -30,7 +30,7 @@ promise_test(async t => { ...@@ -30,7 +30,7 @@ promise_test(async t => {
const screenLock = WakeLock.request('screen', { signal: controller.signal }); const screenLock = WakeLock.request('screen', { signal: controller.signal });
window.testRunner.setPageVisibility('hidden'); window.testRunner.setPageVisibility('hidden');
assert_true(document.hidden); assert_true(document.hidden);
await promise_rejects(t, "AbortError", screenLock); await promise_rejects(t, "NotAllowedError", screenLock);
controller.abort(); controller.abort();
}, "Aborting a rejected wake lock does not crash"); }, "Aborting a rejected wake lock does not crash");
</script> </script>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment