mirror of
https://github.com/HeyPuter/firefox.git
synced 2026-11-13 20:14:57 -10:00
Automatic update from web-platform-tests [shared storage] Validate that batchUpdate() cannot contain inner method locks As part of the transactional batchUpdate() proposal (spec PR:[1]), inner method locks are no longer permitted. This CL implements validation in both the caller code and mojom traits. Note that while unrecognized IDL dictionary fields are generally allowed, strict validation is enforced for this deprecated 'withLock' field to prevent potential misuse. [1] https://github.com/WICG/shared-storage/pull/231 Bug: 404568020 Change-Id: I9dbc395445342a34a68f12b31fdc285a7576787f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6393777 Reviewed-by: Maks Orlovich <[email protected]> Commit-Queue: Yao Xiao <[email protected]> Reviewed-by: Cammie Smith Barnes <[email protected]> Reviewed-by: Dominic Farolino <[email protected]> Cr-Commit-Position: refs/heads/main@{#1440291} -- wpt-commits: 86858ee83ee8acec885b42923b656a61fde7f257 wpt-pr: 51720
126 lines
3.2 KiB
HTML
126 lines
3.2 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
'use strict';
|
|
|
|
promise_test(async t => {
|
|
return promise_rejects_js(t, TypeError, sharedStorage.set());
|
|
}, 'sharedStorage.set with 0 argument');
|
|
|
|
promise_test(async t => {
|
|
return promise_rejects_js(t, TypeError, sharedStorage.set("a"));
|
|
}, 'sharedStorage.set with 1 argument');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.set("a", "b");
|
|
}, 'sharedStorage.set with 2 arguments');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.set("a", "b", {ignoreIfPresent: true});
|
|
}, 'sharedStorage.set with options');
|
|
|
|
promise_test(async t => {
|
|
return promise_rejects_js(t, TypeError, sharedStorage.set("a", "b", "c"));
|
|
}, 'sharedStorage.set with invalid options');
|
|
|
|
promise_test(async t => {
|
|
try {
|
|
await sharedStorage.set('', 'b');
|
|
} catch (e) {
|
|
assert_equals(e.name, 'DataError');
|
|
return;
|
|
}
|
|
assert_unreached("did not reject");
|
|
}, 'sharedStorage.set with empty key');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.append("a", "b");
|
|
}, 'sharedStorage.append');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.clear();
|
|
}, 'sharedStorage.clear');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.delete("a");
|
|
}, 'sharedStorage.delete');
|
|
|
|
test(() => {
|
|
try {
|
|
let a = new SharedStorageSetMethod('a');
|
|
} catch (e) {
|
|
assert_equals(e.name, 'TypeError');
|
|
return;
|
|
}
|
|
assert_unreached("did not throw");
|
|
}, 'new SharedStorageSetMethod with 1 argument');
|
|
|
|
test(() => {
|
|
let a = new SharedStorageSetMethod('a', 'b');
|
|
}, 'new SharedStorageSetMethod with 2 arguments');
|
|
|
|
test(() => {
|
|
try {
|
|
let a = new SharedStorageAppendMethod('a');
|
|
} catch (e) {
|
|
assert_equals(e.name, 'TypeError');
|
|
return;
|
|
}
|
|
assert_unreached("did not throw");
|
|
}, 'new SharedStorageAppendMethod with 1 argument');
|
|
|
|
test(() => {
|
|
let a = new SharedStorageAppendMethod('a', 'b');
|
|
}, 'new SharedStorageAppendMethod with 2 arguments');
|
|
|
|
test(() => {
|
|
try {
|
|
let a = new SharedStorageDeleteMethod();
|
|
} catch (e) {
|
|
assert_equals(e.name, 'TypeError');
|
|
return;
|
|
}
|
|
assert_unreached("did not throw");
|
|
}, 'new SharedStorageDeleteMethod with no arguments');
|
|
|
|
test(() => {
|
|
let a = new SharedStorageDeleteMethod('a');
|
|
}, 'new SharedStorageDeleteMethod with 1 argument');
|
|
|
|
test(() => {
|
|
try {
|
|
let a = SharedStorageClearMethod();
|
|
} catch (e) {
|
|
assert_equals(e.name, 'TypeError');
|
|
return;
|
|
}
|
|
assert_unreached("did not throw");
|
|
}, 'call SharedStorageClearMethod() as a function');
|
|
|
|
test(() => {
|
|
let a = new SharedStorageClearMethod();
|
|
}, 'new SharedStorageClearMethod with no arguments');
|
|
|
|
promise_test(() => {
|
|
return sharedStorage.batchUpdate([
|
|
new SharedStorageSetMethod("key0", "value0"),
|
|
new SharedStorageAppendMethod("key1", "value1"),
|
|
new SharedStorageDeleteMethod("key2"),
|
|
new SharedStorageClearMethod()
|
|
], {withLock: "lock3"});
|
|
}, 'sharedStorage.batchUpdate');
|
|
|
|
promise_test(async t => {
|
|
return promise_rejects_js(t, TypeError, sharedStorage.batchUpdate());
|
|
}, 'sharedStorage.batchUpdate without \'methods\' argument');
|
|
|
|
promise_test(async t => {
|
|
return promise_rejects_js(t, TypeError, sharedStorage.batchUpdate(["123"]));
|
|
}, 'sharedStorage.batchUpdate with invalid \'methods\' argument');
|
|
|
|
</script>
|
|
</body>
|