mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 21:28:04 +02:00
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
67 lines
2.8 KiB
HTML
67 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<title>data URL dedicated workers</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
// Helper assert functions -START-
|
|
function assert_worker_sends_pass(test_desc, mime_type, worker_code) {
|
|
async_test(function(t) {
|
|
var w = new Worker(`data:${mime_type},${worker_code}`);
|
|
w.onmessage = t.step_func_done(function(e) {
|
|
assert_equals(e.data, 'PASS');
|
|
});
|
|
w.postMessage('SEND_PASS');
|
|
}, test_desc);
|
|
}
|
|
|
|
function assert_worker_throws(test_desc, worker_code) {
|
|
assert_worker_sends_pass(test_desc, '', `try { ${worker_code}; self.postMessage("FAIL"); } catch (e) { self.postMessage("PASS"); }`);
|
|
}
|
|
|
|
function assert_worker_construction_fails(test_desc, mime_type, worker_code) {
|
|
async_test(function(t) {
|
|
var w = new Worker(`data:${mime_type},${worker_code};postMessage("PASS")`);
|
|
w.onmessage = t.step_func_done(function(e) {
|
|
assert_unreached('Should not receive any message back.');
|
|
});
|
|
w.onerror = t.step_func_done(function(e) {
|
|
assert_true(true, 'Should throw ' + e.message);
|
|
// Stop the error from being propagated to the WPT test harness
|
|
e.preventDefault();
|
|
});
|
|
}, test_desc);
|
|
}
|
|
// Helper assert functions -END-
|
|
|
|
// Actual tests -START-
|
|
|
|
// Any MIME type allowed
|
|
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('empty MIME allowed', '', 'self.postMessage("PASS")');
|
|
|
|
// Communications goes both ways
|
|
assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'onmessage = function(e) { self.postMessage("PASS"); }');
|
|
|
|
// test access to storage APIs
|
|
|
|
// https://w3c.github.io/IndexedDB/#dom-idbfactory-open
|
|
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
|
|
assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => self.postMessage("FAIL"), () => self.postMessage("PASS"))');
|
|
|
|
// 'data:' workers have opaque origin
|
|
assert_worker_sends_pass('worker has opaque origin', 'application/javascript', 'if (self.location.origin == "null") {postMessage("PASS");} else {postMessage("FAIL");}');
|
|
|
|
setup({allow_uncaught_exception:true});
|
|
// invalid javascript will trigger an ErrorEvent
|
|
assert_worker_construction_fails('invalid javascript produces error', 'application/javascript', '}x=3');
|
|
|
|
// Actual tests -END-
|
|
</script>
|