Extension install prompt: in the delegated permissions prompt, include optional permissions
Followup to https://codereview.chromium.org/850283003.
BUG=397951
Review URL: https://codereview.chromium.org/968183002
Cr-Commit-Position: refs/heads/master@{#319055}
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 00146cf..45047b8 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -36,6 +36,7 @@
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
+#include "extensions/common/manifest_handlers/permissions_parser.h"
#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/permissions/permission_set.h"
#include "extensions/common/permissions/permissions_data.h"
@@ -924,6 +925,15 @@
.InitializePermissions(extension_);
permissions_to_display =
extension_->permissions_data()->active_permissions();
+ // For delegated installs, all optional permissions are pre-approved by the
+ // person who triggers the install, so add them to the list.
+ if (prompt_->type() == DELEGATED_PERMISSIONS_PROMPT) {
+ scoped_refptr<const PermissionSet> optional_permissions =
+ extensions::PermissionsParser::GetOptionalPermissions(extension_);
+ permissions_to_display = PermissionSet::CreateUnion(
+ permissions_to_display.get(),
+ optional_permissions.get());
+ }
}
if (permissions_to_display.get() &&