Re: [w3c/IndexedDB] Implementation report (#213)

Hi all,

Here's my review of the level 2 [changes](https://w3c.github.io/IndexedDB/#revision-history). Because I'm not familiar with either Indexed DB or web-platform-tests, I might be missing something. Comments from @inexorabletash / @siusin are very appreciated!

TIA

-----

* **DONE** Address comparison of empty arrays. (bug #27712)
  * https://www.w3.org/2017/10/idbfactory_cmp_empty_arrays.html

-----

* Correct *source* used for `get()`, `getKey()` and `openKeyCursor()` on `IDBIndex`.
  * Not testable?

-----

* Added details around garbage collection of `IDBDatabase` objects. (bug #25223)
  * Not testable?

-----

* Added `[Exposed=(Window,Worker)]` annotations to interfaces.
  * Not testable? Or interfaces.{html,idl,worker.js}?

-----

* Added *forced* flag to the steps to close a database connection, described the firing of a "close" event, and onclose. (bug #22540)
  * Not testable?

-----

* Converted specification to a more algorithmic style, and define abstract types such as key more rigorously. (bug #17681)
  * Not testable?

-----

* **DONE** Added `getAll()` and `getAllKeys()` on `IDBObjectStore`, and `getAll()` and `getAllKeys()` on `IDBIndex`. (bug #16595)
  * idbobjectstore_getAll.html
  * idbobjectstore_getAllKeys.html
  * idbindex_getAll.html
  * idbindex_getAllKeys.html
  * idbobjectstore-query-exception-order.html
  * idbindex-query-exception-order.html

-----

* **DONE** Replaced `DOMError` with `DOMException`. (bug #16)
  * error-attributes.html

-----

* **DONE** Added `objectStoreNames` on `IDBTransaction`. (bug #18)
  * idbtransaction_objectStoreNames.html

-----

* **DONE** Added *binary* keys, including comparisons and ECMAScript bindings. (bug #21)
  * idb-binary-key-roundtrip.htm
  * idb_binary_key_conversion.htm
  * idbfactory_cmp3.htm
  * idbfactory_cmp4.htm

-----

* Allow renaming stores and indexes via IDBObjectStore's name and IDBIndex's name attribute setters. (bug #22)
  * Not testable?

-----

* **DONE** Added `continuePrimaryKey()` on `IDBCursor`. (bug #14)
  * idbcursor-continuePrimaryKey*.htm

-----

* **DONE** Added `includes()` on `IDBKeyRange`. (bug #41)
  * idbkeyrange-includes.htm

-----

* **DONE** Added `getKey()` on `IDBObjectStore`. (bug #26)
  * idbobjectstore_getKey.html

-----

* **DONE** Clarified when a transaction can attempt to commit. (bug #77)
  * https://github.com/w3c/web-platform-tests/pull/3154

-----

* Clarified open request / connection queue processing. (bug #9, bug #78, bug #79, bug #81)
  * Not testable?
  * Or **maybe** idbfactory-open-request-success.html, idbfactory-open-request-error.html, and idbrequest-onupgradeneeded.htm?

-----

* Ensure event firing is done in the context of queued tasks. (bug #83)
  * Not testable?

-----

* **DONE** Define precedence for exceptions when multiple error conditions apply. (bug #11)
  * idbdatabase-transaction-exception-order.html

-----

* Remove `IDBEnvironment`; expose globals with `partial interface` instead. (bug #94)
  * Not testable?

-----

* Clarify when `deleteDatabase()` can fail. (bug #74)
  * Not testable, perhaps? How to test whether it returns "an appropriate error"?

-----

* **DONE** Add non-normative documentation for every method. (bug #110)
  * Not testable

-----

* **DONE** Throw `SecurityError` if `open()` or `deleteDatabase()` is called from an opaque origin. (bug #148)
  * https://github.com/w3c/web-platform-tests/pull/4829

-----

* **DONE** Integrate with legacyOutputDidListenersThrowFlag hook in [DOM], replacing monkey patching. (bug #140)
  * https://github.com/w3c/web-platform-tests/pull/4643

-----

* **DONE** Define cleanup Indexed Database transactions hook for [HTML], replacing monkey patching. (bug #87)
  * https://github.com/w3c/web-platform-tests/pull/4643

-----

* **DONE** Fix handling of edge cases in key generation algorithm. (bug #147)
  * https://github.com/w3c/web-platform-tests/pull/5065

-----

* Use [HTML]'s StructuredSerialize and StructuredDeserialize hooks. (bug #170)
  * Not testable?

-----

* Use [SameObject] / [NewObject] in IDL where appropriate. (issue #193, issue #194)
  * Not testable? Or interfaces.{html,idl,worker.js}?

-----

* **DONE** Transaction-is-active test can be an assertion in the asynchronously execute a request steps. (issue #192)
  * idbdatabase-createObjectStore-exception-order.htm and idbdatabase-deleteObjectStore-exception-order.htm

-----

* **DONE** Use [HTML]'s StructuredSerializeForStorage hook. (issue #197, issue #152)
  * https://github.com/w3c/web-platform-tests/pull/5003

-----

* **DONE** Define database's associated upgrade transaction to align exceptions thrown from `createObjectStore()` and `deleteObjectStore()` with tests and implementations. (issue #192)
  * idbdatabase-createObjectStore-exception-order.htm and idbdatabase-deleteObjectStore-exception-order.htm

-----

* **DONE** Set [=request/result]/done flag appropriately for requests from `open()` and `deleteDatabase()`. (issue #161)
  * https://github.com/w3c/web-platform-tests/pull/5899

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/IndexedDB/issues/213#issuecomment-335690187

Received on Wednesday, 11 October 2017 05:49:59 UTC