From ddd9131d2c7fac5758692974d85acbeb0ea0885d Mon Sep 17 00:00:00 2001 From: Francois Beaufort Date: Fri, 22 Nov 2019 07:18:42 -0800 Subject: [PATCH] [WebNFC] Add permission prompt for NDEFReader.scan This CL makes sure NDEFReader.scan shows a permission request if user didn't previously allow Web NFC. Screenshots: https://photos.app.goo.gl/k7wz55v9ELVTS19i8 Bug:520391 Change-Id: I10125c8db9a4b1cdd3476939bdf650583c7f19b3 --- lint.whitelist | 2 ++ web-nfc/NDEFReader-document-hidden-manual.https.html | 5 +++++ web-nfc/NDEFReader_scan.https.html | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/lint.whitelist b/lint.whitelist index 4e6a21464c80418..be6ae4f0314942a 100644 --- a/lint.whitelist +++ b/lint.whitelist @@ -678,6 +678,8 @@ LAYOUTTESTS APIS: import-maps/resources/jest-test-helper.js LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js LAYOUTTESTS APIS: resources/chromium/nfc-mock.js LAYOUTTESTS APIS: resources/chromium/webxr-test.js +LAYOUTTESTS APIS: web-nfc/NDEFReader-document-hidden-manual.https.html +LAYOUTTESTS APIS: web-nfc/NDEFReader_scan.https.html LAYOUTTESTS APIS: web-nfc/NDEFWriter_push.https.html # Signed Exchange files have hard-coded URLs in the certUrl field diff --git a/web-nfc/NDEFReader-document-hidden-manual.https.html b/web-nfc/NDEFReader-document-hidden-manual.https.html index 565492bc4f8d832..9cf42e83bf306b5 100644 --- a/web-nfc/NDEFReader-document-hidden-manual.https.html +++ b/web-nfc/NDEFReader-document-hidden-manual.https.html @@ -14,6 +14,11 @@ if (document.hidden) reject(); resolve(); }); + if (window.testRunner) { + // Grant nfc permissions for Chromium testrunner. + window.testRunner.setPermission('nfc', 'granted', + location.origin, location.origin); + } await reader.scan(); await promise; }, "Test NDEFReader.onreading is not fired when document is hidden"); diff --git a/web-nfc/NDEFReader_scan.https.html b/web-nfc/NDEFReader_scan.https.html index edd968cf0ff1975..78160fbcb2ab11a 100644 --- a/web-nfc/NDEFReader_scan.https.html +++ b/web-nfc/NDEFReader_scan.https.html @@ -49,6 +49,16 @@ }, "Test that NDEFReader.scan rejects if NDEFScanOptions.id has wrong \ protocol."); +promise_test(async t => { + if (window.testRunner) { + // Deny nfc permissions for Chromium testrunner. + window.testRunner.setPermission('nfc', 'denied', + location.origin, location.origin); + } + const reader = new NDEFReader(); + await promise_rejects(t, 'NotAllowedError', reader.scan()); +}, "NDEFReader.scan should fail if user permission is not granted."); + nfc_test(async (t, mockNFC) => { mockNFC.setHWStatus(NFCHWStatus.DISABLED); const reader = new NDEFReader();