| Index: webkit/support/test_webkit_platform_support.cc
|
| diff --git a/webkit/support/test_webkit_platform_support.cc b/webkit/support/test_webkit_platform_support.cc
|
| index 505c13be2e57f0d2f8ce7a201f7871e7054352bc..57fe67e3afaa83abb6b73b89d1768b348500d6e0 100644
|
| --- a/webkit/support/test_webkit_platform_support.cc
|
| +++ b/webkit/support/test_webkit_platform_support.cc
|
| @@ -324,8 +324,57 @@ TestWebKitPlatformSupport::createLocalStorageNamespace(
|
| return dom_storage_system_.CreateLocalStorageNamespace();
|
| }
|
|
|
| +// Wrap a WebKit::WebIDBFactory to rewrite the data directory to
|
| +// a scoped temp directory. In multiprocess Chromium this is rewritten
|
| +// to a real profile directory during IPC.
|
| +class TestWebIDBFactory : public WebKit::WebIDBFactory {
|
| + public:
|
| + TestWebIDBFactory()
|
| + : factory_(WebKit::WebIDBFactory::create()) {
|
| + // 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()) {
|
| + LOG(WARNING) << "Failed to create a temp dir for Indexed DB, "
|
| + "using in-memory storage.";
|
| + DCHECK(indexed_db_dir_.path().empty());
|
| + }
|
| + data_dir_ = webkit_support::GetAbsoluteWebStringFromUTF8Path(
|
| + indexed_db_dir_.path().AsUTF8Unsafe());
|
| + }
|
| +
|
| + virtual void getDatabaseNames(WebKit::WebIDBCallbacks* callbacks,
|
| + const WebKit::WebSecurityOrigin& origin,
|
| + WebKit::WebFrame* frame,
|
| + const WebString& dataDir) {
|
| + factory_->getDatabaseNames(callbacks, origin, frame,
|
| + dataDir.isEmpty() ? data_dir_ : dataDir);
|
| + }
|
| +
|
| + virtual void open(const WebString& name,
|
| + WebKit::WebIDBCallbacks* callbacks,
|
| + const WebKit::WebSecurityOrigin& origin,
|
| + WebKit::WebFrame* frame,
|
| + const WebString& dataDir) {
|
| + factory_->open(name, callbacks, origin, frame,
|
| + dataDir.isEmpty() ? data_dir_ : dataDir);
|
| + }
|
| +
|
| + virtual void deleteDatabase(const WebString& name,
|
| + WebKit::WebIDBCallbacks* callbacks,
|
| + const WebKit::WebSecurityOrigin& origin,
|
| + WebKit::WebFrame* frame,
|
| + const WebString& dataDir) {
|
| + factory_->deleteDatabase(name, callbacks, origin, frame,
|
| + dataDir.isEmpty() ? data_dir_ : dataDir);
|
| + }
|
| + private:
|
| + scoped_ptr<WebIDBFactory> factory_;
|
| + ScopedTempDir indexed_db_dir_;
|
| + WebString data_dir_;
|
| +};
|
| +
|
| WebKit::WebIDBFactory* TestWebKitPlatformSupport::idbFactory() {
|
| - return WebKit::WebIDBFactory::create();
|
| + return new TestWebIDBFactory();
|
| }
|
|
|
| void TestWebKitPlatformSupport::createIDBKeysFromSerializedValuesAndKeyPath(
|
|
|