Index: chrome/browser/extensions/api/webstore_private/webstore_private_api.cc |
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc |
index 2433afe2aaee4209572fff66122239a3dc76f626..80d724e9569f4c0ae7b60aaeb70018c4ef31eee8 100644 |
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc |
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc |
@@ -21,6 +21,7 @@ |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/extension_install_ui_util.h" |
#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/extensions/extension_util.h" |
#include "chrome/browser/extensions/install_tracker.h" |
#include "chrome/browser/gpu/gpu_feature_checker.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -52,6 +53,8 @@ namespace GetEphemeralAppsEnabled = |
namespace GetIsLauncherEnabled = api::webstore_private::GetIsLauncherEnabled; |
namespace GetStoreLogin = api::webstore_private::GetStoreLogin; |
namespace GetWebGLStatus = api::webstore_private::GetWebGLStatus; |
+namespace IsExtensionPendingCustodianApproval = |
+ api::webstore_private::IsExtensionPendingCustodianApproval; |
namespace IsInIncognitoMode = api::webstore_private::IsInIncognitoMode; |
namespace LaunchEphemeralApp = api::webstore_private::LaunchEphemeralApp; |
namespace SetStoreLogin = api::webstore_private::SetStoreLogin; |
@@ -603,4 +606,49 @@ WebstorePrivateGetEphemeralAppsEnabledFunction::Run() { |
false))); |
} |
+WebstorePrivateIsExtensionPendingCustodianApprovalFunction:: |
+ WebstorePrivateIsExtensionPendingCustodianApprovalFunction() |
+ : chrome_details_(this) {} |
+ |
+WebstorePrivateIsExtensionPendingCustodianApprovalFunction:: |
+ ~WebstorePrivateIsExtensionPendingCustodianApprovalFunction() {} |
+ |
+ExtensionFunction::ResponseAction |
+WebstorePrivateIsExtensionPendingCustodianApprovalFunction::Run() { |
+ std::unique_ptr<IsExtensionPendingCustodianApproval::Params> params( |
+ IsExtensionPendingCustodianApproval::Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
+ |
+ Profile* profile = chrome_details_.GetProfile(); |
+ |
+ if (!profile->IsSupervised()) { |
+ return RespondNow(ArgumentList( |
+ IsExtensionPendingCustodianApproval::Results::Create(false))); |
+ } |
+ |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
+ |
+ const Extension* extension = |
+ registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
+ if (!extension) { |
+ return RespondNow(ArgumentList( |
+ IsExtensionPendingCustodianApproval::Results::Create(false))); |
+ } |
+ |
+ ExtensionPrefs* extensions_prefs = ExtensionPrefs::Get(browser_context()); |
+ |
+ if (extensions::util::NeedCustodianApprovalForPermissionIncrease(profile) && |
+ extensions_prefs->HasDisableReason( |
+ params->id, Extension::DISABLE_PERMISSIONS_INCREASE)) { |
+ return RespondNow(ArgumentList( |
+ IsExtensionPendingCustodianApproval::Results::Create(true))); |
+ } |
+ |
+ bool isPendingApproval = extensions_prefs->HasDisableReason( |
Marc Treib
2016/05/09 14:50:57
is_pending_approval
mamir
2016/05/09 15:30:15
Sorry, again!
Done.
|
+ params->id, Extension::DISABLE_CUSTODIAN_APPROVAL_REQUIRED); |
+ |
+ return RespondNow(ArgumentList( |
+ IsExtensionPendingCustodianApproval::Results::Create(isPendingApproval))); |
+} |
+ |
} // namespace extensions |