| Index: webkit/support/test_webkit_platform_support.cc
|
| ===================================================================
|
| --- webkit/support/test_webkit_platform_support.cc (revision 177172)
|
| +++ webkit/support/test_webkit_platform_support.cc (working copy)
|
| @@ -346,8 +346,7 @@
|
| // to a real profile directory during IPC.
|
| class TestWebIDBFactory : public WebKit::WebIDBFactory {
|
| public:
|
| - TestWebIDBFactory()
|
| - : factory_(WebKit::WebIDBFactory::create()) {
|
| + TestWebIDBFactory() {
|
| // Create a new temp directory for Indexed DB storage, specific to this
|
| // factory. If this fails, WebKit uses in-memory storage.
|
| if (!indexed_db_dir_.CreateUniqueTempDir()) {
|
| @@ -357,12 +356,16 @@
|
| }
|
| data_dir_ = webkit_support::GetAbsoluteWebStringFromUTF8Path(
|
| indexed_db_dir_.path().AsUTF8Unsafe());
|
| +
|
| + // Lazily construct factory_ so that it gets allocated on the thread where
|
| + // it will be used. TestWebIDBFactory gets allocated on the main thread.
|
| }
|
|
|
| virtual void getDatabaseNames(WebKit::WebIDBCallbacks* callbacks,
|
| const WebKit::WebSecurityOrigin& origin,
|
| WebKit::WebFrame* frame,
|
| const WebString& dataDir) {
|
| + EnsureFactory();
|
| factory_->getDatabaseNames(callbacks, origin, frame,
|
| dataDir.isEmpty() ? data_dir_ : dataDir);
|
| }
|
| @@ -375,9 +378,10 @@
|
| const WebKit::WebSecurityOrigin& origin,
|
| WebKit::WebFrame* frame,
|
| const WebString& dataDir) {
|
| - factory_->open(name, version, transaction_id, callbacks,
|
| - databaseCallbacks, origin, frame,
|
| - dataDir.isEmpty() ? data_dir_ : dataDir);
|
| + EnsureFactory();
|
| + factory_->open(name, version, transaction_id, callbacks,
|
| + databaseCallbacks, origin, frame,
|
| + dataDir.isEmpty() ? data_dir_ : dataDir);
|
| }
|
|
|
| virtual void deleteDatabase(const WebString& name,
|
| @@ -385,10 +389,16 @@
|
| const WebKit::WebSecurityOrigin& origin,
|
| WebKit::WebFrame* frame,
|
| const WebString& dataDir) {
|
| + EnsureFactory();
|
| factory_->deleteDatabase(name, callbacks, origin, frame,
|
| dataDir.isEmpty() ? data_dir_ : dataDir);
|
| }
|
| private:
|
| + void EnsureFactory() {
|
| + if (!factory_)
|
| + factory_.reset(WebKit::WebIDBFactory::create());
|
| + }
|
| +
|
| scoped_ptr<WebIDBFactory> factory_;
|
| base::ScopedTempDir indexed_db_dir_;
|
| WebString data_dir_;
|
|
|