forked from WICG/storage-buckets
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add caches and getDirectory text. (WICG#47)
* Updates around user visibility of buckets. * Add self as author. * Clarify wording. * Add bucket durability and IndexedDB text. * algorithm tag * caches and getDirectory * remove abbreviation Co-authored-by: Evan Stade <[email protected]>
- Loading branch information
Showing
1 changed file
with
59 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,7 @@ Editor: Ayu Ishii, Google https://www.google.com/, [email protected] | |
Former Editor: Victor Costan | ||
!Participate: <a href="https://github.com/WICG/storage-buckets">GitHub WICG/storage-buckets</a> (<a href="https://github.com/WICG/storage-buckets/issues/new">new issue</a>, <a href="https://github.com/WICG/storage-buckets/issues?state=open">open issues</a>) | ||
Abstract: The Storage Buckets API provides a way for sites to organize locally stored data into groupings called "storage buckets". This allows the user agent or sites to manage and delete buckets independently rather than applying the same treatment to all the data from a single origin. | ||
Markup Shorthands: css no, markdown yes | ||
</pre> | ||
|
||
<h2 id="storage-bucket-manager">The {{StorageBucketManager}} interface</h2> | ||
|
@@ -52,6 +53,12 @@ dictionary StorageBucketOptions { | |
</xmp> | ||
|
||
<h3 id="storage-bucket-open">Creating a bucket</h3> | ||
|
||
When not null, {{StorageBucketOptions/durability}} is a hint to the user agent | ||
specifying the desired {{StorageBucket/durability}}. The user agent MAY | ||
create a new {{StorageBucket}} with this [=bucket durability=]. The user agent | ||
MUST NOT modify the [=bucket durability=] of an existing bucket. | ||
|
||
<h3 id="storage-bucket-delete">Deleting a bucket</h3> | ||
<h3 id="storage-bucket-keys">Enumerating buckets</h3> | ||
|
||
|
@@ -78,4 +85,56 @@ interface StorageBucket { | |
}; | ||
</xmp> | ||
|
||
<h3 id="storage-bucket-durability">Durability</h3> | ||
|
||
A {{StorageBucket}} has a <dfn>bucket durability</dfn>. This reflects whether the user agent | ||
will prioritize performance or durability when completing operations on data in the bucket. | ||
The value is one of the following: | ||
|
||
: "{{StorageBucketDurability/strict}}" | ||
:: The user agent MUST consider that operations on data in the bucket are successful only after verifying that outstanding changes have been written to a persistent storage medium. | ||
: "{{StorageBucketDurability/relaxed}}" | ||
:: The user agent MUST consider that operations on data in the bucket are successful as soon as all outstanding changes have been written to the operating system, without subsequent verification. | ||
|
||
The user agent MUST ignore the [=bucket durability=] for operations that otherwise override default durability behavior. | ||
|
||
<h3 id="storage-bucket-indexeddb">Using Indexed Database</h3> | ||
|
||
A {{StorageBucket}} has an {{IDBFactory}} object. [[IndexedDB]] objects created through | ||
{{StorageBucket/indexedDB}} are associated with the bucket. | ||
|
||
<div algorithm> | ||
|
||
The user agent MUST consider the associated {{StorageBucket/durability}} when evaluating the <a spec="IndexedDB">durability hint</a> |durability| | ||
of an {{IDBTransaction}} |transaction|. To <dfn>calculate the effective <a spec="IndexedDB">durability hint</a></dfn> for |transaction| with associated | ||
|bucket|: | ||
|
||
1. If |durability| is not "{{IDBTransactionDurability/default}}", then return |durability|. | ||
|
||
1. If |bucket|'s [=bucket durability=] is "{{StorageBucketDurability/strict}}", then return "{{IDBTransactionDurability/strict}}". | ||
|
||
1. Return "{{IDBTransactionDurability/relaxed}}". | ||
|
||
</div> | ||
|
||
<h3 id="storage-bucket-caches">Using CacheStorage</h3> | ||
|
||
A {{StorageBucket}} has a {{CacheStorage}} object. [[service-workers#cache-objects]] objects created through {{StorageBucket/caches}} are associated with the bucket. | ||
|
||
<h3 id="storage-bucket-getdirectory">Using an Origin Private File System</h3> | ||
|
||
Issue: [[Storage]] needs to define helpers to retrieve the bottle map for a given (non-default) bucket. | ||
|
||
Issue: [[FS]] needs to define a helper to retrieve an OPFS given a bottle map. | ||
|
||
<div algorithm> | ||
|
||
The <dfn method for=StorageBucket>getDirectory()</dfn> steps for |bucket| are: | ||
|
||
1. Let |map| be the result of [=obtain a local storage bottle map=] with |bucket| and `"fileSystem"`. | ||
|
||
1. Return the result of retrieving a [[FS#sandboxed-filesystem]] with |map|. | ||
|
||
</div> | ||
|
||
<h2 id="security-privacy">Security and privacy considerations</h2> |