DescriptionDatabaseBackend objects should be destructed in the originator thread.
Before this CL, it was possible that DatabaseThread held the last
references of DatabaseBackend objects and it was released in the
database thread.
We must destruct objects in the originator thread in Oilpan.
Implementation:
DatabaseThread::recordDatabaseClosed doesn't remove a RefPtr<
DatabaseBackend>, and we release RefPtr<DatabaseBackend> objects
in ~DatabaseThread, which is executed in the main/worker thread.
Note that there are no ways to close a database explicitly, and
DatabaseBackend objects are never destructed before their
DatabaseContext is stopped. DatabaseThread::recordDatabaseClosed
is actually unnecessary.
DatabaseThread doesn't know DatabaseBackend open status any longer.
We remove DatabaseThread::isDatabaseOpen, and its existing
callsites use DatabaseBackend::open() instead.
BUG=347902
TEST=none; no visible behavior changes hopefully.
R=michaeln@chromium.org
Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=168362
Patch Set 1 : #Patch Set 2 : Delete copy in cleanupDatabaseThread #
Messages
Total messages: 14 (0 generated)
|