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

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

Issue 8820009: Appcache, local storage, indexed db, databases: skip exit-time deletion when restarting. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review. Created 9 years 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/indexed_db_browsertest.cc
diff --git a/content/browser/in_process_webkit/indexed_db_browsertest.cc b/content/browser/in_process_webkit/indexed_db_browsertest.cc
index 759efda1ebd09ca5e126ce5a8770a9eff17fe557..02b3ea51205d4d875e4e5df19747c2280544adda 100644
--- a/content/browser/in_process_webkit/indexed_db_browsertest.cc
+++ b/content/browser/in_process_webkit/indexed_db_browsertest.cc
@@ -218,6 +218,56 @@ IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, ClearSessionOnlyDatabases) {
EXPECT_FALSE(file_util::DirectoryExists(session_only_path));
}
+IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, SaveSessionState) {
+ ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+
+ FilePath normal_path;
+ FilePath session_only_path;
+
+ // Create the scope which will ensure we run the destructor of the webkit
+ // context.
+ {
+ TestingProfile profile;
+
+ const GURL kNormalOrigin("http://normal/");
+ const GURL kSessionOnlyOrigin("http://session-only/");
+ scoped_refptr<quota::MockSpecialStoragePolicy> special_storage_policy =
+ new quota::MockSpecialStoragePolicy;
+ special_storage_policy->AddSessionOnly(kSessionOnlyOrigin);
+
+ // Create some indexedDB paths.
+ // With the levelDB backend, these are directories.
+ WebKitContext *webkit_context = profile.GetWebKitContext();
+ IndexedDBContext* idb_context = webkit_context->indexed_db_context();
+
+ // Override the storage policy with our own.
+ idb_context->special_storage_policy_ = special_storage_policy;
+ idb_context->set_clear_local_state_on_exit(true);
+ idb_context->set_data_path_for_testing(temp_dir.path());
+
+ // Save session state. This should bypass the destruction-time deletion.
+ idb_context->SaveSessionState();
+
+ normal_path = idb_context->GetIndexedDBFilePath(
+ DatabaseUtil::GetOriginIdentifier(kNormalOrigin));
+ session_only_path = idb_context->GetIndexedDBFilePath(
+ DatabaseUtil::GetOriginIdentifier(kSessionOnlyOrigin));
+ ASSERT_TRUE(file_util::CreateDirectory(normal_path));
+ ASSERT_TRUE(file_util::CreateDirectory(session_only_path));
+ }
+
+ // Make sure we wait until the destructor has run.
+ scoped_refptr<base::ThreadTestHelper> helper(
+ new base::ThreadTestHelper(
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::WEBKIT)));
+ ASSERT_TRUE(helper->Run());
+
+ // No data was cleared because of SaveSessionState.
+ EXPECT_TRUE(file_util::DirectoryExists(normal_path));
+ EXPECT_TRUE(file_util::DirectoryExists(session_only_path));
+}
+
class IndexedDBBrowserTestWithLowQuota : public IndexedDBBrowserTest {
public:
virtual void SetUpOnMainThread() {
« no previous file with comments | « content/browser/in_process_webkit/dom_storage_unittest.cc ('k') | content/browser/in_process_webkit/indexed_db_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698