| Index: chrome/browser/extensions/extension_disabled_ui.cc
|
| diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
|
| index 8626b11c378fbbfbe2801a0f86e1891e814087f6..ebdd08702097a1b942fe151c5b925dd1f3d4e0ab 100644
|
| --- a/chrome/browser/extensions/extension_disabled_ui.cc
|
| +++ b/chrome/browser/extensions/extension_disabled_ui.cc
|
| @@ -141,6 +141,7 @@ class ExtensionDisabledGlobalError : public GlobalErrorWithStandardBubble,
|
| public:
|
| ExtensionDisabledGlobalError(ExtensionService* service,
|
| const Extension* extension,
|
| + int disable_reasons,
|
| const gfx::Image& icon);
|
| virtual ~ExtensionDisabledGlobalError();
|
|
|
| @@ -171,6 +172,7 @@ class ExtensionDisabledGlobalError : public GlobalErrorWithStandardBubble,
|
| private:
|
| ExtensionService* service_;
|
| const Extension* extension_;
|
| + int disable_reasons_;
|
| gfx::Image icon_;
|
|
|
| // How the user responded to the error; used for metrics.
|
| @@ -194,9 +196,11 @@ class ExtensionDisabledGlobalError : public GlobalErrorWithStandardBubble,
|
| ExtensionDisabledGlobalError::ExtensionDisabledGlobalError(
|
| ExtensionService* service,
|
| const Extension* extension,
|
| + int disable_reasons,
|
| const gfx::Image& icon)
|
| : service_(service),
|
| extension_(extension),
|
| + disable_reasons_(disable_reasons),
|
| icon_(icon),
|
| user_response_(IGNORED),
|
| menu_command_id_(GetMenuCommandID()) {
|
| @@ -218,9 +222,14 @@ ExtensionDisabledGlobalError::ExtensionDisabledGlobalError(
|
|
|
| ExtensionDisabledGlobalError::~ExtensionDisabledGlobalError() {
|
| ReleaseMenuCommandID(menu_command_id_);
|
| - UMA_HISTOGRAM_ENUMERATION("Extensions.DisabledUIUserResponse",
|
| - user_response_,
|
| - EXTENSION_DISABLED_UI_BUCKET_BOUNDARY);
|
| + if (disable_reasons_ & Extension::DISABLE_REMOTE_INSTALL)
|
| + UMA_HISTOGRAM_ENUMERATION("Extensions.DisabledUIUserResponseRemoteInstall",
|
| + user_response_,
|
| + EXTENSION_DISABLED_UI_BUCKET_BOUNDARY);
|
| + else
|
| + UMA_HISTOGRAM_ENUMERATION("Extensions.DisabledUIUserResponse",
|
| + user_response_,
|
| + EXTENSION_DISABLED_UI_BUCKET_BOUNDARY);
|
| }
|
|
|
| GlobalError::Severity ExtensionDisabledGlobalError::GetSeverity() {
|
| @@ -236,8 +245,13 @@ int ExtensionDisabledGlobalError::MenuItemCommandID() {
|
| }
|
|
|
| base::string16 ExtensionDisabledGlobalError::MenuItemLabel() {
|
| - return l10n_util::GetStringFUTF16(IDS_EXTENSION_DISABLED_ERROR_TITLE,
|
| - base::UTF8ToUTF16(extension_->name()));
|
| + if (disable_reasons_ & Extension::DISABLE_REMOTE_INSTALL)
|
| + return l10n_util::GetStringFUTF16(
|
| + IDS_EXTENSION_DISABLED_REMOTE_INSTALL_ERROR_TITLE,
|
| + base::UTF8ToUTF16(extension_->name()));
|
| + else
|
| + return l10n_util::GetStringFUTF16(IDS_EXTENSION_DISABLED_ERROR_TITLE,
|
| + base::UTF8ToUTF16(extension_->name()));
|
| }
|
|
|
| void ExtensionDisabledGlobalError::ExecuteMenuItem(Browser* browser) {
|
| @@ -249,22 +263,38 @@ gfx::Image ExtensionDisabledGlobalError::GetBubbleViewIcon() {
|
| }
|
|
|
| base::string16 ExtensionDisabledGlobalError::GetBubbleViewTitle() {
|
| - return l10n_util::GetStringFUTF16(IDS_EXTENSION_DISABLED_ERROR_TITLE,
|
| - base::UTF8ToUTF16(extension_->name()));
|
| + if (disable_reasons_ & Extension::DISABLE_REMOTE_INSTALL)
|
| + return l10n_util::GetStringFUTF16(
|
| + IDS_EXTENSION_DISABLED_REMOTE_INSTALL_ERROR_TITLE,
|
| + base::UTF8ToUTF16(extension_->name()));
|
| + else
|
| + return l10n_util::GetStringFUTF16(IDS_EXTENSION_DISABLED_ERROR_TITLE,
|
| + base::UTF8ToUTF16(extension_->name()));
|
| }
|
|
|
| std::vector<base::string16>
|
| ExtensionDisabledGlobalError::GetBubbleViewMessages() {
|
| std::vector<base::string16> messages;
|
| - messages.push_back(l10n_util::GetStringFUTF16(
|
| - extension_->is_app() ?
|
| - IDS_APP_DISABLED_ERROR_LABEL : IDS_EXTENSION_DISABLED_ERROR_LABEL,
|
| - base::UTF8ToUTF16(extension_->name())));
|
| - messages.push_back(l10n_util::GetStringUTF16(
|
| - IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO));
|
| std::vector<base::string16> permission_warnings =
|
| extensions::PermissionMessageProvider::Get()->GetWarningMessages(
|
| extension_->GetActivePermissions(), extension_->GetType());
|
| + if (disable_reasons_ & Extension::DISABLE_REMOTE_INSTALL) {
|
| + messages.push_back(l10n_util::GetStringFUTF16(
|
| + extension_->is_app()
|
| + ? IDS_APP_DISABLED_REMOTE_INSTALL_ERROR_LABEL
|
| + : IDS_EXTENSION_DISABLED_REMOTE_INSTALL_ERROR_LABEL,
|
| + base::UTF8ToUTF16(extension_->name())));
|
| + if (!permission_warnings.empty())
|
| + messages.push_back(
|
| + l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO));
|
| + } else {
|
| + messages.push_back(l10n_util::GetStringFUTF16(
|
| + extension_->is_app() ? IDS_APP_DISABLED_ERROR_LABEL
|
| + : IDS_EXTENSION_DISABLED_ERROR_LABEL,
|
| + base::UTF8ToUTF16(extension_->name())));
|
| + messages.push_back(l10n_util::GetStringUTF16(
|
| + IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO));
|
| + }
|
| for (size_t i = 0; i < permission_warnings.size(); ++i) {
|
| messages.push_back(l10n_util::GetStringFUTF16(
|
| IDS_EXTENSION_PERMISSION_LINE, permission_warnings[i]));
|
| @@ -273,7 +303,11 @@ ExtensionDisabledGlobalError::GetBubbleViewMessages() {
|
| }
|
|
|
| base::string16 ExtensionDisabledGlobalError::GetBubbleViewAcceptButtonLabel() {
|
| - return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON);
|
| + if (disable_reasons_ & Extension::DISABLE_REMOTE_INSTALL)
|
| + return l10n_util::GetStringUTF16(
|
| + IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON);
|
| + else
|
| + return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON);
|
| }
|
|
|
| base::string16 ExtensionDisabledGlobalError::GetBubbleViewCancelButtonLabel() {
|
| @@ -338,19 +372,21 @@ namespace extensions {
|
|
|
| void AddExtensionDisabledErrorWithIcon(base::WeakPtr<ExtensionService> service,
|
| const std::string& extension_id,
|
| + int disable_reasons,
|
| const gfx::Image& icon) {
|
| if (!service.get())
|
| return;
|
| const Extension* extension = service->GetInstalledExtension(extension_id);
|
| if (extension) {
|
| GlobalErrorServiceFactory::GetForProfile(service->profile())
|
| - ->AddGlobalError(
|
| - new ExtensionDisabledGlobalError(service.get(), extension, icon));
|
| + ->AddGlobalError(new ExtensionDisabledGlobalError(
|
| + service.get(), extension, disable_reasons, icon));
|
| }
|
| }
|
|
|
| void AddExtensionDisabledError(ExtensionService* service,
|
| - const Extension* extension) {
|
| + const Extension* extension,
|
| + int disable_reasons) {
|
| // Do not display notifications for ephemeral apps that have been disabled.
|
| // Instead, a prompt will be shown the next time the app is launched.
|
| if (extension->is_ephemeral())
|
| @@ -359,10 +395,14 @@ void AddExtensionDisabledError(ExtensionService* service,
|
| extensions::ExtensionResource image = extensions::IconsInfo::GetIconResource(
|
| extension, kIconSize, ExtensionIconSet::MATCH_BIGGER);
|
| gfx::Size size(kIconSize, kIconSize);
|
| - ImageLoader::Get(service->profile())->LoadImageAsync(
|
| - extension, image, size,
|
| - base::Bind(&AddExtensionDisabledErrorWithIcon,
|
| - service->AsWeakPtr(), extension->id()));
|
| + ImageLoader::Get(service->profile())
|
| + ->LoadImageAsync(extension,
|
| + image,
|
| + size,
|
| + base::Bind(&AddExtensionDisabledErrorWithIcon,
|
| + service->AsWeakPtr(),
|
| + extension->id(),
|
| + disable_reasons));
|
| }
|
|
|
| void ShowExtensionDisabledDialog(ExtensionService* service,
|
|
|