| 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 ff86a0a972e15c57ce09d46f78307e503d68840e..50aa5d445dc8f13cfe8e48328765d642303d38f2 100644
|
| --- a/chrome/browser/extensions/extension_install_prompt.cc
|
| +++ b/chrome/browser/extensions/extension_install_prompt.cc
|
| @@ -60,81 +60,6 @@ bool AllowWebstoreData(ExtensionInstallPrompt::PromptType type) {
|
| type == ExtensionInstallPrompt::REPAIR_PROMPT;
|
| }
|
|
|
| -static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
|
| - IDS_EXTENSION_INSTALL_PROMPT_TITLE,
|
| - IDS_EXTENSION_INSTALL_PROMPT_TITLE,
|
| - 0, // Deprecated.
|
| - IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE,
|
| - IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE,
|
| - 0, // External installs use different strings for extensions/apps/themes.
|
| - IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE,
|
| - IDS_EXTENSION_LAUNCH_APP_PROMPT_TITLE,
|
| - IDS_EXTENSION_REMOTE_INSTALL_PROMPT_TITLE,
|
| - IDS_EXTENSION_REPAIR_PROMPT_TITLE,
|
| - IDS_EXTENSION_DELEGATED_INSTALL_PROMPT_TITLE,
|
| - 0, // Deprecated.
|
| -};
|
| -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,
|
| - // The "OK" button in the post install permissions dialog allows revoking
|
| - // file/device access, and is only shown if such permissions exist; see
|
| - // ShouldDisplayRevokeButton().
|
| - 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,
|
| -};
|
| -static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
|
| - 0, // Regular installs use different strings for extensions/apps/themes.
|
| - 0, // Inline installs as well.
|
| - 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/themes.
|
| - 0, // Different strings depending on the files and devices retained.
|
| - IDS_EXTENSION_PROMPT_LAUNCH_BUTTON,
|
| - 0, // Remote installs use different strings for extensions/apps.
|
| - 0, // Repairs use different strings for extensions/apps.
|
| - IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
|
| - IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
|
| -};
|
| -static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON,
|
| - IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON,
|
| - IDS_CLOSE,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| - IDS_CANCEL,
|
| -};
|
| -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,
|
| - IDS_EXTENSION_PROMPT_CAN_ACCESS,
|
| - IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
|
| - IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO,
|
| -};
|
| -
|
| // Returns bitmap for the default icon with size equal to the default icon's
|
| // pixel size under maximal supported scale factor.
|
| SkBitmap GetDefaultIconBitmapForMaxScaleFactor(bool is_app) {
|
| @@ -192,31 +117,27 @@ ExtensionInstallPrompt::g_last_prompt_type_for_tests =
|
| // This should match the PromptType enum.
|
| std::string ExtensionInstallPrompt::PromptTypeToString(PromptType type) {
|
| switch (type) {
|
| - case ExtensionInstallPrompt::INSTALL_PROMPT:
|
| + case INSTALL_PROMPT:
|
| return "INSTALL_PROMPT";
|
| - case ExtensionInstallPrompt::INLINE_INSTALL_PROMPT:
|
| + case INLINE_INSTALL_PROMPT:
|
| return "INLINE_INSTALL_PROMPT";
|
| - case ExtensionInstallPrompt::RE_ENABLE_PROMPT:
|
| + case RE_ENABLE_PROMPT:
|
| return "RE_ENABLE_PROMPT";
|
| - case ExtensionInstallPrompt::PERMISSIONS_PROMPT:
|
| + case PERMISSIONS_PROMPT:
|
| return "PERMISSIONS_PROMPT";
|
| - case ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT:
|
| + case EXTERNAL_INSTALL_PROMPT:
|
| return "EXTERNAL_INSTALL_PROMPT";
|
| - case ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT:
|
| + case POST_INSTALL_PERMISSIONS_PROMPT:
|
| return "POST_INSTALL_PERMISSIONS_PROMPT";
|
| - case ExtensionInstallPrompt::REMOTE_INSTALL_PROMPT:
|
| + case REMOTE_INSTALL_PROMPT:
|
| return "REMOTE_INSTALL_PROMPT";
|
| - case ExtensionInstallPrompt::REPAIR_PROMPT:
|
| + case REPAIR_PROMPT:
|
| return "REPAIR_PROMPT";
|
| - case ExtensionInstallPrompt::DELEGATED_PERMISSIONS_PROMPT:
|
| + case DELEGATED_PERMISSIONS_PROMPT:
|
| return "DELEGATED_PERMISSIONS_PROMPT";
|
| - case ExtensionInstallPrompt::LAUNCH_PROMPT_DEPRECATED:
|
| - case ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT_DEPRECATED:
|
| - case ExtensionInstallPrompt::DELEGATED_BUNDLE_PERMISSIONS_PROMPT_DEPRECATED:
|
| + case UNSET_PROMPT_TYPE:
|
| + case NUM_PROMPT_TYPES:
|
| NOTREACHED();
|
| - // fall through:
|
| - case ExtensionInstallPrompt::UNSET_PROMPT_TYPE:
|
| - case ExtensionInstallPrompt::NUM_PROMPT_TYPES:
|
| break;
|
| }
|
| return "OTHER";
|
| @@ -231,6 +152,8 @@ ExtensionInstallPrompt::Prompt::Prompt(PromptType type)
|
| rating_count_(0),
|
| show_user_count_(false),
|
| has_webstore_data_(false) {
|
| + DCHECK_NE(type_, UNSET_PROMPT_TYPE);
|
| + DCHECK_NE(type_, NUM_PROMPT_TYPES);
|
| }
|
|
|
| ExtensionInstallPrompt::Prompt::~Prompt() {
|
| @@ -300,88 +223,186 @@ void ExtensionInstallPrompt::Prompt::SetWebstoreData(
|
| }
|
|
|
| base::string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const {
|
| - int id = kTitleIds[type_];
|
| - if (type_ == DELEGATED_PERMISSIONS_PROMPT) {
|
| - return l10n_util::GetStringFUTF16(id, base::UTF8ToUTF16(extension_->name()),
|
| - base::UTF8ToUTF16(delegated_username_));
|
| - }
|
| - if (type_ == EXTERNAL_INSTALL_PROMPT) {
|
| - if (extension_->is_app())
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_APP;
|
| - else if (extension_->is_theme())
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_THEME;
|
| - else
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_EXTENSION;
|
| + int id = -1;
|
| + switch (type_) {
|
| + case INSTALL_PROMPT:
|
| + case INLINE_INSTALL_PROMPT:
|
| + id = IDS_EXTENSION_INSTALL_PROMPT_TITLE;
|
| + break;
|
| + case RE_ENABLE_PROMPT:
|
| + id = IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE;
|
| + break;
|
| + case PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE;
|
| + break;
|
| + case EXTERNAL_INSTALL_PROMPT:
|
| + if (extension_->is_app())
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_APP;
|
| + else if (extension_->is_theme())
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_THEME;
|
| + else
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE_EXTENSION;
|
| + break;
|
| + case POST_INSTALL_PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE;
|
| + break;
|
| + case REMOTE_INSTALL_PROMPT:
|
| + id = IDS_EXTENSION_REMOTE_INSTALL_PROMPT_TITLE;
|
| + break;
|
| + case REPAIR_PROMPT:
|
| + id = IDS_EXTENSION_REPAIR_PROMPT_TITLE;
|
| + break;
|
| + case DELEGATED_PERMISSIONS_PROMPT:
|
| + // Special case: need to include the delegated username.
|
| + return l10n_util::GetStringFUTF16(
|
| + IDS_EXTENSION_DELEGATED_INSTALL_PROMPT_TITLE,
|
| + base::UTF8ToUTF16(extension_->name()),
|
| + base::UTF8ToUTF16(delegated_username_));
|
| + case UNSET_PROMPT_TYPE:
|
| + case NUM_PROMPT_TYPES:
|
| + NOTREACHED();
|
| }
|
| +
|
| return l10n_util::GetStringFUTF16(id, base::UTF8ToUTF16(extension_->name()));
|
| }
|
|
|
| int ExtensionInstallPrompt::Prompt::GetDialogButtons() const {
|
| - if (type_ == POST_INSTALL_PERMISSIONS_PROMPT && ShouldDisplayRevokeButton()) {
|
| - return kButtons[type_] | ui::DIALOG_BUTTON_OK;
|
| + // The "OK" button in the post install permissions dialog allows revoking
|
| + // file/device access, and is only shown if such permissions exist; see
|
| + // ShouldDisplayRevokeButton().
|
| + if (type_ == POST_INSTALL_PERMISSIONS_PROMPT &&
|
| + !ShouldDisplayRevokeButton()) {
|
| + return ui::DIALOG_BUTTON_CANCEL;
|
| }
|
| -
|
| - return kButtons[type_];
|
| + return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL;
|
| }
|
|
|
| base::string16 ExtensionInstallPrompt::Prompt::GetAcceptButtonLabel() const {
|
| - int id = kAcceptButtonIds[type_];
|
| -
|
| - if (type_ == INSTALL_PROMPT || type_ == INLINE_INSTALL_PROMPT) {
|
| - if (extension_->is_app())
|
| - id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_APP;
|
| - else if (extension_->is_theme())
|
| - id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_THEME;
|
| - else
|
| - id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_EXTENSION;
|
| - } else if (type_ == EXTERNAL_INSTALL_PROMPT) {
|
| - if (extension_->is_app())
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_APP;
|
| - else if (extension_->is_theme())
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_THEME;
|
| - else
|
| - id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_EXTENSION;
|
| - } else if (type_ == POST_INSTALL_PERMISSIONS_PROMPT) {
|
| - if (GetRetainedFileCount() && GetRetainedDeviceCount()) {
|
| - id =
|
| - IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_AND_DEVICES_BUTTON;
|
| - } else if (GetRetainedFileCount()) {
|
| - id = IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON;
|
| - } else if (GetRetainedDeviceCount()) {
|
| - id = IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_DEVICES_BUTTON;
|
| - }
|
| - // If there are neither retained files nor devices, leave id 0 so there
|
| - // will be no "accept" button.
|
| - } else if (type_ == REMOTE_INSTALL_PROMPT) {
|
| - if (extension_->is_app())
|
| - id = IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON_APP;
|
| - else
|
| - id = IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON_EXTENSION;
|
| - } else if (type_ == REPAIR_PROMPT) {
|
| - if (extension_->is_app())
|
| - id = IDS_EXTENSION_PROMPT_REPAIR_BUTTON_APP;
|
| - else
|
| - id = IDS_EXTENSION_PROMPT_REPAIR_BUTTON_EXTENSION;
|
| + int id = -1;
|
| + switch (type_) {
|
| + case INSTALL_PROMPT:
|
| + case INLINE_INSTALL_PROMPT:
|
| + if (extension_->is_app())
|
| + id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_APP;
|
| + else if (extension_->is_theme())
|
| + id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_THEME;
|
| + else
|
| + id = IDS_EXTENSION_INSTALL_PROMPT_ACCEPT_BUTTON_EXTENSION;
|
| + break;
|
| + case RE_ENABLE_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON;
|
| + break;
|
| + case PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON;
|
| + break;
|
| + case EXTERNAL_INSTALL_PROMPT:
|
| + if (extension_->is_app())
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_APP;
|
| + else if (extension_->is_theme())
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_THEME;
|
| + else
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_EXTENSION;
|
| + break;
|
| + case POST_INSTALL_PERMISSIONS_PROMPT:
|
| + if (GetRetainedFileCount() && GetRetainedDeviceCount()) {
|
| + id =
|
| + IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_AND_DEVICES_BUTTON;
|
| + } else if (GetRetainedFileCount()) {
|
| + id = IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON;
|
| + } else if (GetRetainedDeviceCount()) {
|
| + id = IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_DEVICES_BUTTON;
|
| + }
|
| + // If there are neither retained files nor devices, leave id -1 so there
|
| + // will be no "accept" button.
|
| + break;
|
| + case REMOTE_INSTALL_PROMPT:
|
| + if (extension_->is_app())
|
| + id = IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON_APP;
|
| + else
|
| + id = IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON_EXTENSION;
|
| + break;
|
| + case REPAIR_PROMPT:
|
| + if (extension_->is_app())
|
| + id = IDS_EXTENSION_PROMPT_REPAIR_BUTTON_APP;
|
| + else
|
| + id = IDS_EXTENSION_PROMPT_REPAIR_BUTTON_EXTENSION;
|
| + break;
|
| + case DELEGATED_PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_INSTALL_BUTTON;
|
| + break;
|
| + case UNSET_PROMPT_TYPE:
|
| + case NUM_PROMPT_TYPES:
|
| + NOTREACHED();
|
| }
|
| - return id ? l10n_util::GetStringUTF16(id) : base::string16();
|
| +
|
| + return id != -1 ? l10n_util::GetStringUTF16(id) : base::string16();
|
| }
|
|
|
| base::string16 ExtensionInstallPrompt::Prompt::GetAbortButtonLabel() const {
|
| - return l10n_util::GetStringUTF16(kAbortButtonIds[type_]);
|
| + int id = -1;
|
| + switch (type_) {
|
| + case INSTALL_PROMPT:
|
| + case INLINE_INSTALL_PROMPT:
|
| + case RE_ENABLE_PROMPT:
|
| + case REMOTE_INSTALL_PROMPT:
|
| + case REPAIR_PROMPT:
|
| + case DELEGATED_PERMISSIONS_PROMPT:
|
| + id = IDS_CANCEL;
|
| + break;
|
| + case PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON;
|
| + break;
|
| + case EXTERNAL_INSTALL_PROMPT:
|
| + id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON;
|
| + break;
|
| + case POST_INSTALL_PERMISSIONS_PROMPT:
|
| + id = IDS_CLOSE;
|
| + break;
|
| + case UNSET_PROMPT_TYPE:
|
| + case NUM_PROMPT_TYPES:
|
| + NOTREACHED();
|
| + }
|
| +
|
| + return l10n_util::GetStringUTF16(id);
|
| }
|
|
|
| base::string16 ExtensionInstallPrompt::Prompt::GetPermissionsHeading(
|
| PermissionsType permissions_type) const {
|
| switch (permissions_type) {
|
| - case REGULAR_PERMISSIONS:
|
| - return l10n_util::GetStringUTF16(kPermissionsHeaderIds[type_]);
|
| + case REGULAR_PERMISSIONS: {
|
| + int id = -1;
|
| + switch (type_) {
|
| + case INSTALL_PROMPT:
|
| + case INLINE_INSTALL_PROMPT:
|
| + case EXTERNAL_INSTALL_PROMPT:
|
| + case REMOTE_INSTALL_PROMPT:
|
| + case DELEGATED_PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO;
|
| + break;
|
| + case RE_ENABLE_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO;
|
| + break;
|
| + case PERMISSIONS_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO;
|
| + break;
|
| + case POST_INSTALL_PERMISSIONS_PROMPT:
|
| + case REPAIR_PROMPT:
|
| + id = IDS_EXTENSION_PROMPT_CAN_ACCESS;
|
| + break;
|
| + case UNSET_PROMPT_TYPE:
|
| + case NUM_PROMPT_TYPES:
|
| + NOTREACHED();
|
| + }
|
| + return l10n_util::GetStringUTF16(id);
|
| + }
|
| case WITHHELD_PERMISSIONS:
|
| return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WITHHELD);
|
| case ALL_PERMISSIONS:
|
| - default:
|
| NOTREACHED();
|
| return base::string16();
|
| }
|
| + NOTREACHED();
|
| + return base::string16();
|
| }
|
|
|
| base::string16 ExtensionInstallPrompt::Prompt::GetRetainedFilesHeading() const {
|
| @@ -785,24 +806,7 @@ void ExtensionInstallPrompt::ShowConfirmation() {
|
| }
|
| }
|
|
|
| - switch (prompt_->type()) {
|
| - case PERMISSIONS_PROMPT:
|
| - case RE_ENABLE_PROMPT:
|
| - case INLINE_INSTALL_PROMPT:
|
| - case EXTERNAL_INSTALL_PROMPT:
|
| - case INSTALL_PROMPT:
|
| - case POST_INSTALL_PERMISSIONS_PROMPT:
|
| - case REMOTE_INSTALL_PROMPT:
|
| - case REPAIR_PROMPT:
|
| - case DELEGATED_PERMISSIONS_PROMPT: {
|
| - prompt_->set_extension(extension_);
|
| - break;
|
| - }
|
| - case LAUNCH_PROMPT_DEPRECATED:
|
| - default:
|
| - NOTREACHED() << "Unknown message";
|
| - return;
|
| - }
|
| + prompt_->set_extension(extension_);
|
| prompt_->set_icon(gfx::Image::CreateFrom1xBitmap(icon_));
|
|
|
| if (show_params_->WasParentDestroyed()) {
|
|
|