Commit 306e3fb5 authored by jsbell's avatar jsbell Committed by Commit bot

Indexed DB: Ship getAll() and friends

This adds the following methods to existing Indexed DB interfaces.

* IDBObjectStore.getAll()
* IDBObjectStore.getAllKeys()
* IDBIndex.getAll()
* IDBIndex.getAllKeys()
* IDBObjectStore.openKeyCursor()
* IDBTransaction.objectStoreNames

Spec (2nd Edition Editor's Draft): https://w3c.github.io/IndexedDB/

Launch Tracking: https://crbug.com/525742

Dashboard: https://www.chromestatus.com/features/6537756637396992

Intent to Ship: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/uUx7vDWDOd4

Review URL: https://codereview.chromium.org/1363993003

Cr-Commit-Position: refs/heads/master@{#353921}
parent e863d130
......@@ -47,7 +47,8 @@ namespace content {
// This browser test is aimed towards exercising the IndexedDB bindings and
// the actual implementation that lives in the browser side.
class IndexedDBBrowserTest : public ContentBrowserTest {
class IndexedDBBrowserTest : public ContentBrowserTest,
public ::testing::WithParamInterface<const char*> {
public:
IndexedDBBrowserTest() : disk_usage_(-1) {}
......@@ -187,16 +188,6 @@ class IndexedDBBrowserTest : public ContentBrowserTest {
DISALLOW_COPY_AND_ASSIGN(IndexedDBBrowserTest);
};
class IndexedDBBrowserTestWithExperimentalAPIs
: public IndexedDBBrowserTest,
public ::testing::WithParamInterface<const char*> {
public:
void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(
switches::kEnableExperimentalWebPlatformFeatures);
}
};
IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, CursorTest) {
SimpleTest(GetTestUrl("indexeddb", "cursor_test.html"));
}
......@@ -242,8 +233,7 @@ IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, CallbackAccounting) {
SimpleTest(GetTestUrl("indexeddb", "callback_accounting.html"));
}
IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestWithExperimentalAPIs,
GetAllMaxMessageSize) {
IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, GetAllMaxMessageSize) {
SimpleTest(GetTestUrl("indexeddb", "getall_max_message_size.html"));
}
......@@ -701,11 +691,7 @@ static scoped_ptr<net::test_server::HttpResponse> CorruptDBRequestHandler(
} // namespace
// Experimental for IDBObjectStore.getAll()
using IndexedDBBrowserCorruptionTest = IndexedDBBrowserTestWithExperimentalAPIs;
IN_PROC_BROWSER_TEST_P(IndexedDBBrowserCorruptionTest,
OperationOnCorruptedOpenDatabase) {
IN_PROC_BROWSER_TEST_P(IndexedDBBrowserTest, OperationOnCorruptedOpenDatabase) {
ASSERT_TRUE(embedded_test_server()->Started() ||
embedded_test_server()->InitializeAndWaitUntilReady());
const GURL& origin_url = embedded_test_server()->base_url();
......@@ -724,8 +710,8 @@ IN_PROC_BROWSER_TEST_P(IndexedDBBrowserCorruptionTest,
SimpleTest(embedded_test_server()->GetURL(test_file));
}
INSTANTIATE_TEST_CASE_P(IndexedDBBrowserCorruptionTestInstantiation,
IndexedDBBrowserCorruptionTest,
INSTANTIATE_TEST_CASE_P(IndexedDBBrowserTestInstantiation,
IndexedDBBrowserTest,
::testing::Values("failGetBlobJournal",
"get",
"getAll",
......
......@@ -285,6 +285,8 @@ interface IDBIndex
method constructor
method count
method get
method getAll
method getAllKeys
method getKey
method openCursor
method openKeyCursor
......@@ -308,8 +310,11 @@ interface IDBObjectStore
method delete
method deleteIndex
method get
method getAll
method getAllKeys
method index
method openCursor
method openKeyCursor
method put
interface IDBOpenDBRequest
getter onblocked
......@@ -332,6 +337,7 @@ interface IDBTransaction
getter db
getter error
getter mode
getter objectStoreNames
getter onabort
getter oncomplete
getter onerror
......@@ -633,6 +639,8 @@ interface webkitIDBIndex
method constructor
method count
method get
method getAll
method getAllKeys
method getKey
method openCursor
method openKeyCursor
......@@ -656,8 +664,11 @@ interface webkitIDBObjectStore
method delete
method deleteIndex
method get
method getAll
method getAllKeys
method index
method openCursor
method openKeyCursor
method put
interface webkitIDBRequest
getter error
......@@ -674,6 +685,7 @@ interface webkitIDBTransaction
getter db
getter error
getter mode
getter objectStoreNames
getter onabort
getter oncomplete
getter onerror
......
......@@ -283,6 +283,8 @@ Starting worker: resources/global-interface-listing.js
[Worker] method constructor
[Worker] method count
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method getKey
[Worker] method openCursor
[Worker] method openKeyCursor
......@@ -306,8 +308,11 @@ Starting worker: resources/global-interface-listing.js
[Worker] method delete
[Worker] method deleteIndex
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method index
[Worker] method openCursor
[Worker] method openKeyCursor
[Worker] method put
[Worker] interface IDBOpenDBRequest
[Worker] getter onblocked
......@@ -330,6 +335,7 @@ Starting worker: resources/global-interface-listing.js
[Worker] getter db
[Worker] getter error
[Worker] getter mode
[Worker] getter objectStoreNames
[Worker] getter onabort
[Worker] getter oncomplete
[Worker] getter onerror
......@@ -662,6 +668,8 @@ Starting worker: resources/global-interface-listing.js
[Worker] method constructor
[Worker] method count
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method getKey
[Worker] method openCursor
[Worker] method openKeyCursor
......@@ -685,8 +693,11 @@ Starting worker: resources/global-interface-listing.js
[Worker] method delete
[Worker] method deleteIndex
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method index
[Worker] method openCursor
[Worker] method openKeyCursor
[Worker] method put
[Worker] interface webkitIDBRequest
[Worker] getter error
......@@ -703,6 +714,7 @@ Starting worker: resources/global-interface-listing.js
[Worker] getter db
[Worker] getter error
[Worker] getter mode
[Worker] getter objectStoreNames
[Worker] getter onabort
[Worker] getter oncomplete
[Worker] getter onerror
......
......@@ -2605,6 +2605,8 @@ interface IDBIndex
method constructor
method count
method get
method getAll
method getAllKeys
method getKey
method openCursor
method openKeyCursor
......@@ -2628,8 +2630,11 @@ interface IDBObjectStore
method delete
method deleteIndex
method get
method getAll
method getAllKeys
method index
method openCursor
method openKeyCursor
method put
interface IDBOpenDBRequest
getter onblocked
......@@ -2652,6 +2657,7 @@ interface IDBTransaction
getter db
getter error
getter mode
getter objectStoreNames
getter onabort
getter oncomplete
getter onerror
......@@ -5719,6 +5725,8 @@ interface webkitIDBIndex
method constructor
method count
method get
method getAll
method getAllKeys
method getKey
method openCursor
method openKeyCursor
......@@ -5742,8 +5750,11 @@ interface webkitIDBObjectStore
method delete
method deleteIndex
method get
method getAll
method getAllKeys
method index
method openCursor
method openKeyCursor
method put
interface webkitIDBRequest
getter error
......@@ -5760,6 +5771,7 @@ interface webkitIDBTransaction
getter db
getter error
getter mode
getter objectStoreNames
getter onabort
getter oncomplete
getter onerror
......
......@@ -273,6 +273,8 @@ Starting worker: resources/global-interface-listing.js
[Worker] method constructor
[Worker] method count
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method getKey
[Worker] method openCursor
[Worker] method openKeyCursor
......@@ -296,8 +298,11 @@ Starting worker: resources/global-interface-listing.js
[Worker] method delete
[Worker] method deleteIndex
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method index
[Worker] method openCursor
[Worker] method openKeyCursor
[Worker] method put
[Worker] interface IDBOpenDBRequest
[Worker] getter onblocked
......@@ -320,6 +325,7 @@ Starting worker: resources/global-interface-listing.js
[Worker] getter db
[Worker] getter error
[Worker] getter mode
[Worker] getter objectStoreNames
[Worker] getter onabort
[Worker] getter oncomplete
[Worker] getter onerror
......@@ -654,6 +660,8 @@ Starting worker: resources/global-interface-listing.js
[Worker] method constructor
[Worker] method count
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method getKey
[Worker] method openCursor
[Worker] method openKeyCursor
......@@ -677,8 +685,11 @@ Starting worker: resources/global-interface-listing.js
[Worker] method delete
[Worker] method deleteIndex
[Worker] method get
[Worker] method getAll
[Worker] method getAllKeys
[Worker] method index
[Worker] method openCursor
[Worker] method openKeyCursor
[Worker] method put
[Worker] interface webkitIDBRequest
[Worker] getter error
......@@ -695,6 +706,7 @@ Starting worker: resources/global-interface-listing.js
[Worker] getter db
[Worker] getter error
[Worker] getter mode
[Worker] getter objectStoreNames
[Worker] getter onabort
[Worker] getter oncomplete
[Worker] getter onerror
......
......@@ -38,9 +38,9 @@
[CallWith=ScriptState, RaisesException] IDBRequest get(any key);
[CallWith=ScriptState, RaisesException] IDBRequest getKey(any key);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
[CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
[CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAllKeys([Default=Undefined] optional any range, [EnforceRange] optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest getAllKeys([Default=Undefined] optional any range, [EnforceRange] optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest count([Default=Undefined] optional any key);
[CallWith=ScriptState, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
......
......@@ -41,14 +41,12 @@
[CallWith=ScriptState, RaisesException] IDBRequest clear();
[CallWith=ScriptState, RaisesException] IDBRequest get(any key);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
[CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
// TODO(cmumford): Standardize or eventually remove. More info at:
// https://w3c.github.io/IndexedDB/#widl-IDBObjectStore-getAllKeys-IDBRequest-any-query-unsigned-long-count
[CallWith=ScriptState, RaisesException] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
[CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAllKeys([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest getAllKeys([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest count([Default=Undefined] optional any key);
[CallWith=ScriptState, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException] IDBIndex createIndex(DOMString name, (DOMString or sequence<DOMString>) keyPath, optional IDBIndexParameters options);
[RaisesException] IDBIndex index(DOMString name);
[RaisesException] void deleteIndex(DOMString name);
......
......@@ -41,7 +41,7 @@ enum IDBTransactionMode {
] interface IDBTransaction : EventTarget {
// Properties
[RuntimeEnabled=IndexedDBExperimental, Measure] readonly attribute DOMStringList objectStoreNames;
[Measure] readonly attribute DOMStringList objectStoreNames;
readonly attribute IDBTransactionMode mode;
readonly attribute IDBDatabase db;
[Measure] readonly attribute DOMError error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment