| Index: webkit/dom_storage/dom_storage_context.cc
|
| diff --git a/webkit/dom_storage/dom_storage_context.cc b/webkit/dom_storage/dom_storage_context.cc
|
| index e31019067cea7b9922f5e894dd30e741c1d0b5c9..9b0a93076a196cc92820fc387709aebe4499dccc 100644
|
| --- a/webkit/dom_storage/dom_storage_context.cc
|
| +++ b/webkit/dom_storage/dom_storage_context.cc
|
| @@ -95,14 +95,29 @@ void DomStorageContext::DeleteOrigin(const GURL& origin) {
|
| local->DeleteOrigin(origin);
|
| }
|
|
|
| -void DomStorageContext::DeleteDataModifiedSince(const base::Time& cutoff) {
|
| +void DomStorageContext::DeleteDataModifiedSince(
|
| + const base::Time& cutoff,
|
| + int origin_set_mask) {
|
| std::vector<UsageInfo> infos;
|
| const bool kIncludeFileInfo = true;
|
| GetUsageInfo(&infos, kIncludeFileInfo);
|
| for (size_t i = 0; i < infos.size(); ++i) {
|
| if (infos[i].last_modified > cutoff) {
|
| if (!special_storage_policy_ ||
|
| - !special_storage_policy_->IsStorageProtected(infos[i].origin)) {
|
| + // Skip packaged apps and extensions (non-websafe origin) unless
|
| + // EXTENSION is set.
|
| + ((origin_set_mask & quota::SpecialStoragePolicy::EXTENSION) &&
|
| + infos[i].origin.SchemeIs("chrome-extension")) ||
|
| + // Skip the open web (unprotected and websafe origins) unless
|
| + // UNPROTECTED_WEB is set.
|
| + ((origin_set_mask & quota::SpecialStoragePolicy::UNPROTECTED_WEB) &&
|
| + !infos[i].origin.SchemeIs("chrome-extension") &&
|
| + !special_storage_policy_->IsStorageProtected(infos[i].origin)) ||
|
| + // Skip hosted applications (protected and websafe origins) unless
|
| + // PROTECTED_WEB is set.
|
| + ((origin_set_mask & quota::SpecialStoragePolicy::PROTECTED_WEB) &&
|
| + !infos[i].origin.SchemeIs("chrome-extension") &&
|
| + special_storage_policy_->IsStorageProtected(infos[i].origin))) {
|
| DeleteOrigin(infos[i].origin);
|
| }
|
| }
|
|
|