Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1443)

Unified Diff: chrome/browser/extensions/extension_install_prompt.cc

Issue 264763002: Support remote installation of extensions and apps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 4f0ef54311fd2f0e82879dbdd2dcd27d1c202939..e433a82112800dced5f110a8328dff46e8495ddd 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -26,6 +26,7 @@
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
+#include "extensions/browser/extension_prefs.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
@@ -53,75 +54,82 @@ 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_EXTERNAL_INSTALL_PROMPT_TITLE,
- IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE,
- IDS_EXTENSION_LAUNCH_APP_PROMPT_TITLE,
+ 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_EXTERNAL_INSTALL_PROMPT_TITLE,
+ IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE,
+ IDS_EXTENSION_LAUNCH_APP_PROMPT_TITLE,
+ 0, // The remote install prompt depends on what's being installed.
};
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,
- 0, // External installs use different strings for extensions/apps.
- IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING,
- IDS_EXTENSION_LAUNCH_APP_PROMPT_HEADING,
+ 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,
+ 0, // External installs use different strings for extensions/apps.
+ IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING,
+ IDS_EXTENSION_LAUNCH_APP_PROMPT_HEADING,
+ IDS_EXTENSION_REMOTE_INSTALL_PROMPT_HEADING,
};
static const int kButtons[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_CANCEL,
- ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
+ ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
};
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,
- 0, // External installs use different strings for extensions/apps.
- IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON,
- IDS_EXTENSION_PROMPT_LAUNCH_BUTTON,
+ 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,
+ 0, // External installs use different strings for extensions/apps.
+ IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON,
+ IDS_EXTENSION_PROMPT_LAUNCH_BUTTON,
+ IDS_EXTENSION_PROMPT_REMOTE_INSTALL_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_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON,
- IDS_CLOSE,
- 0, // Platform dependent cancel button.
+ 0, // These all use the platform's default cancel label.
+ 0,
+ 0,
+ 0,
+ IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON,
+ IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON,
+ IDS_CLOSE,
+ 0, // Platform dependent cancel button.
+ 0,
};
-static const int kPermissionsHeaderIds[
- ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
- IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
- IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
- 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,
- IDS_EXTENSION_PROMPT_CAN_ACCESS,
- IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
+static const int
+ kPermissionsHeaderIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
+ IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
+ IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
+ 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,
+ IDS_EXTENSION_PROMPT_CAN_ACCESS,
+ IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
+ IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
};
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,
- 0,
- IDS_EXTENSION_PROMPT_OAUTH_HEADER,
+ 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,
+ 0,
+ IDS_EXTENSION_PROMPT_OAUTH_HEADER,
+ IDS_EXTENSION_PROMPT_OAUTH_HEADER,
};
// Size of extension icon in top left of dialog.
@@ -280,6 +288,11 @@ base::string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const {
} else if (type_ == EXTERNAL_INSTALL_PROMPT) {
return l10n_util::GetStringFUTF16(
resource_id, base::UTF8ToUTF16(extension_->name()));
+ } else if (type_ == REMOTE_INSTALL_PROMPT) {
+ if (extension_->is_app())
+ resource_id = IDS_EXTENSION_REMOTE_INSTALL_APP_PROMPT_TITLE;
+ else
+ resource_id = IDS_EXTENSION_REMOTE_INSTALL_EXTENSION_PROMPT_TITLE;
}
return l10n_util::GetStringUTF16(resource_id);
@@ -641,8 +654,16 @@ void ExtensionInstallPrompt::ConfirmReEnable(Delegate* delegate,
extension_ = extension;
permissions_ = extension->GetActivePermissions();
delegate_ = delegate;
- prompt_.set_type(extension->is_ephemeral() ? LAUNCH_PROMPT :
- RE_ENABLE_PROMPT);
+ int reasons = 0;
+ if (install_ui_->profile()) {
+ reasons = extensions::ExtensionPrefs::Get(install_ui_->profile())
+ ->GetDisableReasons(extension->id());
+ }
+ prompt_.set_type(extension->is_ephemeral()
+ ? LAUNCH_PROMPT
+ : reasons & extensions::Extension::DISABLE_REMOTE_INSTALL
+ ? REMOTE_INSTALL_PROMPT
+ : RE_ENABLE_PROMPT);
LoadImageIfNeeded();
}
@@ -827,7 +848,8 @@ void ExtensionInstallPrompt::ShowConfirmation() {
case EXTERNAL_INSTALL_PROMPT:
case INSTALL_PROMPT:
case LAUNCH_PROMPT:
- case POST_INSTALL_PERMISSIONS_PROMPT: {
+ case POST_INSTALL_PERMISSIONS_PROMPT:
+ case REMOTE_INSTALL_PROMPT: {
prompt_.set_extension(extension_);
prompt_.set_icon(gfx::Image::CreateFrom1xBitmap(icon_));
break;

Powered by Google App Engine
This is Rietveld 408576698