Implement getAll and getAllKeys for IDBObjectStore.
Testing: WPT & Unit testing
Fixes: Part of #6963.
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Autoincrementedness was previously being reported as always false. This
PR makes the state become queried from the backend, as the spec
specifies. Additionally this PR ensures the backend correctly handles an
object store which autoincrements.
Testing: WPT
Fixes: None
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Sanitization of object store names brought some problems because of
replacing special characters and making it impossible to have certain
object store names that are allowed by the spec. These changes make sure
deterministic UUIDs are used for file paths plus object store names are
inserted into SQLite without sanitization.
Testing: Covered by existing tests and new unit tests were added.
Fixes: #37569
---------
Signed-off-by: Rodion Borovyk <rodion.borovyk@gmail.com>
#38819 made a step in the right direction. Unfortunately sqlite doesn't
support unsigned integers, so I've been storing them as i64s internally,
but deserializing the bytes to u64s. This allows for an extra bit of
information, but by inserting 0 into the table, it was interpreted
`u64::from_ne_bytes([1,0,0,0....,0])` (or whatever the internal bit
representation of `0_i64` is on the platform), which is not intended.
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
None of our automated tests were executing the initial DB setup code
because the requested version always matched.
Testing: Existing WPT coverage.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Fix a large number of backend issues that were masking everything else.
There probably is still more, but it'll take more integration/unit
testing to find it.
Testing: WPT
Fixes: #38743
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
- Use sqlite instead of heed. (one indexed database = one sqlite
database)
- Implement the backend for indexes
- Use keyranges where needed (as specified by the spec)
- Implement `getKey`
- Fix channel error messaging (led to a bunch of changes to how async
requests are handled)
Note: `components/net/indexeddb/engines/sqlite/serialize.rs` is unused;
I can delete it if needed.
Testing: Switching to sqlite eliminated many panics (exposing some new
failures).
Fixes: #38040
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>