Bug 82776
| Summary: | [DumpRenderTree] IndexedDB: Each page group/worker has a distinct IDBFactoryBackend | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Joshua Bell <jsbell> |
| Component: | WebKit Misc. | Assignee: | Michael Pruett <michael> |
| Status: | NEW | ||
| Severity: | Normal | CC: | abarth, charles.wei, dgrogan, svillar |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | |||
| Bug Blocks: | 107194, 82678 | ||
Joshua Bell
The PageGroupIndexedDatabase and WorkerContextIndexedDatabase classes contain IDBFactoryBackendInterface members which are initialized lazily. The IndexedDB implementation assumes there is a single IDBFactoryBackendImpl instance for the entire browser, since it controls access to the backing store, maintains open database connections, and schedules transactions.
The result is that a page and worker, or two workers, that attempt to open connections to the same database end up talking to completely distinct database instances.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Joshua Bell
This does not affect the Chromium port, only DumpRenderTree.
Sergio Villar Senin
(In reply to comment #1)
> This does not affect the Chromium port, only DumpRenderTree.
Why? What about other ports?
Joshua Bell
(In reply to comment #2)
> (In reply to comment #1)
> > This does not affect the Chromium port, only DumpRenderTree.
>
> Why?
In full-blown Chromium, the back-end objects run in a different process; all front-end objects talk through proxies which implement IPC to the same back-end. This is true in Chromium's chrome browser and content_shell.
The Chromium port of test_shell (used for DumpRenderTree) is single-process, and runs into the issue in the bug Description.
> What about other ports?
Other ports did not implement IndexedDB at the time I wrote that. I don't know the state of the other ports at the moment, but they would likely run into this issue unless they implement a similar mechanism for separating front- and back-ends.