Chromium Code Reviews| 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 6e66b28ddd30cb90fc0a458627f66833c223af22..87e41925da9d6d53ec9d82dc2b1a93eb04b33d7c 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; |
| @@ -586,4 +589,50 @@ 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))); |
|
Marc Treib
2016/06/29 08:23:12
nit: Maybe create a helper method "Respond(bool re
mamir
2016/06/29 11:40:20
I created a BuildResponse method instead to be con
|
| + } |
| + |
| + 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 is_pending_approval = extensions_prefs->HasDisableReason( |
| + params->id, Extension::DISABLE_CUSTODIAN_APPROVAL_REQUIRED); |
| + |
| + return RespondNow( |
| + ArgumentList(IsExtensionPendingCustodianApproval::Results::Create( |
| + is_pending_approval))); |
| +} |
| + |
| } // namespace extensions |