Skip to content

Commit 62b6255

Browse files
ayuishiichromium-wpt-export-bot
authored andcommitted
Buckets: Implement IDL for StorageBuckets
This change adds initial draft of IDL for Storage Buckets. This does not have the full implementation of the API and only stores bucket names in the renderer. Implementation of the endpoints will come in following CLs. This CL adds the following. navigator.storageBuckets - openOrCreate(name): Stores bucket name if it doesn't exist already - keys(): Lists stored bucket names in the renderer - delete(name): Deletes specified bucket name from stored list Bug: 1107553 Change-Id: I84cd5f877cf5719b2bb74c9b50c75f1ffd604154 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2308509 Reviewed-by: Kentaro Hara <[email protected]> Reviewed-by: Victor Costan <[email protected]> Commit-Queue: Ayu Ishii <[email protected]> Cr-Commit-Position: refs/heads/master@{#828259}
1 parent b595c93 commit 62b6255

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

storage/buckets/META.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
spec: https://github.com/WICG/storage-buckets
2+
suggested_reviewers:
3+
- ayui
4+
- jsbell
5+
- pwnall
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
// META: title=Buckets API: Basic tests for openOrCreate(), keys(), delete().
2+
// META: global=window,worker
3+
4+
'use strict';
5+
6+
// This test is for initial IDL version optimized for debugging.
7+
// Split and add extensive testing once implementation for the endpoints are
8+
// added and method definitions are more defined.
9+
promise_test(async testCase => {
10+
await navigator.storageBuckets.openOrCreate('bucket_name');
11+
testCase.add_cleanup(async () => {
12+
await navigator.storageBuckets.delete('bucket_name');
13+
});
14+
15+
const buckets = await navigator.storageBuckets.keys();
16+
assert_equals(buckets.length, 1);
17+
assert_equals(buckets[0], 'bucket_name');
18+
}, 'openOrCreate() stores bucket name');
19+
20+
promise_test(async testCase => {
21+
await navigator.storageBuckets.openOrCreate('bucket_name');
22+
await navigator.storageBuckets.openOrCreate('bucket_name');
23+
testCase.add_cleanup(async () => {
24+
await navigator.storageBuckets.delete('bucket_name');
25+
});
26+
27+
const buckets = await navigator.storageBuckets.keys();
28+
assert_equals(buckets.length, 1);
29+
assert_equals(buckets[0], 'bucket_name');
30+
}, 'openOrCreate() does not store duplicate bucket name');
31+
32+
promise_test(async testCase => {
33+
await navigator.storageBuckets.openOrCreate('bucket_name3');
34+
await navigator.storageBuckets.openOrCreate('bucket_name1');
35+
await navigator.storageBuckets.openOrCreate('bucket_name2');
36+
testCase.add_cleanup(async () => {
37+
await navigator.storageBuckets.delete('bucket_name1');
38+
await navigator.storageBuckets.delete('bucket_name2');
39+
await navigator.storageBuckets.delete('bucket_name3');
40+
});
41+
42+
const buckets = await navigator.storageBuckets.keys();
43+
assert_equals(buckets.length, 3);
44+
assert_equals(buckets[0], 'bucket_name1');
45+
assert_equals(buckets[1], 'bucket_name2');
46+
assert_equals(buckets[2], 'bucket_name3');
47+
}, 'keys() lists all stored bucket names alphabetically');
48+
49+
promise_test(async testCase => {
50+
await navigator.storageBuckets.openOrCreate('bucket_name1');
51+
await navigator.storageBuckets.openOrCreate('bucket_name2');
52+
testCase.add_cleanup(async () => {
53+
await navigator.storageBuckets.delete('bucket_name1');
54+
await navigator.storageBuckets.delete('bucket_name2');
55+
});
56+
57+
let buckets = await navigator.storageBuckets.keys();
58+
assert_equals(buckets.length, 2);
59+
assert_equals(buckets[0], 'bucket_name1');
60+
assert_equals(buckets[1], 'bucket_name2');
61+
62+
await navigator.storageBuckets.delete('bucket_name1');
63+
64+
buckets = await navigator.storageBuckets.keys();
65+
assert_equals(buckets.length, 1);
66+
assert_equals(buckets[0], 'bucket_name2');
67+
}, 'delete() removes stored bucket name');
68+
69+
promise_test(async testCase => {
70+
await navigator.storageBuckets.openOrCreate('bucket_name');
71+
testCase.add_cleanup(async () => {
72+
await navigator.storageBuckets.delete('bucket_name');
73+
});
74+
75+
let buckets = await navigator.storageBuckets.keys();
76+
assert_equals(buckets.length, 1);
77+
assert_equals(buckets[0], 'bucket_name');
78+
79+
await navigator.storageBuckets.delete('does-not-exist');
80+
81+
buckets = await navigator.storageBuckets.keys();
82+
assert_equals(buckets.length, 1);
83+
assert_equals(buckets[0], 'bucket_name');
84+
}, 'delete() does nothing if bucket name does not exist');

0 commit comments

Comments
 (0)