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

Unified Diff: chrome/browser/extensions/api/browsing_data/browsing_data_api.cc

Issue 10522002: `chrome.browsingData` extension API can now remove data from protected origins. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tiny docs tweak. Created 8 years, 6 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/extensions/api/browsing_data/browsing_data_api.cc
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
index 5fc3b9903acc91e4ac87e55a52229d6adf05648a..71ec96e5a5af256fbea5290e2ebc01e2bc05a2d2 100644
--- a/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
+++ b/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
@@ -41,10 +41,14 @@ const char kPluginDataKey[] = "pluginData";
const char kWebSQLKey[] = "webSQL";
// Option Keys.
+const char kExtensionsKey[] = "extension";
+const char kOriginTypesKey[] = "originType";
+const char kProtectedWebKey[] = "protectedWeb";
const char kSinceKey[] = "since";
+const char kUnprotectedWebKey[] = "unprotectedWeb";
// Errors!
-const char kOneAtATimeError[] = "Only one 'browsingData' API call can run at"
+const char kOneAtATimeError[] = "Only one 'browsingData' API call can run at "
"a time.";
} // namespace extension_browsing_data_api_constants
@@ -102,7 +106,7 @@ int ParseRemovalMask(base::DictionaryValue* value) {
return GetRemovalMask;
}
-} // Namespace.
+} // namespace
void BrowsingDataExtensionFunction::OnBrowsingDataRemoverDone() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -122,6 +126,8 @@ bool BrowsingDataExtensionFunction::RunImpl() {
EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &options));
DCHECK(options);
+ origin_set_mask_ = ParseOriginSetMask(*options);
+
// If |ms_since_epoch| isn't set, default it to 0.
double ms_since_epoch;
if (!options->GetDouble(extension_browsing_data_api_constants::kSinceKey,
@@ -177,7 +183,47 @@ void BrowsingDataExtensionFunction::StartRemoving() {
BrowsingDataRemover* remover = new BrowsingDataRemover(
GetCurrentBrowser()->profile(), remove_since_, base::Time::Now());
remover->AddObserver(this);
- remover->Remove(removal_mask_, BrowsingDataHelper::UNPROTECTED_WEB);
+ remover->Remove(removal_mask_, origin_set_mask_);
+}
+
+int BrowsingDataExtensionFunction::ParseOriginSetMask(
+ const base::DictionaryValue& options) {
+ // Parse the |options| dictionary to generate the origin set mask. Default to
+ // UNPROTECTED_WEB if the developer doesn't specify anything.
+ int mask = BrowsingDataHelper::UNPROTECTED_WEB;
+
+ DictionaryValue* d = NULL;
+ if (options.HasKey(extension_browsing_data_api_constants::kOriginTypesKey)) {
+ EXTENSION_FUNCTION_VALIDATE(options.GetDictionary(
+ extension_browsing_data_api_constants::kOriginTypesKey, &d));
+ bool value;
+
+ // The developer specified something! Reset to 0 and parse the dictionary.
+ mask = 0;
+
+ // Unprotected web.
+ if (d->HasKey(extension_browsing_data_api_constants::kUnprotectedWebKey)) {
+ EXTENSION_FUNCTION_VALIDATE(d->GetBoolean(
+ extension_browsing_data_api_constants::kUnprotectedWebKey, &value));
+ mask |= value ? BrowsingDataHelper::UNPROTECTED_WEB : 0;
+ }
+
+ // Protected web.
+ if (d->HasKey(extension_browsing_data_api_constants::kProtectedWebKey)) {
+ EXTENSION_FUNCTION_VALIDATE(d->GetBoolean(
+ extension_browsing_data_api_constants::kProtectedWebKey, &value));
+ mask |= value ? BrowsingDataHelper::PROTECTED_WEB : 0;
+ }
+
+ // Extensions.
+ if (d->HasKey(extension_browsing_data_api_constants::kExtensionsKey)) {
+ EXTENSION_FUNCTION_VALIDATE(d->GetBoolean(
+ extension_browsing_data_api_constants::kExtensionsKey, &value));
+ mask |= value ? BrowsingDataHelper::EXTENSION : 0;
+ }
+ }
+
+ return mask;
}
int RemoveBrowsingDataFunction::GetRemovalMask() const {

Powered by Google App Engine
This is Rietveld 408576698