Bug 1440033 [wpt PR 9609] - Update Web Platform Tests for storage APIs in 'data:' contexts, a=testonly

Automatic update from web-platform-testsUpdate Web Platform Tests for storage APIs in 'data:' contexts

Per https://github.com/w3c/web-platform-tests/pull/4832 remove
WebSQL cases from WPT's workers/data-url*.html since it's not
otherwise tested in WPT, and the test "passes" even if the API is
not present. Also add an addition assertion that indexedDB is
present before blithely checking that using it throws.

WebSQL is not exposed to Workers in Chrome so we don't lose
coverage here - we only "passed" because the API was not present
in these contexts. The webexposed/ tests cover this.

Change-Id: I0aa05ff9e674351a2a49ba0bae8e5a9938b2cf34
Reviewed-on: https://chromium-review.googlesource.com/929602
Reviewed-by: Philip Jägenstedt <foolip@chromium.org>
Commit-Queue: Joshua Bell <jsbell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538833}

wpt-commits: d116ec3d76ee417df0982c4dde13c1baa846cf42
wpt-pr: 9609
wpt-commits: d116ec3d76ee417df0982c4dde13c1baa846cf42
wpt-pr: 9609
This commit is contained in:
Joshua Bell 2018-03-26 13:03:39 +00:00 committed by James Graham
parent 5d8028c48d
commit 79387e064f
3 changed files with 23 additions and 14 deletions

View File

@ -604397,11 +604397,11 @@
"support" "support"
], ],
"workers/data-url-shared.html": [ "workers/data-url-shared.html": [
"3650dbf419d8bbfe7380a36426793336998975cc", "7fae8fa78f0e66ffa8cf0dd1bf3e887fae349e4e",
"testharness" "testharness"
], ],
"workers/data-url.html": [ "workers/data-url.html": [
"c693eac37e1a8856b82a923b2f1142360afc6411", "3de4925fb0a05ecf4da839dbf9b293c73a3c0354",
"testharness" "testharness"
], ],
"workers/interfaces.worker.js": [ "workers/interfaces.worker.js": [

View File

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>data URL shared worker</title> <title>data URL shared workers</title>
<script src="/common/get-host-info.sub.js"></script> <script src="/common/get-host-info.sub.js"></script>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
@ -15,8 +15,8 @@ function assert_worker_sends_pass(test_desc, mime_type, worker_code) {
}, test_desc); }, test_desc);
} }
function assert_worker_throws(test_desc, worker_code, before_connect_worker_code) { function assert_worker_throws(test_desc, worker_code) {
assert_worker_sends_pass(test_desc, '', `try { ${worker_code}; port.postMessage("FAIL"); } catch (e) { port.postMessage("PASS"); }`, before_connect_worker_code); assert_worker_sends_pass(test_desc, '', `try { ${worker_code}; port.postMessage("FAIL"); } catch (e) { port.postMessage("PASS"); }`);
} }
// Any MIME type allowed // Any MIME type allowed
@ -28,12 +28,17 @@ assert_worker_sends_pass('empty MIME allowed', '', 'port.postMessage("PASS")');
assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'port.onmessage = function(e) { port.postMessage("PASS"); }'); assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'port.onmessage = function(e) { port.postMessage("PASS"); }');
// test access to storage APIs // test access to storage APIs
// once https://github.com/w3c/IndexedDB/pull/150 lands, this is spec conforming
assert_worker_throws('indexedDB inaccessible', 'self.indexedDB.open("someDBName")'); // https://w3c.github.io/IndexedDB/#dom-idbfactory-open
assert_worker_throws('Web SQL Database inaccessible', 'self.openDatabase("someDBName", "1.0", "someDBName", 1);'); assert_worker_sends_pass('indexedDB is present', '', 'port.postMessage("indexedDB" in self ? "PASS" : "FAIL")');
assert_worker_throws('indexedDB is inaccessible', 'self.indexedDB.open("someDBName")');
// Other standardized storage APIs are either not exposed to workers
// (e.g. window.localStorage, window.sessionStorage), or are [SecureContext]
// (e.g. self.caches).
// 'data:' workers are cross-origin // 'data:' workers are cross-origin
assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => port.postMessage("FAIL"), () => port.postMessage("PASS"))'); assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => port.postMessage("FAIL"), () => port.postMessage("PASS"))');
// 'data:' workers have opaque origin // 'data:' workers have opaque origin
assert_worker_sends_pass('worker has opaque origin', 'application/javascript', 'if (self.location.origin == "null") port.postMessage("PASS"); else { port.postMessage("FAIL"); }'); assert_worker_sends_pass('worker has opaque origin', 'application/javascript', 'if (self.location.origin == "null") port.postMessage("PASS"); else { port.postMessage("FAIL"); }');

View File

@ -1,8 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>Test workers can be started with a data URL</title> <title>data URL dedicated workers</title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script> <script>
// Helper assert functions -START- // Helper assert functions -START-
function assert_worker_sends_pass(test_desc, mime_type, worker_code) { function assert_worker_sends_pass(test_desc, mime_type, worker_code) {
@ -36,7 +35,7 @@ function assert_worker_construction_fails(test_desc, mime_type, worker_code) {
// Actual tests -START- // Actual tests -START-
// Any MIME type // Any MIME type allowed
assert_worker_sends_pass('application/javascript MIME allowed', 'application/javascript', 'self.postMessage("PASS")'); assert_worker_sends_pass('application/javascript MIME allowed', 'application/javascript', 'self.postMessage("PASS")');
assert_worker_sends_pass('text/plain MIME allowed', 'text/plain', 'self.postMessage("PASS")'); assert_worker_sends_pass('text/plain MIME allowed', 'text/plain', 'self.postMessage("PASS")');
assert_worker_sends_pass('empty MIME allowed', '', 'self.postMessage("PASS")'); assert_worker_sends_pass('empty MIME allowed', '', 'self.postMessage("PASS")');
@ -45,9 +44,14 @@ assert_worker_sends_pass('empty MIME allowed', '', 'self.postMessage("PASS")');
assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'onmessage = function(e) { self.postMessage("PASS"); }'); assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'onmessage = function(e) { self.postMessage("PASS"); }');
// test access to storage APIs // test access to storage APIs
// once https://github.com/w3c/IndexedDB/pull/150 lands, this is spec conforming
assert_worker_throws('indexedDB inaccessible', 'self.indexedDB.open("someDBName")'); // https://w3c.github.io/IndexedDB/#dom-idbfactory-open
assert_worker_throws('Web SQL Database inaccessible', 'self.openDatabase("someDBName", "1.0", "someDBName", 1);'); assert_worker_sends_pass('indexedDB is present', '', 'self.postMessage("indexedDB" in self ? "PASS" : "FAIL")');
assert_worker_throws('indexedDB is inaccessible', 'self.indexedDB.open("someDBName")');
// Other standardized storage APIs are either not exposed to workers
// (e.g. window.localStorage, window.sessionStorage), or are [SecureContext]
// (e.g. self.caches).
// 'data:' workers are cross-origin // 'data:' workers are cross-origin
assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => self.postMessage("FAIL"), () => self.postMessage("PASS"))'); assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => self.postMessage("FAIL"), () => self.postMessage("PASS"))');