summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_install_ui.cc
diff options
context:
space:
mode:
authormihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-02 18:20:24 +0000
committermihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-02 18:20:24 +0000
commit122e8dfabc4eff6875e41009a0b4195290743e33 (patch)
tree489764393824ff646c47682ba3aff2df95037055 /chrome/browser/extensions/extension_install_ui.cc
parent86d67adb3cc099cc16cee194a4e4457df8d79c05 (diff)
downloadchromium_src-122e8dfabc4eff6875e41009a0b4195290743e33.zip
chromium_src-122e8dfabc4eff6875e41009a0b4195290743e33.tar.gz
chromium_src-122e8dfabc4eff6875e41009a0b4195290743e33.tar.bz2
Implement inline install UI for views.
To make this easier, the extension install dialog was changed from doing layout by hand to using GridLayout (thus no longer necessitating overrides of GetPreferredSize/Layout or lots of math). To lessen the repeated logic between the inline install UIs, ExtensionInstallUI::Prompt was beefed up to return formatted data directly (and in the case of rating stars, include the logic for which ones to show). Also includes some other tweaks: - Rename inline install dialog to "Add to Chrome" and the install button in it to "Add" - Use the final webstore JSON data URLs R=asargent@chromium.org BUG=93380 TEST=no Review URL: http://codereview.chromium.org/7826029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99407 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_install_ui.cc')
-rw-r--r--chrome/browser/extensions/extension_install_ui.cc127
1 files changed, 113 insertions, 14 deletions
diff --git a/chrome/browser/extensions/extension_install_ui.cc b/chrome/browser/extensions/extension_install_ui.cc
index 77fc4a4..6fd551f 100644
--- a/chrome/browser/extensions/extension_install_ui.cc
+++ b/chrome/browser/extensions/extension_install_ui.cc
@@ -39,36 +39,31 @@
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
-// static
-const int ExtensionInstallUI::kTitleIds[NUM_PROMPT_TYPES] = {
- IDS_EXTENSION_INSTALL_PROMPT_TITLE,
+static const int kTitleIds[ExtensionInstallUI::NUM_PROMPT_TYPES] = {
IDS_EXTENSION_INSTALL_PROMPT_TITLE,
+ IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE,
IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE,
IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE
};
-// static
-const int ExtensionInstallUI::kHeadingIds[NUM_PROMPT_TYPES] = {
+static const int kHeadingIds[ExtensionInstallUI::NUM_PROMPT_TYPES] = {
IDS_EXTENSION_INSTALL_PROMPT_HEADING,
IDS_EXTENSION_INSTALL_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,
+static const int kAcceptButtonIds[ExtensionInstallUI::NUM_PROMPT_TYPES] = {
IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
+ IDS_EXTENSION_PROMPT_INLINE_INSTALL_BUTTON,
IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON,
IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON
};
-// static
-const int ExtensionInstallUI::kAbortButtonIds[NUM_PROMPT_TYPES] = {
+static const int kAbortButtonIds[ExtensionInstallUI::NUM_PROMPT_TYPES] = {
0,
0,
0,
IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON
};
-// static
-const int ExtensionInstallUI::kWarningIds[NUM_PROMPT_TYPES] = {
+static const int kPermissionsHeaderIds[ExtensionInstallUI::NUM_PROMPT_TYPES] = {
IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO,
@@ -82,12 +77,116 @@ const int kIconSize = 69;
} // namespace
-ExtensionInstallUI::Prompt::Prompt(PromptType type) : type(type) {
+ExtensionInstallUI::Prompt::Prompt(PromptType type) : type_(type) {
}
ExtensionInstallUI::Prompt::~Prompt() {
}
+void ExtensionInstallUI::Prompt::SetPermissions(
+ std::vector<string16> permissions) {
+ permissions_ = permissions;
+}
+
+void ExtensionInstallUI::Prompt::SetInlineInstallWebstoreData(
+ std::string localized_user_count,
+ double average_rating,
+ int rating_count) {
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ localized_user_count_ = localized_user_count;
+ average_rating_ = average_rating;
+ rating_count_ = rating_count;
+}
+
+string16 ExtensionInstallUI::Prompt::GetDialogTitle() const {
+ if (type_ == INLINE_INSTALL_PROMPT) {
+ return l10n_util::GetStringFUTF16(
+ kTitleIds[type_], l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME));
+ } else {
+ return l10n_util::GetStringUTF16(kTitleIds[type_]);
+ }
+}
+
+string16 ExtensionInstallUI::Prompt::GetHeading(std::string extension_name)
+ const {
+ if (type_ == INLINE_INSTALL_PROMPT) {
+ return UTF8ToUTF16(extension_name);
+ } else {
+ return l10n_util::GetStringFUTF16(
+ kHeadingIds[type_], UTF8ToUTF16(extension_name));
+ }
+}
+
+string16 ExtensionInstallUI::Prompt::GetAcceptButtonLabel() const {
+ return l10n_util::GetStringUTF16(kAcceptButtonIds[type_]);
+}
+
+bool ExtensionInstallUI::Prompt::HasAbortButtonLabel() const {
+ return kAbortButtonIds[type_] > 0;
+}
+
+string16 ExtensionInstallUI::Prompt::GetAbortButtonLabel() const {
+ CHECK(HasAbortButtonLabel());
+ return l10n_util::GetStringUTF16(kAbortButtonIds[type_]);
+}
+
+string16 ExtensionInstallUI::Prompt::GetPermissionsHeader() const {
+ return l10n_util::GetStringUTF16(kPermissionsHeaderIds[type_]);
+}
+
+void ExtensionInstallUI::Prompt::AppendRatingStars(
+ StarAppender appender, void* data) const {
+ CHECK(appender);
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ int rating_integer = floor(average_rating_);
+ double rating_fractional = average_rating_ - rating_integer;
+
+ if (rating_fractional > 0.66) {
+ rating_integer++;
+ }
+
+ if (rating_fractional < 0.33 || rating_fractional > 0.66) {
+ rating_fractional = 0;
+ }
+
+ int i;
+ for (i = 0; i < rating_integer; i++) {
+ appender(IDR_EXTENSIONS_RATING_STAR_ON, data);
+ }
+ if (rating_fractional) {
+ appender(IDR_EXTENSIONS_RATING_STAR_HALF_LEFT, data);
+ i++;
+ }
+ for (; i < kMaxExtensionRating; i++) {
+ appender(IDR_EXTENSIONS_RATING_STAR_OFF, data);
+ }
+}
+
+string16 ExtensionInstallUI::Prompt::GetRatingCount() const {
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ return l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_RATING_COUNT,
+ UTF8ToUTF16(base::IntToString(rating_count_)));
+}
+
+string16 ExtensionInstallUI::Prompt::GetUserCount() const {
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ return l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_USER_COUNT,
+ UTF8ToUTF16(localized_user_count_));
+}
+
+size_t ExtensionInstallUI::Prompt::GetPermissionCount() const {
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ return permissions_.size();
+}
+
+string16 ExtensionInstallUI::Prompt::GetPermission(int index) const {
+ CHECK_EQ(INLINE_INSTALL_PROMPT, type_);
+ return l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_PERMISSION_LINE, permissions_[index]);
+}
+
ExtensionInstallUI::ExtensionInstallUI(Profile* profile)
: profile_(profile),
ui_loop_(MessageLoop::current()),
@@ -227,7 +326,7 @@ void ExtensionInstallUI::OnImageLoaded(
NotificationService::NoDetails());
Prompt prompt(prompt_type_);
- prompt.permissions = permissions_->GetWarningMessages();
+ prompt.SetPermissions(permissions_->GetWarningMessages());
ShowExtensionInstallDialog(
profile_, delegate_, extension_, &icon_, prompt);
break;