Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Unified Diff: webkit/support/test_webkit_platform_support.cc

Issue 10382180: Use a temp data dir for IDB tests so persistence can be verified. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move to IDBFactory-specific temp dir Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698