DescriptionIndexed DB: Ensure large explicit keys consistently max out generator
Background: Stores can have a key generator which generates successive
numeric keys. Storing a record with an explicit numeric key adjusts
they key generator to produce values above the explicit key. Once the
generator hits 2^53 it stops generating new keys (since that's the
maximum integer uniquely representable as a JS number).
Chrome's logic for certain values above this limit was "wonky". Values
above 2^53 would max out the generator. Values above 2^63 and Infinity
would be ignored and not adjust the generator, due to relying on
undefined double->int64_t casting behavior.
Fix to always max out the generator for large values. Also adds
web-platform-tests - other implementations are wonky too. :(
Also adds some missing test coverage for key injection cases.
Spec discussion: https://github.com/w3c/IndexedDB/issues/147
BUG=691754
Review-Url: https://codereview.chromium.org/2735213002
Cr-Commit-Position: refs/heads/master@{#455256}
Committed: https://chromium.googlesource.com/chromium/src/+/c4c73fb74bfeedbc41e0fc41f14feed642c6a86b
Patch Set 1 #
Total comments: 10
Patch Set 2 : Incorporate review feedback #
Messages
Total messages: 13 (8 generated)
|