- From: poot <cvsmail@w3.org>
- Date: Tue, 18 Aug 2009 13:40:12 +0900 (JST)
- To: public-html-diffs@w3.org
hixie: Add a feature to openDatabase() to make creating the database the
first time way easier. (whatwg r3652)
http://dev.w3.org/cvsweb/html5/webdatabase/Overview.html?r1=1.15&r2=1.16&f=h
http://html5.org/tools/web-apps-tracker?from=3651&to=3652
===================================================================
RCS file: /sources/public/html5/webdatabase/Overview.html,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- Overview.html 18 Aug 2009 02:57:58 -0000 1.15
+++ Overview.html 18 Aug 2009 04:39:47 -0000 1.16
@@ -416,52 +416,112 @@
another browser window) trying to write to a database with incorrect
assumptions.<pre class="idl">[Supplemental, NoInterfaceObject]
interface <span>WindowDatabase</span> {
- <a href="#database">Database</a> <a href="#dom-opendatabase" title="dom-opendatabase">openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize);
+ <a href="#database">Database</a> <a href="#dom-opendatabase" title="dom-opendatabase">openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in optional <a href="#databasecallback">DatabaseCallback</a> creationCallback);
};
<span>Window</span> implements <span>WindowDatabase</span>;
[Supplemental, NoInterfaceObject]
interface <span>WorkerUtilsDatabase</span> {
- <a href="#database">Database</a> <a href="#dom-opendatabase" title="dom-opendatabase">openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize);
- <a href="#databasesync">DatabaseSync</a> <a href="#dom-opendatabase-sync" title="dom-opendatabase-sync">openDatabaseSync</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize);
+ <a href="#database">Database</a> <a href="#dom-opendatabase" title="dom-opendatabase">openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in optional <a href="#databasecallback">DatabaseCallback</a> creationCallback);
+ <a href="#databasesync">DatabaseSync</a> <a href="#dom-opendatabase-sync" title="dom-opendatabase-sync">openDatabaseSync</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in optional <a href="#databasecallback">DatabaseCallback</a> creationCallback);
};
-<span>WorkerUtils</span> implements <span>WorkerUtilsDatabase</span>;</pre><p>The <dfn id="dom-opendatabase" title="dom-opendatabase"><code>openDatabase()</code></dfn> method on
- the <code>Window</code> and <code>WorkerUtils</code> interfaces must
- return a newly constructed <code><a href="#database">Database</a></code> object that
- represents the database requested.<p>The <dfn id="dom-opendatabase-sync" title="dom-opendatabase-sync"><code>openDatabaseSync()</code></dfn>
- method on the <code>WorkerUtils</code> interfaces must return a
- newly constructed <code><a href="#databasesync">DatabaseSync</a></code> object that represents
- the database requested.<p>These methods take four arguments: a database name, a database
- version, a display name, and an estimated size, in bytes, of the
- data that will be stored in the database.<p>The database requested is the one with the given database
- name from the appropriate <span>origin</span>.<p>The <code title="dom-opendatabase"><a href="#dom-opendatabase">openDatabase()</a></code> method
- on the <code>Window</code> object must use and create databases from
- the <span>origin</span> of the <span>active document</span> of the
- <span>browsing context</span> of the <code>Window</code> object on
- which the method was invoked.<p>The <code title="dom-opendatabase"><a href="#dom-opendatabase">openDatabase()</a></code> and
- <code title="dom-opendatabase-sync"><a href="#dom-opendatabase-sync">openDatabaseSync()</a></code>
- methods on the <code>WorkerUtils</code> object must use and create
- databases from the <span>origin</span> of the scripts in the
- worker.<p>All strings including the empty string are valid database
+<span>WorkerUtils</span> implements <span>WorkerUtilsDatabase</span>;
+
+[Callback=FunctionOnly, NoInterfaceObject]
+interface <dfn id="databasecallback">DatabaseCallback</dfn> {
+ void <span title="dom-databasecallback-handleEvent">handleEvent</span>(in <a href="#database">Database</a> database);
+};</pre><p>The <dfn id="dom-opendatabase" title="dom-opendatabase"><code>openDatabase()</code></dfn> method on
+ the <code>Window</code> and <code>WorkerUtils</code> interfaces and
+ the <dfn id="dom-opendatabase-sync" title="dom-opendatabase-sync"><code>openDatabaseSync()</code></dfn>
+ method on the <code>WorkerUtils</code> interface take the following
+ arguments: a database name, a database version, a display name, an
+ estimated size — in bytes — of the data that will be
+ stored in the database, and optionally a callback to be invoked if
+ the database has not yet been created.</p>
+
+ When invoked, these methods must run the following steps:<ol><li>
+
+ <p>The user agent may raise a <code>SECURITY_ERR</code> exception
+ instead of returning a <code><a href="#database">Database</a></code> object if the request
+ violates a policy decision (e.g. if the user agent is configured
+ to not allow the page to open databases).</p>
+
+ </li>
+
+ <li>
+
+ <p>For the method on the <code>Window</code> object: let <var title="">origin</var> be the <span>origin</span> of the
+ <span>active document</span> of the <span>browsing context</span>
+ of the <code>Window</code> object on which the method was
+ invoked.</p>
+
+ <p>For the methods on the <code>WorkerUtils</code> object: let
+ <var title="">origin</var> be the <span>origin</span> of the
+ scripts in the worker.</p>
+
+ </li>
+
+ <li><p>If the database version provided is not the empty string,
+ and there is already a database with the given name from the origin
+ <var title="">origin</var>, but the database has a different
+ version than the version provided, then throw an
+ <code>INVALID_STATE_ERR</code> exception and abort these
+ steps.</li>
+
+ <li>
+
+ <p>If no database with the given name from the origin <var title="">origin</var> exists, then create the database, let its
+ version be the given database version (which might be the empty
+ string), and let <var title="">created</var> be true. Otherwise,
+ let <var title="">created</var> be false.</p>
+
+ </li>
+
+ <li>
+
+ <p>For the <code title="dom-opendatabase"><a href="#dom-opendatabase">openDatabase()</a></code>
+ methods: let <var title="">result</var> be a newly constructed
+ <code><a href="#database">Database</a></code> object representing the database with the
+ given database name from the origin <var title="">origin</var>.</p>
+
+ <p>For the <code title="dom-opendatabase-sync"><a href="#dom-opendatabase-sync">openDatabaseSync()</a></code> method:
+ let <var title="">result</var> be a newly constructed
+ <code><a href="#databasesync">DatabaseSync</a></code> object representing the database with
+ the given database name from the origin <var title="">origin</var>.</p>
+
+ </li>
+
+ <li>
+
+ <p>If <var title="">created</var> is false or if no callback was
+ passed to the method, skip this step. Otherwise:</p>
+
+ <p>For the <code title="dom-opendatabase"><a href="#dom-opendatabase">openDatabase()</a></code>
+ methods: <span>queue a task</span> to to invoke the callback with
+ <var title="">result</var> as its only argument.</p>
+
+ <p>For the <code title="dom-opendatabase-sync"><a href="#dom-opendatabase-sync">openDatabaseSync()</a></code> method:
+ invoke the callback with <var title="">result</var> as its only
+ argument. If the callback throws an exception, rethrow that
+ exception and abort these steps.</p>
+
+ </li>
+
+ <li>
+
+ <p>Return <var title="">result</var>.</p>
+
+ </li>
+
+ </ol><p>All strings including the empty string are valid database
names. Database names must be compared in a
<span>case-sensitive</span> manner.<p class="note">Implementations can support this even in
environments that only support a subset of all strings as database
names by mapping database names (e.g. using a hashing algorithm) to
- the supported set of names.<p>If the database version provided is not the empty string, and the
- database already exists but has a different version, or no version,
- then the method must raise an <code>INVALID_STATE_ERR</code>
- exception.<p>The version that the database was opened with is the <dfn id="concept-database-expected-version" title="concept-database-expected-version">expected version</dfn> of
+ the supported set of names.<p>The version that the database was opened with is the <dfn id="concept-database-expected-version" title="concept-database-expected-version">expected version</dfn> of
this <code><a href="#database">Database</a></code> or <code><a href="#databasesync">DatabaseSync</a></code> object. It
can be the empty string, in which case there is no expected version
- — any version is fine.<p>Otherwise, if the database version provided is the empty string,
- or if the database doesn't yet exist, or if the database exists and
- the version requested is the same as the current version associated
- with the database, then the method must return an object
- representing the database that has the name that was given. If no
- such database exists, it must be created first.<p>The user agent may raise a <code>SECURITY_ERR</code> exception
- instead of returning a <code><a href="#database">Database</a></code> object if the request
- violates a policy decision (e.g. if the user agent is configured to
- not allow the page to open databases).<p>User agents are expected to use the display name and the
+ — any version is fine.<p>User agents are expected to use the display name and the
estimated database size to optimize the user experience. For
example, a user agent could use the estimated size to suggest an
initial quota to the user. This allows a site that is aware that it
Received on Tuesday, 18 August 2009 04:40:49 UTC