Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Defines the Chrome Extensions BrowsingData API functions, which entail | 5 // Defines the Chrome Extensions BrowsingData API functions, which entail |
| 6 // clearing browsing data, and clearing the browser's cache (which, let's be | 6 // clearing browsing data, and clearing the browser's cache (which, let's be |
| 7 // honest, are the same thing), as specified in the extension API JSON. | 7 // honest, are the same thing), as specified in the extension API JSON. |
| 8 | 8 |
| 9 #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h" | 9 #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h" |
| 10 | 10 |
| 11 #include <set> | |
| 11 #include <string> | 12 #include <string> |
| 12 #include <utility> | 13 #include <utility> |
| 13 | 14 |
| 14 #include "base/values.h" | 15 #include "base/values.h" |
| 15 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 16 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| 16 #include "chrome/browser/browsing_data/browsing_data_remover.h" | 17 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
| 17 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" | 18 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" |
| 19 #include "chrome/browser/browsing_data/chrome_browsing_data_types.h" | |
| 18 #include "chrome/browser/plugins/plugin_data_remover_helper.h" | 20 #include "chrome/browser/plugins/plugin_data_remover_helper.h" |
| 19 #include "chrome/browser/plugins/plugin_prefs.h" | 21 #include "chrome/browser/plugins/plugin_prefs.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
| 21 #include "chrome/browser/ui/browser.h" | 23 #include "chrome/browser/ui/browser.h" |
| 22 #include "chrome/common/pref_names.h" | 24 #include "chrome/common/pref_names.h" |
| 23 #include "components/browsing_data/core/browsing_data_utils.h" | 25 #include "components/browsing_data/core/browsing_data_utils.h" |
| 24 #include "components/browsing_data/core/pref_names.h" | 26 #include "components/browsing_data/core/pref_names.h" |
| 25 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" |
| 26 #include "extensions/common/error_utils.h" | 28 #include "extensions/common/error_utils.h" |
| 27 #include "extensions/common/extension.h" | 29 #include "extensions/common/extension.h" |
| 28 | 30 |
| 29 using content::BrowserThread; | 31 using content::BrowserThread; |
| 32 using content::BrowsingDataType; | |
| 30 | 33 |
| 31 namespace extension_browsing_data_api_constants { | 34 namespace extension_browsing_data_api_constants { |
| 32 | 35 |
| 33 // Parameter name keys. | 36 // Parameter name keys. |
| 34 const char kDataRemovalPermittedKey[] = "dataRemovalPermitted"; | 37 const char kDataRemovalPermittedKey[] = "dataRemovalPermitted"; |
| 35 const char kDataToRemoveKey[] = "dataToRemove"; | 38 const char kDataToRemoveKey[] = "dataToRemove"; |
| 36 const char kOptionsKey[] = "options"; | 39 const char kOptionsKey[] = "options"; |
| 37 | 40 |
| 38 // Type keys. | 41 // Type keys. |
| 39 const char kAppCacheKey[] = "appcache"; | 42 const char kAppCacheKey[] = "appcache"; |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 62 // Errors! | 65 // Errors! |
| 63 // The placeholder will be filled by the name of the affected data type (e.g., | 66 // The placeholder will be filled by the name of the affected data type (e.g., |
| 64 // "history"). | 67 // "history"). |
| 65 const char kBadDataTypeDetails[] = "Invalid value for data type '%s'."; | 68 const char kBadDataTypeDetails[] = "Invalid value for data type '%s'."; |
| 66 const char kDeleteProhibitedError[] = "Browsing history and downloads are not " | 69 const char kDeleteProhibitedError[] = "Browsing history and downloads are not " |
| 67 "permitted to be removed."; | 70 "permitted to be removed."; |
| 68 | 71 |
| 69 } // namespace extension_browsing_data_api_constants | 72 } // namespace extension_browsing_data_api_constants |
| 70 | 73 |
| 71 namespace { | 74 namespace { |
| 72 int MaskForKey(const char* key) { | 75 |
| 76 // TODO(msramek): This function could be simplified to three lines if we ensured | |
| 77 // that extension API keys are the same as names specified in BrowsingDataType. | |
| 78 const BrowsingDataType* TypeForKey(const char* key) { | |
| 73 if (strcmp(key, extension_browsing_data_api_constants::kAppCacheKey) == 0) | 79 if (strcmp(key, extension_browsing_data_api_constants::kAppCacheKey) == 0) |
| 74 return BrowsingDataRemover::REMOVE_APPCACHE; | 80 return &kBrowsingDataTypeAppCache; |
| 75 if (strcmp(key, extension_browsing_data_api_constants::kCacheKey) == 0) | 81 if (strcmp(key, extension_browsing_data_api_constants::kCacheKey) == 0) |
| 76 return BrowsingDataRemover::REMOVE_CACHE; | 82 return &kBrowsingDataTypeCache; |
| 77 if (strcmp(key, extension_browsing_data_api_constants::kCookiesKey) == 0) { | 83 if (strcmp(key, extension_browsing_data_api_constants::kCookiesKey) == 0) { |
| 78 return BrowsingDataRemover::REMOVE_COOKIES; | 84 return &kBrowsingDataTypeCookies; |
| 79 } | 85 } |
| 80 if (strcmp(key, extension_browsing_data_api_constants::kDownloadsKey) == 0) | 86 if (strcmp(key, extension_browsing_data_api_constants::kDownloadsKey) == 0) |
| 81 return BrowsingDataRemover::REMOVE_DOWNLOADS; | 87 return &kBrowsingDataTypeDownloads; |
| 82 if (strcmp(key, extension_browsing_data_api_constants::kFileSystemsKey) == 0) | 88 if (strcmp(key, extension_browsing_data_api_constants::kFileSystemsKey) == 0) |
| 83 return BrowsingDataRemover::REMOVE_FILE_SYSTEMS; | 89 return &kBrowsingDataTypeFileSystems; |
| 84 if (strcmp(key, extension_browsing_data_api_constants::kFormDataKey) == 0) | 90 if (strcmp(key, extension_browsing_data_api_constants::kFormDataKey) == 0) |
| 85 return BrowsingDataRemover::REMOVE_FORM_DATA; | 91 return &kBrowsingDataTypeFormData; |
| 86 if (strcmp(key, extension_browsing_data_api_constants::kHistoryKey) == 0) | 92 if (strcmp(key, extension_browsing_data_api_constants::kHistoryKey) == 0) |
| 87 return BrowsingDataRemover::REMOVE_HISTORY; | 93 return &kBrowsingDataTypeHistory; |
| 88 if (strcmp(key, extension_browsing_data_api_constants::kIndexedDBKey) == 0) | 94 if (strcmp(key, extension_browsing_data_api_constants::kIndexedDBKey) == 0) |
| 89 return BrowsingDataRemover::REMOVE_INDEXEDDB; | 95 return &kBrowsingDataTypeIndexedDB; |
| 90 if (strcmp(key, extension_browsing_data_api_constants::kLocalStorageKey) == 0) | 96 if (strcmp(key, extension_browsing_data_api_constants::kLocalStorageKey) == 0) |
| 91 return BrowsingDataRemover::REMOVE_LOCAL_STORAGE; | 97 return &kBrowsingDataTypeLocalStorage; |
| 92 if (strcmp(key, | 98 if (strcmp(key, |
| 93 extension_browsing_data_api_constants::kChannelIDsKey) == 0) | 99 extension_browsing_data_api_constants::kChannelIDsKey) == 0) |
| 94 return BrowsingDataRemover::REMOVE_CHANNEL_IDS; | 100 return &kBrowsingDataTypeChannelIDs; |
| 95 if (strcmp(key, extension_browsing_data_api_constants::kPasswordsKey) == 0) | 101 if (strcmp(key, extension_browsing_data_api_constants::kPasswordsKey) == 0) |
| 96 return BrowsingDataRemover::REMOVE_PASSWORDS; | 102 return &kBrowsingDataTypePasswords; |
| 97 if (strcmp(key, extension_browsing_data_api_constants::kPluginDataKey) == 0) | 103 if (strcmp(key, extension_browsing_data_api_constants::kPluginDataKey) == 0) |
| 98 return BrowsingDataRemover::REMOVE_PLUGIN_DATA; | 104 return &kBrowsingDataTypePluginData; |
| 99 if (strcmp(key, extension_browsing_data_api_constants::kServiceWorkersKey) == | 105 if (strcmp(key, extension_browsing_data_api_constants::kServiceWorkersKey) == |
| 100 0) | 106 0) |
| 101 return BrowsingDataRemover::REMOVE_SERVICE_WORKERS; | 107 return &kBrowsingDataTypeServiceWorkers; |
| 102 if (strcmp(key, extension_browsing_data_api_constants::kCacheStorageKey) == 0) | 108 if (strcmp(key, extension_browsing_data_api_constants::kCacheStorageKey) == 0) |
| 103 return BrowsingDataRemover::REMOVE_CACHE_STORAGE; | 109 return &kBrowsingDataTypeCacheStorage; |
| 104 if (strcmp(key, extension_browsing_data_api_constants::kWebSQLKey) == 0) | 110 if (strcmp(key, extension_browsing_data_api_constants::kWebSQLKey) == 0) |
| 105 return BrowsingDataRemover::REMOVE_WEBSQL; | 111 return &kBrowsingDataTypeWebSQL; |
| 106 | 112 |
| 107 return 0; | 113 return nullptr; |
| 114 } | |
| 115 | |
| 116 inline bool MaskContains(const std::set<const BrowsingDataType*>& remove_mask, | |
| 117 const BrowsingDataType* data_type) { | |
| 118 return remove_mask.find(data_type) != remove_mask.end(); | |
| 108 } | 119 } |
| 109 | 120 |
| 110 // Returns false if any of the selected data types are not allowed to be | 121 // Returns false if any of the selected data types are not allowed to be |
| 111 // deleted. | 122 // deleted. |
| 112 bool IsRemovalPermitted(int removal_mask, PrefService* prefs) { | 123 bool IsRemovalPermitted(const std::set<const BrowsingDataType*>& removal_mask, |
| 124 PrefService* prefs) { | |
| 113 // Enterprise policy or user preference might prohibit deleting browser or | 125 // Enterprise policy or user preference might prohibit deleting browser or |
| 114 // download history. | 126 // download history. |
| 115 if ((removal_mask & BrowsingDataRemover::REMOVE_HISTORY) || | 127 if (MaskContains(removal_mask, &kBrowsingDataTypeHistory) || |
| 116 (removal_mask & BrowsingDataRemover::REMOVE_DOWNLOADS)) { | 128 MaskContains(removal_mask, &kBrowsingDataTypeDownloads)) { |
| 117 return prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory); | 129 return prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory); |
| 118 } | 130 } |
| 119 return true; | 131 return true; |
| 120 } | 132 } |
| 121 | 133 |
| 122 } // namespace | 134 } // namespace |
| 123 | 135 |
| 124 ExtensionFunction::ResponseAction BrowsingDataSettingsFunction::Run() { | 136 ExtensionFunction::ResponseAction BrowsingDataSettingsFunction::Run() { |
| 125 prefs_ = Profile::FromBrowserContext(browser_context())->GetPrefs(); | 137 prefs_ = Profile::FromBrowserContext(browser_context())->GetPrefs(); |
| 126 | 138 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 result->Set(extension_browsing_data_api_constants::kDataRemovalPermittedKey, | 232 result->Set(extension_browsing_data_api_constants::kDataRemovalPermittedKey, |
| 221 permitted.release()); | 233 permitted.release()); |
| 222 return RespondNow(OneArgument(std::move(result))); | 234 return RespondNow(OneArgument(std::move(result))); |
| 223 } | 235 } |
| 224 | 236 |
| 225 void BrowsingDataSettingsFunction::SetDetails( | 237 void BrowsingDataSettingsFunction::SetDetails( |
| 226 base::DictionaryValue* selected_dict, | 238 base::DictionaryValue* selected_dict, |
| 227 base::DictionaryValue* permitted_dict, | 239 base::DictionaryValue* permitted_dict, |
| 228 const char* data_type, | 240 const char* data_type, |
| 229 bool is_selected) { | 241 bool is_selected) { |
| 230 bool is_permitted = IsRemovalPermitted(MaskForKey(data_type), prefs_); | 242 const std::set<const BrowsingDataType*> removal_mask = |
| 243 { TypeForKey(data_type) }; | |
| 244 bool is_permitted = IsRemovalPermitted(removal_mask, prefs_); | |
| 231 selected_dict->SetBoolean(data_type, is_selected && is_permitted); | 245 selected_dict->SetBoolean(data_type, is_selected && is_permitted); |
| 232 permitted_dict->SetBoolean(data_type, is_permitted); | 246 permitted_dict->SetBoolean(data_type, is_permitted); |
| 233 } | 247 } |
| 234 | 248 |
| 235 BrowsingDataRemoverFunction::BrowsingDataRemoverFunction() : observer_(this) {} | 249 BrowsingDataRemoverFunction::BrowsingDataRemoverFunction() : observer_(this) {} |
| 236 | 250 |
| 237 void BrowsingDataRemoverFunction::OnBrowsingDataRemoverDone() { | 251 void BrowsingDataRemoverFunction::OnBrowsingDataRemoverDone() { |
| 238 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 252 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 239 | 253 |
| 240 observer_.RemoveAll(); | 254 observer_.RemoveAll(); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 263 ms_since_epoch = 0; | 277 ms_since_epoch = 0; |
| 264 | 278 |
| 265 // base::Time takes a double that represents seconds since epoch. JavaScript | 279 // base::Time takes a double that represents seconds since epoch. JavaScript |
| 266 // gives developers milliseconds, so do a quick conversion before populating | 280 // gives developers milliseconds, so do a quick conversion before populating |
| 267 // the object. Also, Time::FromDoubleT converts double time 0 to empty Time | 281 // the object. Also, Time::FromDoubleT converts double time 0 to empty Time |
| 268 // object. So we need to do special handling here. | 282 // object. So we need to do special handling here. |
| 269 remove_since_ = (ms_since_epoch == 0) ? | 283 remove_since_ = (ms_since_epoch == 0) ? |
| 270 base::Time::UnixEpoch() : | 284 base::Time::UnixEpoch() : |
| 271 base::Time::FromDoubleT(ms_since_epoch / 1000.0); | 285 base::Time::FromDoubleT(ms_since_epoch / 1000.0); |
| 272 | 286 |
| 273 EXTENSION_FUNCTION_VALIDATE(GetRemovalMask(&removal_mask_)); | 287 EXTENSION_FUNCTION_VALIDATE(GetRemovalMask(&removal_mask_)); |
|
Bernhard Bauer
2017/02/17 11:10:44
You could clear the mask beforehand (unless it alr
msramek
2017/02/17 18:00:20
Done. Good point.
When I have some spare cycles™,
| |
| 274 | 288 |
| 275 // Check for prohibited data types. | 289 // Check for prohibited data types. |
| 276 if (!IsRemovalPermitted(removal_mask_, GetProfile()->GetPrefs())) { | 290 if (!IsRemovalPermitted(removal_mask_, GetProfile()->GetPrefs())) { |
| 277 error_ = extension_browsing_data_api_constants::kDeleteProhibitedError; | 291 error_ = extension_browsing_data_api_constants::kDeleteProhibitedError; |
| 278 return false; | 292 return false; |
| 279 } | 293 } |
| 280 | 294 |
| 281 if (removal_mask_ & BrowsingDataRemover::REMOVE_PLUGIN_DATA) { | 295 if (MaskContains(removal_mask_, &kBrowsingDataTypePluginData)) { |
| 282 // If we're being asked to remove plugin data, check whether it's actually | 296 // If we're being asked to remove plugin data, check whether it's actually |
| 283 // supported. | 297 // supported. |
| 284 BrowserThread::PostTask( | 298 BrowserThread::PostTask( |
| 285 BrowserThread::FILE, | 299 BrowserThread::FILE, |
| 286 FROM_HERE, | 300 FROM_HERE, |
| 287 base::Bind( | 301 base::Bind( |
| 288 &BrowsingDataRemoverFunction::CheckRemovingPluginDataSupported, | 302 &BrowsingDataRemoverFunction::CheckRemovingPluginDataSupported, |
| 289 this, | 303 this, |
| 290 PluginPrefs::GetForProfile(GetProfile()))); | 304 PluginPrefs::GetForProfile(GetProfile()))); |
| 291 } else { | 305 } else { |
| 292 StartRemoving(); | 306 StartRemoving(); |
| 293 } | 307 } |
| 294 | 308 |
| 295 // Will finish asynchronously. | 309 // Will finish asynchronously. |
| 296 return true; | 310 return true; |
| 297 } | 311 } |
| 298 | 312 |
| 299 BrowsingDataRemoverFunction::~BrowsingDataRemoverFunction() {} | 313 BrowsingDataRemoverFunction::~BrowsingDataRemoverFunction() {} |
| 300 | 314 |
| 301 void BrowsingDataRemoverFunction::CheckRemovingPluginDataSupported( | 315 void BrowsingDataRemoverFunction::CheckRemovingPluginDataSupported( |
| 302 scoped_refptr<PluginPrefs> plugin_prefs) { | 316 scoped_refptr<PluginPrefs> plugin_prefs) { |
| 303 if (!PluginDataRemoverHelper::IsSupported(plugin_prefs.get())) | 317 if (!PluginDataRemoverHelper::IsSupported(plugin_prefs.get())) |
| 304 removal_mask_ &= ~BrowsingDataRemover::REMOVE_PLUGIN_DATA; | 318 removal_mask_.erase(&kBrowsingDataTypePluginData); |
| 305 | 319 |
| 306 BrowserThread::PostTask( | 320 BrowserThread::PostTask( |
| 307 BrowserThread::UI, FROM_HERE, | 321 BrowserThread::UI, FROM_HERE, |
| 308 base::Bind(&BrowsingDataRemoverFunction::StartRemoving, this)); | 322 base::Bind(&BrowsingDataRemoverFunction::StartRemoving, this)); |
| 309 } | 323 } |
| 310 | 324 |
| 311 void BrowsingDataRemoverFunction::StartRemoving() { | 325 void BrowsingDataRemoverFunction::StartRemoving() { |
| 312 BrowsingDataRemover* remover = | 326 BrowsingDataRemover* remover = |
| 313 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); | 327 BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile()); |
| 314 // Add a ref (Balanced in OnBrowsingDataRemoverDone) | 328 // Add a ref (Balanced in OnBrowsingDataRemoverDone) |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 371 *origin_type_mask |= value ? BrowsingDataHelper::EXTENSION : 0; | 385 *origin_type_mask |= value ? BrowsingDataHelper::EXTENSION : 0; |
| 372 } | 386 } |
| 373 } | 387 } |
| 374 | 388 |
| 375 return true; | 389 return true; |
| 376 } | 390 } |
| 377 | 391 |
| 378 // Parses the |dataToRemove| argument to generate the removal mask. | 392 // Parses the |dataToRemove| argument to generate the removal mask. |
| 379 // Returns false if parse was not successful, i.e. if 'dataToRemove' is not | 393 // Returns false if parse was not successful, i.e. if 'dataToRemove' is not |
| 380 // present or any data-type keys don't have supported (boolean) values. | 394 // present or any data-type keys don't have supported (boolean) values. |
| 381 bool BrowsingDataRemoveFunction::GetRemovalMask(int* removal_mask) { | 395 bool BrowsingDataRemoveFunction::GetRemovalMask( |
| 396 std::set<const BrowsingDataType*>* removal_mask) { | |
| 382 base::DictionaryValue* data_to_remove; | 397 base::DictionaryValue* data_to_remove; |
| 383 if (!args_->GetDictionary(1, &data_to_remove)) | 398 if (!args_->GetDictionary(1, &data_to_remove)) |
| 384 return false; | 399 return false; |
| 385 | 400 |
| 386 *removal_mask = 0; | 401 removal_mask->clear(); |
| 387 for (base::DictionaryValue::Iterator i(*data_to_remove); | 402 for (base::DictionaryValue::Iterator i(*data_to_remove); |
| 388 !i.IsAtEnd(); | 403 !i.IsAtEnd(); |
| 389 i.Advance()) { | 404 i.Advance()) { |
| 390 bool selected = false; | 405 bool selected = false; |
| 391 if (!i.value().GetAsBoolean(&selected)) | 406 if (!i.value().GetAsBoolean(&selected)) |
| 392 return false; | 407 return false; |
| 393 if (selected) | 408 if (selected) |
| 394 *removal_mask |= MaskForKey(i.key().c_str()); | 409 removal_mask->insert(TypeForKey(i.key().c_str())); |
| 395 } | 410 } |
| 396 | 411 |
| 397 return true; | 412 return true; |
| 398 } | 413 } |
| 399 | 414 |
| 400 bool BrowsingDataRemoveAppcacheFunction::GetRemovalMask(int* removal_mask) { | 415 bool BrowsingDataRemoveAppcacheFunction::GetRemovalMask( |
| 401 *removal_mask = BrowsingDataRemover::REMOVE_APPCACHE; | 416 std::set<const BrowsingDataType*>* removal_mask) { |
| 417 removal_mask->clear(); | |
| 418 removal_mask->insert(&kBrowsingDataTypeAppCache); | |
| 402 return true; | 419 return true; |
| 403 } | 420 } |
| 404 | 421 |
| 405 bool BrowsingDataRemoveCacheFunction::GetRemovalMask(int* removal_mask) { | 422 bool BrowsingDataRemoveCacheFunction::GetRemovalMask( |
| 406 *removal_mask = BrowsingDataRemover::REMOVE_CACHE; | 423 std::set<const BrowsingDataType*>* removal_mask) { |
| 424 removal_mask->clear(); | |
| 425 removal_mask->insert(&kBrowsingDataTypeCache); | |
| 407 return true; | 426 return true; |
| 408 } | 427 } |
| 409 | 428 |
| 410 bool BrowsingDataRemoveCookiesFunction::GetRemovalMask(int* removal_mask) { | 429 bool BrowsingDataRemoveCookiesFunction::GetRemovalMask( |
| 411 *removal_mask = BrowsingDataRemover::REMOVE_COOKIES | | 430 std::set<const BrowsingDataType*>* removal_mask) { |
| 412 BrowsingDataRemover::REMOVE_CHANNEL_IDS; | 431 removal_mask->clear(); |
| 432 removal_mask->insert(&kBrowsingDataTypeCookies); | |
| 433 removal_mask->insert(&kBrowsingDataTypeChannelIDs); | |
| 413 return true; | 434 return true; |
| 414 } | 435 } |
| 415 | 436 |
| 416 bool BrowsingDataRemoveDownloadsFunction::GetRemovalMask(int* removal_mask) { | 437 bool BrowsingDataRemoveDownloadsFunction::GetRemovalMask( |
| 417 *removal_mask = BrowsingDataRemover::REMOVE_DOWNLOADS; | 438 std::set<const BrowsingDataType*>* removal_mask) { |
| 439 removal_mask->clear(); | |
| 440 removal_mask->insert(&kBrowsingDataTypeDownloads); | |
| 418 return true; | 441 return true; |
| 419 } | 442 } |
| 420 | 443 |
| 421 bool BrowsingDataRemoveFileSystemsFunction::GetRemovalMask(int* removal_mask) { | 444 bool BrowsingDataRemoveFileSystemsFunction::GetRemovalMask( |
| 422 *removal_mask = BrowsingDataRemover::REMOVE_FILE_SYSTEMS; | 445 std::set<const BrowsingDataType*>* removal_mask) { |
| 446 removal_mask->clear(); | |
| 447 removal_mask->insert(&kBrowsingDataTypeFileSystems); | |
| 423 return true; | 448 return true; |
| 424 } | 449 } |
| 425 | 450 |
| 426 bool BrowsingDataRemoveFormDataFunction::GetRemovalMask(int* removal_mask) { | 451 bool BrowsingDataRemoveFormDataFunction::GetRemovalMask( |
| 427 *removal_mask = BrowsingDataRemover::REMOVE_FORM_DATA; | 452 std::set<const BrowsingDataType*>* removal_mask) { |
| 453 removal_mask->clear(); | |
| 454 removal_mask->insert(&kBrowsingDataTypeFormData); | |
| 428 return true; | 455 return true; |
| 429 } | 456 } |
| 430 | 457 |
| 431 bool BrowsingDataRemoveHistoryFunction::GetRemovalMask(int* removal_mask) { | 458 bool BrowsingDataRemoveHistoryFunction::GetRemovalMask( |
| 432 *removal_mask = BrowsingDataRemover::REMOVE_HISTORY; | 459 std::set<const BrowsingDataType*>* removal_mask) { |
| 460 removal_mask->clear(); | |
| 461 removal_mask->insert(&kBrowsingDataTypeHistory); | |
| 433 return true; | 462 return true; |
| 434 } | 463 } |
| 435 | 464 |
| 436 bool BrowsingDataRemoveIndexedDBFunction::GetRemovalMask(int* removal_mask) { | 465 bool BrowsingDataRemoveIndexedDBFunction::GetRemovalMask( |
| 437 *removal_mask = BrowsingDataRemover::REMOVE_INDEXEDDB; | 466 std::set<const BrowsingDataType*>* removal_mask) { |
| 467 removal_mask->clear(); | |
| 468 removal_mask->insert(&kBrowsingDataTypeIndexedDB); | |
| 438 return true; | 469 return true; |
| 439 } | 470 } |
| 440 | 471 |
| 441 bool BrowsingDataRemoveLocalStorageFunction::GetRemovalMask(int* removal_mask) { | 472 bool BrowsingDataRemoveLocalStorageFunction::GetRemovalMask( |
| 442 *removal_mask = BrowsingDataRemover::REMOVE_LOCAL_STORAGE; | 473 std::set<const BrowsingDataType*>* removal_mask) { |
| 474 removal_mask->clear(); | |
| 475 removal_mask->insert(&kBrowsingDataTypeLocalStorage); | |
| 443 return true; | 476 return true; |
| 444 } | 477 } |
| 445 | 478 |
| 446 bool BrowsingDataRemovePluginDataFunction::GetRemovalMask(int* removal_mask) { | 479 bool BrowsingDataRemovePluginDataFunction::GetRemovalMask( |
| 447 *removal_mask = BrowsingDataRemover::REMOVE_PLUGIN_DATA; | 480 std::set<const BrowsingDataType*>* removal_mask) { |
| 481 removal_mask->clear(); | |
| 482 removal_mask->insert(&kBrowsingDataTypePluginData); | |
| 448 return true; | 483 return true; |
| 449 } | 484 } |
| 450 | 485 |
| 451 bool BrowsingDataRemovePasswordsFunction::GetRemovalMask(int* removal_mask) { | 486 bool BrowsingDataRemovePasswordsFunction::GetRemovalMask( |
| 452 *removal_mask = BrowsingDataRemover::REMOVE_PASSWORDS; | 487 std::set<const BrowsingDataType*>* removal_mask) { |
| 488 removal_mask->clear(); | |
| 489 removal_mask->insert(&kBrowsingDataTypePasswords); | |
| 453 return true; | 490 return true; |
| 454 } | 491 } |
| 455 | 492 |
| 456 bool BrowsingDataRemoveServiceWorkersFunction::GetRemovalMask( | 493 bool BrowsingDataRemoveServiceWorkersFunction::GetRemovalMask( |
| 457 int* removal_mask) { | 494 std::set<const BrowsingDataType*>* removal_mask) { |
| 458 *removal_mask = BrowsingDataRemover::REMOVE_SERVICE_WORKERS; | 495 removal_mask->clear(); |
| 496 removal_mask->insert(&kBrowsingDataTypeServiceWorkers); | |
| 459 return true; | 497 return true; |
| 460 } | 498 } |
| 461 | 499 |
| 462 bool BrowsingDataRemoveCacheStorageFunction::GetRemovalMask(int* removal_mask) { | 500 bool BrowsingDataRemoveCacheStorageFunction::GetRemovalMask( |
| 463 *removal_mask = BrowsingDataRemover::REMOVE_CACHE_STORAGE; | 501 std::set<const BrowsingDataType*>* removal_mask) { |
| 502 removal_mask->clear(); | |
| 503 removal_mask->insert(&kBrowsingDataTypeCacheStorage); | |
| 464 return true; | 504 return true; |
| 465 } | 505 } |
| 466 | 506 |
| 467 bool BrowsingDataRemoveWebSQLFunction::GetRemovalMask(int* removal_mask) { | 507 bool BrowsingDataRemoveWebSQLFunction::GetRemovalMask( |
| 468 *removal_mask = BrowsingDataRemover::REMOVE_WEBSQL; | 508 std::set<const BrowsingDataType*>* removal_mask) { |
| 509 removal_mask->clear(); | |
| 510 removal_mask->insert(&kBrowsingDataTypeWebSQL); | |
| 469 return true; | 511 return true; |
| 470 } | 512 } |
| OLD | NEW |