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

Unified Diff: chrome/browser/extensions/extension_service.h

Issue 695133005: Temporarily disable extensions and sync while a profile is locked - Profiles Approach (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 1 month 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/extension_service.h
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 5d9ecc9d15166075152ccd8a4c152f7f1e6ac82b..8f760f9560f4db3132d892faca31b33165764fe0 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -289,6 +289,18 @@ class ExtensionService
// |was_installed_by_default| flag.
void DisableUserExtensions(const std::vector<std::string>& except_ids);
+ // Puts all extensions in a blocked state: Unloading every extension, and
+ // preventing them from ever loading until UnblockAllExtensions is called.
+ // This state is stored in preferences, so persists until Chrome restarts.
+ //
+ // Component, external component and whitelisted policy installed extensions
+ // are exempt from being Blocked (see CanBlockExtension).
+ void BlockAllExtensions();
+
+ // All blocked extensions are reverted to their previous state, and are
+ // reloaded. Newly added extensions are no longer automatically blocked.
+ void UnblockAllExtensions();
+
// Updates the |extension|'s granted permissions lists to include all
// permissions in the |extension|'s manifest and re-enables the
// extension.
@@ -546,6 +558,9 @@ class ExtensionService
// this extension initially.
int GetDisableReasonsOnInstalled(const extensions::Extension* extension);
+ // Helper method to determine if an extension can be blocked.
+ bool CanBlockExtension(const extensions::Extension* extension) const;
+
// Helper to determine if updating an extensions should proceed immediately,
// or if we should delay the update until further notice.
bool ShouldDelayExtensionUpdate(const std::string& extension_id,
@@ -556,10 +571,11 @@ class ExtensionService
void ManageBlacklist(
const extensions::Blacklist::BlacklistStateMap& blacklisted_ids);
- // Add extensions in |blocked| to blacklisted_extensions, remove extensions
- // that are neither in |blocked|, nor in |unchanged|.
- void UpdateBlockedExtensions(const extensions::ExtensionIdSet& blocked,
- const extensions::ExtensionIdSet& unchanged);
+ // Add extensions in |blacklisted| to blacklisted_extensions, remove
+ // extensions that are neither in |blacklisted|, nor in |unchanged|.
+ void UpdateBlacklistedExtensions(
+ const extensions::ExtensionIdSet& to_blacklist,
+ const extensions::ExtensionIdSet& unchanged);
void UpdateGreylistedExtensions(
const extensions::ExtensionIdSet& greylist,
@@ -684,6 +700,9 @@ class ExtensionService
// first time.
bool is_first_run_;
+ // Set to true if extensions are all to be blocked.
+ bool block_extensions_;
+
// Store the ids of reloading extensions. We use this to re-enable extensions
// which were disabled for a reload.
std::set<std::string> reloading_extensions_;
@@ -732,6 +751,8 @@ class ExtensionService
GreylistUnknownDontChange);
FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
ManagementPolicyProhibitsEnableOnInstalled);
+ FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
+ BlockAndUnblockBlacklistedExtension);
DISALLOW_COPY_AND_ASSIGN(ExtensionService);
};

Powered by Google App Engine
This is Rietveld 408576698