Index: chrome/browser/extensions/extension_install_ui.cc |
diff --git a/chrome/browser/extensions/extension_install_ui.cc b/chrome/browser/extensions/extension_install_ui.cc |
index 62d904a0326e3458b24024fce46ae0b7a2a0242b..bdbd8395385f7052b9611b65233058e7fdc83566 100644 |
--- a/chrome/browser/extensions/extension_install_ui.cc |
+++ b/chrome/browser/extensions/extension_install_ui.cc |
@@ -39,22 +39,32 @@ |
// static |
const int ExtensionInstallUI::kTitleIds[NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_INSTALL_PROMPT_TITLE, |
- IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE |
+ IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE, |
+ IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE |
}; |
// static |
const int ExtensionInstallUI::kHeadingIds[NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_INSTALL_PROMPT_HEADING, |
- IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING |
+ IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING, |
+ IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING |
}; |
// static |
const int ExtensionInstallUI::kButtonIds[NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
- IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON |
+ IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON, |
+ IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON |
+}; |
+// static |
+const int ExtensionInstallUI::kAbortButtonIds[NUM_PROMPT_TYPES] = { |
+ 0, |
+ 0, |
+ IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON |
}; |
// static |
const int ExtensionInstallUI::kWarningIds[NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, |
- IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO |
+ IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO, |
+ IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO, |
}; |
namespace { |
@@ -112,6 +122,7 @@ void ExtensionInstallUI::ConfirmInstall(Delegate* delegate, |
const Extension* extension) { |
DCHECK(ui_loop_ == MessageLoop::current()); |
extension_ = extension; |
+ permissions_ = extension->GetActivePermissions(); |
delegate_ = delegate; |
// We special-case themes to not show any confirm UI. Instead they are |
@@ -129,11 +140,24 @@ void ExtensionInstallUI::ConfirmReEnable(Delegate* delegate, |
const Extension* extension) { |
DCHECK(ui_loop_ == MessageLoop::current()); |
extension_ = extension; |
+ permissions_ = extension->GetActivePermissions(); |
delegate_ = delegate; |
ShowConfirmation(RE_ENABLE_PROMPT); |
} |
+void ExtensionInstallUI::ConfirmPermissions( |
+ Delegate* delegate, |
+ const Extension* extension, |
+ const ExtensionPermissionSet* permissions) { |
+ DCHECK(ui_loop_ == MessageLoop::current()); |
+ extension_ = extension; |
+ permissions_ = permissions; |
+ delegate_ = delegate; |
+ |
+ ShowConfirmation(PERMISSIONS_PROMPT); |
+} |
+ |
void ExtensionInstallUI::OnInstallSuccess(const Extension* extension, |
SkBitmap* icon) { |
extension_ = extension; |
@@ -193,6 +217,7 @@ void ExtensionInstallUI::OnImageLoaded( |
SetIcon(image); |
switch (prompt_type_) { |
+ case PERMISSIONS_PROMPT: |
case RE_ENABLE_PROMPT: |
case INSTALL_PROMPT: { |
// TODO(jcivelli): http://crbug.com/44771 We should not show an install |
@@ -203,7 +228,7 @@ void ExtensionInstallUI::OnImageLoaded( |
NotificationService::NoDetails()); |
std::vector<string16> warnings = |
- extension_->GetPermissionMessageStrings(); |
+ permissions_->GetWarningMessages(); |
ShowExtensionInstallDialog( |
profile_, delegate_, extension_, &icon_, warnings, prompt_type_); |
break; |