The spec details the handling of multiEntry key paths where the key path yields an array and the array includes values that are duplicates or invalid sub-keys. WebKit's implementation (WebCore/binding/v8/IDBBindingUtilities.cpp) yields an overall InvalidType key if any of the subkeys are invalid. http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-steps-for-storing-a-record-into-an-object-store 7.4 If index's multiEntry flag is true, and index key is an Array, remove any elements from index key that are not valid keys and remove any duplicate elements from index key such that only one instance of the duplicate value remains. For example, the following value of index key [10, 20, null, 30, 20] is converted to [10, 20, 30].
Created attachment 148395 [details] Patch
jsbell@ or dgrogan@ - mind a quick look?
Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.
Created attachment 148414 [details] Patch
Comment on attachment 148414 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=148414&action=review > Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:393 > + ASSERT_NOT_REACHED(); Redundant with fall through. > Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:451 > + if (!m_index->addingKeyAllowed(indexKey->array()[i].get())) Ouch, good catch. > LayoutTests/storage/indexeddb/resources/index-multientry.js:124 > + }; Either put this callback all on one line, or correct the indentation.
Created attachment 148425 [details] Patch
Comment on attachment 148425 [details] Patch tkent@ - r? cq?
Created attachment 148848 [details] Patch
Created attachment 148851 [details] Patch for landing
Comment on attachment 148851 [details] Patch for landing Clearing flags on attachment: 148851 Committed r120967: <http://trac.webkit.org/changeset/120967>
All reviewed patches have been landed. Closing bug.