| 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(
 | 
| 
 |