| Index: chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
|
| diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
|
| index 100ad55244bcfc23a55f34f2d6b031a37abcdbfe..17a19c465799981e4dd43f67f2c46b892f12a784 100644
|
| --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
|
| +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
|
| @@ -18,6 +18,7 @@
|
| #include "components/browsing_data/core/browsing_data_utils.h"
|
| #include "components/offline_pages/core/offline_page_model.h"
|
| #include "components/search_engines/template_url_service.h"
|
| +#include "extensions/features/features.h"
|
| #include "media/media_features.h"
|
| #include "ppapi/features/features.h"
|
|
|
| @@ -46,6 +47,102 @@ class ChromeBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate
|
| #endif
|
| {
|
| public:
|
| + // This is an extension of BrowsingDataRemover::RemoveDataMask which includes
|
| + // all datatypes therefrom and adds additional Chrome-specific ones.
|
| + // TODO(crbug.com/668114): Extend this to uint64_t to ensure that we won't
|
| + // run out of space anytime soon.
|
| + enum DataType {
|
| + // Embedder can start adding datatypes after the last platform datatype.
|
| + DATA_TYPE_EMBEDDER_BEGIN = BrowsingDataRemover::DATA_TYPE_CONTENT_END << 1,
|
| +
|
| + // Chrome-specific datatypes.
|
| + DATA_TYPE_HISTORY = DATA_TYPE_EMBEDDER_BEGIN,
|
| + DATA_TYPE_FORM_DATA = DATA_TYPE_EMBEDDER_BEGIN << 1,
|
| + DATA_TYPE_PASSWORDS = DATA_TYPE_EMBEDDER_BEGIN << 2,
|
| + DATA_TYPE_PLUGIN_DATA = DATA_TYPE_EMBEDDER_BEGIN << 3,
|
| +#if defined(OS_ANDROID)
|
| + DATA_TYPE_WEB_APP_DATA = DATA_TYPE_EMBEDDER_BEGIN << 4,
|
| +#endif
|
| + DATA_TYPE_SITE_USAGE_DATA = DATA_TYPE_EMBEDDER_BEGIN << 5,
|
| + DATA_TYPE_DURABLE_PERMISSION = DATA_TYPE_EMBEDDER_BEGIN << 6,
|
| + DATA_TYPE_EXTERNAL_PROTOCOL_DATA = DATA_TYPE_EMBEDDER_BEGIN << 7,
|
| + DATA_TYPE_HOSTED_APP_DATA_TEST_ONLY = DATA_TYPE_EMBEDDER_BEGIN << 8,
|
| +
|
| + // Group datatypes.
|
| +
|
| + // "Site data" includes storage backend accessible to websites and some
|
| + // additional metadata kept by the browser (e.g. site usage data).
|
| + DATA_TYPE_SITE_DATA = BrowsingDataRemover::DATA_TYPE_APP_CACHE |
|
| + BrowsingDataRemover::DATA_TYPE_COOKIES |
|
| + BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS |
|
| + BrowsingDataRemover::DATA_TYPE_INDEXED_DB |
|
| + BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE |
|
| + BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS |
|
| + BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE |
|
| + BrowsingDataRemover::DATA_TYPE_WEB_SQL |
|
| + BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
|
| + DATA_TYPE_PLUGIN_DATA |
|
| +#if defined(OS_ANDROID)
|
| + DATA_TYPE_WEB_APP_DATA |
|
| +#endif
|
| + DATA_TYPE_SITE_USAGE_DATA |
|
| + DATA_TYPE_DURABLE_PERMISSION |
|
| + DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
|
| +
|
| + // Datatypes protected by Important Sites.
|
| + IMPORTANT_SITES_DATA_TYPES =
|
| + DATA_TYPE_SITE_DATA | BrowsingDataRemover::DATA_TYPE_CACHE,
|
| +
|
| + // Datatypes that can be deleted partially per URL / origin / domain,
|
| + // whichever makes sense.
|
| + FILTERABLE_DATA_TYPES = DATA_TYPE_SITE_DATA |
|
| + BrowsingDataRemover::DATA_TYPE_CACHE |
|
| + BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
|
| +
|
| + // Includes all the available remove options. Meant to be used by clients
|
| + // that wish to wipe as much data as possible from a Profile, to make it
|
| + // look like a new Profile.
|
| + ALL_DATA_TYPES = DATA_TYPE_SITE_DATA |
|
| + BrowsingDataRemover::DATA_TYPE_CACHE |
|
| + BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
|
| + DATA_TYPE_FORM_DATA |
|
| + DATA_TYPE_HISTORY |
|
| + DATA_TYPE_PASSWORDS |
|
| + BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES,
|
| +
|
| + // Includes all available remove options. Meant to be used when the Profile
|
| + // is scheduled to be deleted, and all possible data should be wiped from
|
| + // disk as soon as possible.
|
| + WIPE_PROFILE = ALL_DATA_TYPES | BrowsingDataRemover::DATA_TYPE_NO_CHECKS,
|
| + };
|
| +
|
| + // This is an extension of BrowsingDataRemover::OriginType which includes all
|
| + // origin types therefrom and adds additional Chrome-specific ones.
|
| + enum OriginType {
|
| + // Embedder can start adding origin types after the last
|
| + // platform origin type.
|
| + ORIGIN_TYPE_EMBEDDER_BEGIN = BrowsingDataRemover::ORIGIN_TYPE_CONTENT_END
|
| + << 1,
|
| +
|
| +#if BUILDFLAG(ENABLE_EXTENSIONS)
|
| + // Packaged apps and extensions (chrome-extension://*).
|
| + ORIGIN_TYPE_EXTENSION = ORIGIN_TYPE_EMBEDDER_BEGIN,
|
| +#endif
|
| +
|
| + // All origin types.
|
| + ALL_ORIGIN_TYPES = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
|
| +#if BUILDFLAG(ENABLE_EXTENSIONS)
|
| + ORIGIN_TYPE_EXTENSION |
|
| +#endif
|
| + BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
|
| + };
|
| +
|
| + // Important sites protect a small set of sites from the deletion of certain
|
| + // datatypes. Therefore, those datatypes must be filterable by
|
| + // url/origin/domain.
|
| + static_assert((IMPORTANT_SITES_DATA_TYPES & ~FILTERABLE_DATA_TYPES) == 0,
|
| + "All important sites datatypes must be filterable.");
|
| +
|
| // Used to track the deletion of a single data storage backend.
|
| class SubTask {
|
| public:
|
| @@ -75,7 +172,11 @@ class ChromeBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate
|
| ChromeBrowsingDataRemoverDelegate(content::BrowserContext* browser_context);
|
| ~ChromeBrowsingDataRemoverDelegate() override;
|
|
|
| - // Removes Chrome-specific data.
|
| + // BrowsingDataRemoverDelegate:
|
| + bool DoesOriginMatchEmbedderMask(
|
| + int origin_type_mask,
|
| + const GURL& origin,
|
| + storage::SpecialStoragePolicy* special_storage_policy) const override;
|
| void RemoveEmbedderData(
|
| const base::Time& delete_begin,
|
| const base::Time& delete_end,
|
|
|