#include "extensions/browser/pref_names.h"
#include "extensions/common/extension.h"
+namespace policy {
+class MockConfigurationPolicyProvider;
+class PolicyBundle;
+} // namespace policy
+
namespace extensions {
// Base class for essential routines on preference manipulation.
void UnsetAllowedTypes();
void ClearAllowedTypes();
void AddAllowedType(const std::string& allowed_type);
- void RemoveAllowedType(const std::string& allowd_type);
+ void RemoveAllowedType(const std::string& allowed_type);
+
+ // Helper functions for 'blocked_permissions' manipulation. |prefix| can be
+ // kWildCard or a valid extension ID.
+ void UnsetBlockedPermissions(const std::string& prefix);
+ void ClearBlockedPermissions(const std::string& prefix);
+ void AddBlockedPermission(const std::string& prefix,
+ const std::string& permission);
+ void RemoveBlockedPermission(const std::string& prefix,
+ const std::string& permission);
+
+ // Helper functions for 'allowed_permissions' manipulation. |id| must be a
+ // valid extension id.
+ void UnsetAllowedPermissions(const std::string& id);
+ void ClearAllowedPermissions(const std::string& id);
+ void AddAllowedPermission(const std::string& id,
+ const std::string& permission);
+ void RemoveAllowedPermission(const std::string& id,
+ const std::string& permission);
// Expose a read-only preference to user.
const base::DictionaryValue* GetPref();
: service_(service) {
const base::Value* pref_value =
service_->GetManagedPref(pref_names::kExtensionManagement);
- if (pref_value) {
- const base::DictionaryValue* dict_value = NULL;
- pref_value->GetAsDictionary(&dict_value);
+ const base::DictionaryValue* dict_value = nullptr;
+ if (pref_value && pref_value->GetAsDictionary(&dict_value))
SetPref(dict_value->DeepCopy());
- } else {
+ else
SetPref(new base::DictionaryValue);
- }
}
virtual ~ExtensionManagementPrefUpdater() {
DISALLOW_COPY_AND_ASSIGN(ExtensionManagementPrefUpdater);
};
+// A helper class to manipulate the extension management policy in browser
+// tests.
+class ExtensionManagementPolicyUpdater
+ : public ExtensionManagementPrefUpdaterBase {
+ public:
+ explicit ExtensionManagementPolicyUpdater(
+ policy::MockConfigurationPolicyProvider* provider);
+ ~ExtensionManagementPolicyUpdater() override;
+
+ private:
+ policy::MockConfigurationPolicyProvider* provider_;
+ scoped_ptr<policy::PolicyBundle> policies_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionManagementPolicyUpdater);
+};
+
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_TEST_UTIL_H_