Add new disable reason BLOCKED_MATURE for mature extensions

Child users should not be able to install extensions and themes with
mature content from Chrome Web Store (CWS). Add a new disable reason
BLOCKED_MATURE to block any extensions or themes marked mature in
CWS for child users.

Bug: 1037965,1040614
Change-Id: I37cec6efb51e0e88c1714e57be0ef279b1b32ed9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2017646
Commit-Queue: Toby Huang <[email protected]>
Reviewed-by: Aga Wronska <[email protected]>
Reviewed-by: Devlin <[email protected]>
Reviewed-by: Brian White <[email protected]>
Cr-Commit-Position: refs/heads/master@{#738456}
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 9131c06..e99ce68 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -780,6 +780,8 @@
 void ExtensionService::DisableExtension(const std::string& extension_id,
                                         int disable_reasons) {
   CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK(disable_reasons != disable_reason::DISABLE_BLOCKED_MATURE ||
+         profile()->IsChild());
   extension_registrar_.DisableExtension(extension_id, disable_reasons);
 }
 
@@ -1026,6 +1028,7 @@
     // related disable reasons.
     if (!profile()->IsChild()) {
       disable_reasons &= (~disable_reason::DISABLE_CUSTODIAN_APPROVAL_REQUIRED);
+      disable_reasons &= (~disable_reason::DISABLE_BLOCKED_MATURE);
     }
 
     extension_prefs_->ReplaceDisableReasons(extension->id(), disable_reasons);