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

Unified Diff: content/browser/dom_storage/dom_storage_context_impl_unittest.cc

Issue 2403713002: Add suborigin logic to url::Origin (Closed)
Patch Set: Fix unit test Created 4 years, 2 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/dom_storage/dom_storage_context_impl_unittest.cc
diff --git a/content/browser/dom_storage/dom_storage_context_impl_unittest.cc b/content/browser/dom_storage/dom_storage_context_impl_unittest.cc
index 1b8aa99d5b2c165b068bdd07132a3b4cf753c08a..0ad42f7538f50d2a296cf3f739b100b28934e7c7 100644
--- a/content/browser/dom_storage/dom_storage_context_impl_unittest.cc
+++ b/content/browser/dom_storage/dom_storage_context_impl_unittest.cc
@@ -20,6 +20,8 @@
#include "content/public/browser/session_storage_usage_info.h"
#include "content/public/test/mock_special_storage_policy.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/origin.h"
using base::ASCIIToUTF16;
@@ -28,14 +30,15 @@ namespace content {
class DOMStorageContextImplTest : public testing::Test {
public:
DOMStorageContextImplTest()
- : kOrigin(GURL("http://dom_storage/")),
- kKey(ASCIIToUTF16("key")),
- kValue(ASCIIToUTF16("value")),
- kDontIncludeFileInfo(false),
- kDoIncludeFileInfo(true) {
- }
+ : kOrigin(GURL("http://dom_storage/")),
+ kSuborigin(GURL("http-so://foobar.dom_storage/")),
+ kKey(ASCIIToUTF16("key")),
+ kValue(ASCIIToUTF16("value")),
+ kDontIncludeFileInfo(false),
+ kDoIncludeFileInfo(true) {}
const GURL kOrigin;
+ const GURL kSuborigin;
const base::string16 kKey;
const base::string16 kValue;
const bool kDontIncludeFileInfo;
@@ -297,4 +300,95 @@ TEST_F(DOMStorageContextImplTest, PurgeMemory) {
EXPECT_EQ(0u, dom_namespace->GetUsageStatistics().total_cache_size);
}
+// Verifies that deleting the local storage for an origin will delete any
+// suborigins also present, and similarly, deleting a suborigin will delete the
+// physical origin as well.
+TEST_F(DOMStorageContextImplTest, DeleteSuboriginLocalStorage) {
+ context_->Shutdown();
+ context_ =
+ new DOMStorageContextImpl(temp_dir_.GetPath(), temp_dir_.GetPath(),
+ storage_policy_.get(), task_runner_.get());
+
+ DOMStorageNamespace* dom_namespace =
+ context_->GetStorageNamespace(kLocalStorageNamespaceId);
+ DOMStorageArea* origin_area = dom_namespace->OpenStorageArea(kOrigin);
+ DOMStorageArea* suborigin_area = dom_namespace->OpenStorageArea(kSuborigin);
+
+ const base::string16 kOriginKey(ASCIIToUTF16("foo"));
+ const base::string16 kOriginValue(ASCIIToUTF16("bar"));
+ const base::string16 kSuboriginKey(ASCIIToUTF16("foz"));
+ const base::string16 kSuboriginValue(ASCIIToUTF16("baz"));
+ base::NullableString16 old_nullable_value;
+
+ // Setup data for the first deletion (of the origin rather than the suborigin)
+ origin_area->SetItem(kOriginKey, kOriginValue, &old_nullable_value);
+ suborigin_area->SetItem(kSuboriginKey, kSuboriginValue, &old_nullable_value);
+
+ base::NullableString16 read_value;
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_EQ(kOriginValue, read_value.string());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_EQ(kSuboriginValue, read_value.string());
+
+ // Deleting the data for the physical origin should delete the data in the
+ // suborigin as well.
+ context_->DeleteLocalStorageForPhysicalOrigin(kOrigin);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_TRUE(read_value.is_null());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_TRUE(read_value.is_null());
+
+ // Setup data again for the second deletion (of the suborigin rather than the
+ // origin)
+ origin_area->SetItem(kOriginKey, kOriginValue, &old_nullable_value);
+ suborigin_area->SetItem(kSuboriginKey, kSuboriginValue, &old_nullable_value);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_EQ(kOriginValue, read_value.string());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_EQ(kSuboriginValue, read_value.string());
+
+ // Delete the suborigin by physical origin this time. This should delete both
+ // the suborigin and physical origin.
+ context_->DeleteLocalStorageForPhysicalOrigin(kSuborigin);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_TRUE(read_value.is_null());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_TRUE(read_value.is_null());
+
+ // Setup data again for the third deletion, to test deleting the storage one
+ // at a time.
+ origin_area->SetItem(kOriginKey, kOriginValue, &old_nullable_value);
+ suborigin_area->SetItem(kSuboriginKey, kSuboriginValue, &old_nullable_value);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_EQ(kOriginValue, read_value.string());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_EQ(kSuboriginValue, read_value.string());
+
+ // Delete the origin only. This should leave the suborigin.
+ context_->DeleteLocalStorage(kOrigin);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_TRUE(read_value.is_null());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_EQ(kSuboriginValue, read_value.string());
+
+ // Put the origin value back so suborigin deletion can be tested.
+ origin_area->SetItem(kOriginKey, kOriginValue, &old_nullable_value);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_EQ(kOriginValue, read_value.string());
+
+ // Delete the suborigin only. This should leave the origin.
+ context_->DeleteLocalStorage(kSuborigin);
+
+ read_value = origin_area->GetItem(kOriginKey);
+ EXPECT_EQ(kOriginValue, read_value.string());
+ read_value = suborigin_area->GetItem(kSuboriginKey);
+ EXPECT_TRUE(read_value.is_null());
+}
+
} // namespace content
« no previous file with comments | « content/browser/dom_storage/dom_storage_context_impl.cc ('k') | content/browser/dom_storage/dom_storage_context_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698