Index: chrome/browser/extensions/extension_install_prompt.cc |
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc |
index a6af0293cf4736757e38a02545c4ce9f7a85b393..ceaddf051c84b20dfec953d829427b0acf70ebd3 100644 |
--- a/chrome/browser/extensions/extension_install_prompt.cc |
+++ b/chrome/browser/extensions/extension_install_prompt.cc |
@@ -44,33 +44,39 @@ using extensions::BundleInstaller; |
using extensions::Extension; |
using extensions::PermissionSet; |
+namespace { |
+ |
static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
0, // The regular install prompt depends on what's being installed. |
IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE, |
IDS_EXTENSION_INSTALL_PROMPT_TITLE, |
IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE, |
- IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE |
+ IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE, |
+ IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE, |
}; |
static const int kHeadingIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_INSTALL_PROMPT_HEADING, |
0, // Inline installs use the extension name. |
0, // Heading for bundle installs depends on the bundle contents. |
IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING, |
- IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING |
+ IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING, |
+ IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING, |
}; |
static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON, |
- IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON |
+ IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON, |
+ IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON, |
}; |
static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
0, // These all use the platform's default cancel label. |
0, |
0, |
0, |
- IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON |
+ IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON, |
+ IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON, |
}; |
static const int kPermissionsHeaderIds[ |
ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
@@ -79,18 +85,17 @@ static const int kPermissionsHeaderIds[ |
IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO, |
IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO, |
IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO, |
+ IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, |
}; |
-static const int kOAuthHeaderIds[ |
- ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
+static const int kOAuthHeaderIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
IDS_EXTENSION_PROMPT_OAUTH_HEADER, |
0, // Inline installs don't show OAuth permissions. |
0, // Bundle installs don't show OAuth permissions. |
IDS_EXTENSION_PROMPT_OAUTH_REENABLE_HEADER, |
IDS_EXTENSION_PROMPT_OAUTH_PERMISSIONS_HEADER, |
+ 0, // TODO(mpcomplete): Do we need this for external install UI? |
Jeffrey Yasskin
2012/10/13 21:17:35
I'd assume external extensions can ask for oauth p
|
}; |
-namespace { |
- |
// Size of extension icon in top left of dialog. |
const int kIconSize = 69; |
@@ -196,6 +201,9 @@ string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const { |
resource_id = IDS_EXTENSION_INSTALL_THEME_PROMPT_TITLE; |
else |
resource_id = IDS_EXTENSION_INSTALL_EXTENSION_PROMPT_TITLE; |
+ } else if (type_ == EXTERNAL_INSTALL_PROMPT) { |
+ return l10n_util::GetStringFUTF16( |
+ resource_id, UTF8ToUTF16(extension_->name())); |
} |
return l10n_util::GetStringUTF16(resource_id); |
@@ -206,6 +214,8 @@ string16 ExtensionInstallPrompt::Prompt::GetHeading() const { |
return UTF8ToUTF16(extension_->name()); |
} else if (type_ == BUNDLE_INSTALL_PROMPT) { |
return bundle_->GetHeadingTextFor(BundleInstaller::Item::STATE_PENDING); |
+ } else if (type_ == EXTERNAL_INSTALL_PROMPT) { |
+ return l10n_util::GetStringUTF16(kHeadingIds[type_]); |
} else { |
return l10n_util::GetStringFUTF16( |
kHeadingIds[type_], UTF8ToUTF16(extension_->name())); |
@@ -433,6 +443,19 @@ void ExtensionInstallPrompt::ConfirmReEnable(Delegate* delegate, |
LoadImageIfNeeded(); |
} |
+void ExtensionInstallPrompt::ConfirmExternalInstall( |
+ Delegate* delegate, const Extension* extension) { |
+ DCHECK(ui_loop_ == MessageLoop::current()); |
+ extension_ = extension; |
+ permissions_ = extension->GetActivePermissions(); |
+ delegate_ = delegate; |
+ prompt_type_ = EXTERNAL_INSTALL_PROMPT; |
+ show_dialog_callback_ = // @@@MP |
Matt Perry
2012/10/13 00:33:18
I'll remove this once http://codereview.chromium.o
|
+ ExtensionInstallPrompt::GetDefaultShowDialogCallback(); |
+ |
+ LoadImageIfNeeded(); |
Jeffrey Yasskin
2012/10/13 21:17:35
Wow, that's a subtle name for the "go show the dia
|
+} |
+ |
void ExtensionInstallPrompt::ConfirmPermissions( |
Delegate* delegate, |
const Extension* extension, |
@@ -572,6 +595,7 @@ void ExtensionInstallPrompt::ShowConfirmation() { |
case PERMISSIONS_PROMPT: |
case RE_ENABLE_PROMPT: |
case INLINE_INSTALL_PROMPT: |
+ case EXTERNAL_INSTALL_PROMPT: |
case INSTALL_PROMPT: { |
prompt_.set_extension(extension_); |
prompt_.set_icon(gfx::Image(icon_)); |