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

Unified Diff: chrome/browser/browsing_data/browsing_data_local_storage_helper.cc

Issue 2005783005: Re-enable storage for Suborigins. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Rebase on ToT 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: chrome/browser/browsing_data/browsing_data_local_storage_helper.cc
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc b/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc
index c9dc1d0facb21e868a62251797f51322e474d40c..be83374cddc35314a670d439647086fa413d7c1d 100644
--- a/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc
+++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc
@@ -13,6 +13,8 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/local_storage_usage_info.h"
#include "content/public/browser/storage_partition.h"
+#include "content/public/common/origin_util.h"
+#include "content/public/common/url_constants.h"
using content::BrowserContext;
using content::BrowserThread;
@@ -20,6 +22,13 @@ using content::DOMStorageContext;
namespace {
+// Only websafe state and suborigins are considered browsing data.
+bool HasStorageScheme(const GURL& origin) {
+ return BrowsingDataHelper::HasWebScheme(origin) ||
+ origin.scheme() == content::kHttpSuboriginScheme ||
+ origin.scheme() == content::kHttpsSuboriginScheme;
+}
+
void GetUsageInfoCallback(
const BrowsingDataLocalStorageHelper::FetchCallback& callback,
const std::vector<content::LocalStorageUsageInfo>& infos) {
@@ -28,8 +37,8 @@ void GetUsageInfoCallback(
std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> result;
for (const content::LocalStorageUsageInfo& info : infos) {
- if (!BrowsingDataHelper::HasWebScheme(info.origin))
- continue; // Non-websafe state is not considered browsing data.
+ if (!HasStorageScheme(info.origin))
+ continue;
result.push_back(BrowsingDataLocalStorageHelper::LocalStorageInfo(
info.origin, info.data_size, info.last_modified));
}
@@ -79,13 +88,18 @@ CannedBrowsingDataLocalStorageHelper::CannedBrowsingDataLocalStorageHelper(
void CannedBrowsingDataLocalStorageHelper::AddLocalStorage(
const GURL& origin) {
- if (!BrowsingDataHelper::HasWebScheme(origin))
- return; // Non-websafe state is not considered browsing data.
+ if (!HasStorageScheme(origin))
+ return;
pending_local_storage_info_.insert(origin);
+ if (content::HasSuborigin(origin)) {
+ pending_origins_to_pending_suborigins_.insert(
+ std::make_pair(content::StripSuboriginFromUrl(origin), origin));
+ }
}
void CannedBrowsingDataLocalStorageHelper::Reset() {
pending_local_storage_info_.clear();
+ pending_origins_to_pending_suborigins_.clear();
}
bool CannedBrowsingDataLocalStorageHelper::empty() const {
@@ -116,7 +130,20 @@ void CannedBrowsingDataLocalStorageHelper::StartFetching(
void CannedBrowsingDataLocalStorageHelper::DeleteOrigin(const GURL& origin) {
pending_local_storage_info_.erase(origin);
+ // All suborigins associated with |origin| must be removed.
+ // BrowsingDataLocalStorageHelper::DeleteOrigin takes care of doing that on
+ // the backend so it's not necessary to call it for each suborigin, but it is
+ // necessary to clear up the pending storage here.
BrowsingDataLocalStorageHelper::DeleteOrigin(origin);
+ if (pending_origins_to_pending_suborigins_.count(origin) > 0) {
+ auto it = pending_origins_to_pending_suborigins_.find(origin);
+ while (it != pending_origins_to_pending_suborigins_.end()) {
+ pending_local_storage_info_.erase(it->second);
+ pending_origins_to_pending_suborigins_.erase(it);
+ it = pending_origins_to_pending_suborigins_.find(origin);
+ }
+ }
+ pending_origins_to_pending_suborigins_.erase(origin);
}
CannedBrowsingDataLocalStorageHelper::~CannedBrowsingDataLocalStorageHelper() {}

Powered by Google App Engine
This is Rietveld 408576698