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

Unified Diff: content/browser/in_process_webkit/dom_storage_unittest.cc

Issue 7619010: Session-only local storage cleared on exit. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Code review comments (tiny). Created 9 years, 4 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
Index: content/browser/in_process_webkit/dom_storage_unittest.cc
diff --git a/content/browser/in_process_webkit/dom_storage_unittest.cc b/content/browser/in_process_webkit/dom_storage_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..14f5a3077a0a831b696ffc32216fa69398a20bef
--- /dev/null
+++ b/content/browser/in_process_webkit/dom_storage_unittest.cc
@@ -0,0 +1,67 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/file_path.h"
+#include "base/file_util.h"
+#include "chrome/test/base/testing_browser_process.h"
+#include "chrome/test/base/testing_browser_process_test.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/browser/in_process_webkit/webkit_context.h"
+#include "webkit/quota/mock_special_storage_policy.h"
+
+class DOMStorageTest : public TestingBrowserProcessTest {
+ public:
+ DOMStorageTest()
+ : message_loop_(MessageLoop::TYPE_IO),
+ webkit_thread_(BrowserThread::WEBKIT, &message_loop_) {
+ }
+ protected:
+ MessageLoop message_loop_;
+
+ private:
+ BrowserThread webkit_thread_;
+};
+
+TEST_F(DOMStorageTest, SessionOnly) {
+ GURL session_only_origin("http://www.sessiononly.com");
+ scoped_refptr<quota::MockSpecialStoragePolicy> special_storage_policy =
+ new quota::MockSpecialStoragePolicy;
+ special_storage_policy->AddSessionOnly(session_only_origin);
+
+ TestingProfile profile;
+
+ // Create databases for permanent and session-only origins.
+ FilePath domstorage_dir = profile.GetPath().Append(
+ DOMStorageContext::kLocalStorageDirectory);
+ FilePath::StringType session_only_database(
+ FILE_PATH_LITERAL("http_www.sessiononly.com_0"));
+ FilePath::StringType permanent_database(
+ FILE_PATH_LITERAL("http_www.permanent.com_0"));
+ session_only_database.append(DOMStorageContext::kLocalStorageExtension);
+ permanent_database.append(DOMStorageContext::kLocalStorageExtension);
+ FilePath session_only_database_path =
+ domstorage_dir.Append(session_only_database);
+ FilePath permanent_database_path =
+ domstorage_dir.Append(permanent_database);
+
+ ASSERT_TRUE(file_util::CreateDirectory(domstorage_dir));
+
+ ASSERT_EQ(1, file_util::WriteFile(session_only_database_path, ".", 1));
+ ASSERT_EQ(1, file_util::WriteFile(permanent_database_path, ".", 1));
+
+ // Inject MockSpecialStoragePolicy into DOMStorageContext.
+ profile.GetWebKitContext()->dom_storage_context()->special_storage_policy_ =
+ special_storage_policy;
+
+ // Tell the WebKitContext explicitly do clean up the session-only
+ // data. TestingProfile (unlike ProfileImpl) doesn't do it automatically when
+ // destructed. The deletion is done immediately since we're on the WEBKIT
+ // thread (created by the test).
+ profile.GetWebKitContext()->DeleteSessionOnlyData();
+
+ // Expected result: the database file for the permanent storage remains but
+ // the database for the session only storage was deleted.
+ EXPECT_FALSE(file_util::PathExists(session_only_database_path));
+ EXPECT_TRUE(file_util::PathExists(permanent_database_path));
+}
« no previous file with comments | « content/browser/in_process_webkit/dom_storage_context.cc ('k') | content/browser/in_process_webkit/webkit_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698