Add minimum version to extension management

This CL adds 'minimum_version' setting to ExtensionManagement. Allows policy to specify the minimum version required for the specified extension to be enabled.

This CL adds another Extension::DisableReason DISABLE_UPDATE_REQUIRED_BY_POLICY, and using it to track extensions being disabled by minimum version settings, and re-enable them if necessary.

BUG=177351

Review URL: https://codereview.chromium.org/706623004

Cr-Commit-Position: refs/heads/master@{#306834}
diff --git a/chrome/browser/extensions/extension_management_test_util.h b/chrome/browser/extensions/extension_management_test_util.h
index ded3ea49..1a34783 100644
--- a/chrome/browser/extensions/extension_management_test_util.h
+++ b/chrome/browser/extensions/extension_management_test_util.h
@@ -62,7 +62,7 @@
                                const std::string& permission);
 
   // Helper functions for 'allowed_permissions' manipulation. |id| must be a
-  // valid extension id.
+  // valid extension ID.
   void UnsetAllowedPermissions(const std::string& id);
   void ClearAllowedPermissions(const std::string& id);
   void AddAllowedPermission(const std::string& id,
@@ -70,6 +70,12 @@
   void RemoveAllowedPermission(const std::string& id,
                                const std::string& permission);
 
+  // Helper functions for 'minimum_version_required' manipulation. |id| must be
+  // a valid extension ID.
+  void SetMinimumVersionRequired(const std::string& id,
+                                 const std::string& version);
+  void UnsetMinimumVersionRequired(const std::string& id);
+
   // Expose a read-only preference to user.
   const base::DictionaryValue* GetPref();