Chromium Code Reviews| 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()); |
|
jsbell
2013/01/16 23:19:28
I don't know if this is plausible, but it would be
|
| + } |
| + |
| scoped_ptr<WebIDBFactory> factory_; |
| base::ScopedTempDir indexed_db_dir_; |
| WebString data_dir_; |