diff options
Diffstat (limited to 'dom/webidl/Storage.webidl')
-rw-r--r-- | dom/webidl/Storage.webidl | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/dom/webidl/Storage.webidl b/dom/webidl/Storage.webidl new file mode 100644 index 0000000000..5ee5e2c737 --- /dev/null +++ b/dom/webidl/Storage.webidl @@ -0,0 +1,101 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public +* License, v. 2.0. If a copy of the MPL was not distributed with this file, +* You can obtain one at http://mozilla.org/MPL/2.0/. +* +* The origin of this IDL file is +* http://www.whatwg.org/html/#the-storage-interface +* +* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and +* Opera Software ASA. You are granted a license to use, reproduce +* and create derivative works of this document. +*/ + +[Exposed=Window] +interface Storage { + [Throws, NeedsSubjectPrincipal] + readonly attribute unsigned long length; + + [Throws, NeedsSubjectPrincipal] + DOMString? key(unsigned long index); + + [Throws, NeedsSubjectPrincipal] + getter DOMString? getItem(DOMString key); + + [Throws, NeedsSubjectPrincipal] + setter undefined setItem(DOMString key, DOMString value); + + [Throws, NeedsSubjectPrincipal] + deleter undefined removeItem(DOMString key); + + [Throws, NeedsSubjectPrincipal] + undefined clear(); + + [ChromeOnly] + readonly attribute boolean isSessionOnly; +}; + +/** + * Testing methods that exist only for the benefit of automated glass-box + * testing. Will never be exposed to content at large and unlikely to be useful + * in a WebDriver context. + */ +partial interface Storage { + /** + * Does a security-check and ensures the underlying database has been opened + * without actually calling any database methods. (Read-only methods will + * have a similar effect but also impact the state of the snapshot.) + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + undefined open(); + + /** + * Automatically ends any explicit snapshot and drops the reference to the + * underlying database, but does not otherwise perturb the database. + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + undefined close(); + + /** + * Ensures the database has been opened and initiates an explicit snapshot. + * Snapshots are normally automatically ended and checkpointed back to the + * parent, but explicitly opened snapshots must be explicitly ended via + * `endExplicitSnapshot` or `close`. + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + undefined beginExplicitSnapshot(); + + /** + * Checkpoints the explicitly begun snapshot. This is only useful for testing + * of snapshot re-using when multiple checkpoints are involved. There's no + * need to call this before `endExplicitSnapshot` because it checkpoints the + * snapshot before it's ended. + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + undefined checkpointExplicitSnapshot(); + + /** + * Ends the explicitly begun snapshot and retains the underlying database. + * Compare with `close` which also drops the reference to the database. + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + undefined endExplicitSnapshot(); + + /** + * Returns true if the underlying database has been opened, the database is + * not being closed and it has a snapshot (initialized implicitly or + * explicitly). + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + readonly attribute boolean hasSnapshot; + + /** + * Returns snapshot usage. + * + * @throws NS_ERROR_NOT_AVAILABLE if the underlying database hasn't been + * opened or the database is being closed or it doesn't have a + * snapshot. + */ + [Throws, NeedsSubjectPrincipal, Pref="dom.storage.testing"] + readonly attribute long long snapshotUsage; +}; |