Index: chrome/browser/supervised_user/supervised_user_service.h |
diff --git a/chrome/browser/supervised_user/supervised_user_service.h b/chrome/browser/supervised_user/supervised_user_service.h |
index 91cf50c7ea61ca870bf8e10e99627978e9b835f0..8b4e67a0fd25e84a519edff5561c0e2b8a7050cb 100644 |
--- a/chrome/browser/supervised_user/supervised_user_service.h |
+++ b/chrome/browser/supervised_user/supervised_user_service.h |
@@ -125,6 +125,15 @@ class SupervisedUserService : public KeyedService, |
// inappropriate URL. |
void ReportURL(const GURL& url, const SuccessCallback& callback); |
+ // Adds an install request for the given WebStore item (App/Extension). |
+ void AddExtensionInstallRequest(const std::string& extension_id, |
+ const base::Version& version, |
+ const SuccessCallback& callback); |
+ |
+ // Same as above, but without a callback, just logging errors on failure. |
+ void AddExtensionInstallRequest(const std::string& extension_id, |
+ const base::Version& version); |
+ |
// Adds an update request for the given WebStore item (App/Extension). |
void AddExtensionUpdateRequest(const std::string& extension_id, |
const base::Version& version, |
@@ -134,11 +143,10 @@ class SupervisedUserService : public KeyedService, |
void AddExtensionUpdateRequest(const std::string& extension_id, |
const base::Version& version); |
- // Get the string used to identify an extension update request. Public for |
- // testing. |
- static std::string GetExtensionUpdateRequestId( |
- const std::string& extension_id, |
- const base::Version& version); |
+ // Get the string used to identify an extension install or update request. |
+ // Public for testing. |
+ static std::string GetExtensionRequestId(const std::string& extension_id, |
+ const base::Version& version); |
// Returns the email address of the custodian. |
std::string GetCustodianEmailAddress() const; |
@@ -214,8 +222,12 @@ class SupervisedUserService : public KeyedService, |
ChangesIncludedSessionOnChangedSettings); |
FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceTest, |
ChangesSyncSessionStateOnChangedSettings); |
- FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceExtensionTest, |
- ExtensionManagementPolicyProvider); |
+ FRIEND_TEST_ALL_PREFIXES( |
+ SupervisedUserServiceExtensionTest, |
+ ExtensionManagementPolicyProviderWithDisabledSUInitiatedInstalls); |
+ FRIEND_TEST_ALL_PREFIXES( |
+ SupervisedUserServiceExtensionTest, |
+ ExtensionManagementPolicyProviderWithEnabledSUInitiatedInstalls); |
using CreatePermissionRequestCallback = |
base::Callback<void(PermissionRequestCreator*, const SuccessCallback&)>; |
@@ -297,6 +309,24 @@ class SupervisedUserService : public KeyedService, |
base::string16* error) const override; |
bool MustRemainInstalled(const extensions::Extension* extension, |
base::string16* error) const override; |
+ bool MustRemainDisabled(const extensions::Extension* extension, |
+ extensions::Extension::DisableReason* reason, |
+ base::string16* error) const override; |
+ |
+ // An extension can be in one of the following states: |
+ // |
+ // FORCED: if it is installed by the custodian. |
+ // REQUIRE_APPROVAL: if it is installed by the supervised user and |
+ // hasn't been approved by the custodian yet. |
+ // ALLOWED: Components, Themes, Default extensions ..etc |
+ // are generally allowed. Extensions that have been approved by the |
+ // custodian are also allowed. |
+ // BLOCKED: Extension is blocked if it is not ALLOWED or FORCED |
+ // and supervised users initiated installs are disabled. |
+ enum class ExtensionState { FORCED, BLOCKED, ALLOWED, REQUIRE_APPROVAL }; |
+ |
+ ExtensionState GetExtensionState( |
+ const extensions::Extension& extension) const; |
// Extensions helper to SetActive(). |
void SetExtensionsActive(); |
@@ -352,6 +382,10 @@ class SupervisedUserService : public KeyedService, |
// corresponding preference is changed. |
void UpdateManualURLs(); |
+ // Updates the map of approved extensions when the corresponding preference |
+ // is changed |
Marc Treib
2016/05/23 15:32:42
nit: period after comment
mamir
2016/05/23 19:35:14
Done.
|
+ void UpdateApprovedExtensions(); |
+ |
// Returns the human readable name of the supervised user. |
std::string GetSupervisedUserName() const; |
@@ -391,6 +425,8 @@ class SupervisedUserService : public KeyedService, |
URLFilterContext url_filter_context_; |
+ std::unique_ptr<std::map<std::string, std::string>> approved_extensions_map_; |
Marc Treib
2016/05/23 15:32:42
Why is this a pointer?
Also, please document what'
mamir
2016/05/23 19:35:14
Done.
|
+ |
enum class BlacklistLoadState { |
NOT_LOADED, |
LOAD_STARTED, |