Making the extension permissions dialog scrollable, when needed (adding expandable sections for things needing more details).

BUG=70422
[email protected], [email protected], [email protected]

Review URL: https://codereview.chromium.org/18854021

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211218 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 9faaa3a3..fea62b0e 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -202,6 +202,11 @@
   permissions_ = permissions;
 }
 
+void ExtensionInstallPrompt::Prompt::SetPermissionsDetails(
+    const std::vector<string16>& details) {
+  details_ = details;
+}
+
 void ExtensionInstallPrompt::Prompt::SetOAuthIssueAdvice(
     const IssueAdviceInfo& issue_advice) {
   oauth_issue_advice_ = issue_advice;
@@ -316,9 +321,18 @@
 }
 
 string16 ExtensionInstallPrompt::Prompt::GetRetainedFilesHeading() const {
+  // TODO(finnur): Remove this once all platforms are using
+  // GetRetainedFilesHeadingWithCount().
   return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_RETAINED_FILES);
 }
 
+string16
+ExtensionInstallPrompt::Prompt::GetRetainedFilesHeadingWithCount() const {
+  return l10n_util::GetStringFUTF16(
+      IDS_EXTENSION_PROMPT_RETAINED_FILES_WITH_COUNT,
+      base::IntToString16(GetRetainedFileCount()));
+}
+
 bool ExtensionInstallPrompt::Prompt::ShouldShowPermissions() const {
   return GetPermissionCount() > 0 || type_ == POST_INSTALL_PERMISSIONS_PROMPT;
 }
@@ -370,11 +384,21 @@
   return permissions_.size();
 }
 
+size_t ExtensionInstallPrompt::Prompt::GetPermissionsDetailsCount() const {
+  return details_.size();
+}
+
 string16 ExtensionInstallPrompt::Prompt::GetPermission(size_t index) const {
   CHECK_LT(index, permissions_.size());
   return permissions_[index];
 }
 
+string16 ExtensionInstallPrompt::Prompt::GetPermissionsDetails(
+    size_t index) const {
+  CHECK_LT(index, details_.size());
+  return details_[index];
+}
+
 size_t ExtensionInstallPrompt::Prompt::GetOAuthIssueCount() const {
   return oauth_issue_advice_.size();
 }
@@ -719,7 +743,10 @@
            extension_))) {
     Manifest::Type extension_type = extension_ ?
         extension_->GetType() : Manifest::TYPE_UNKNOWN;
-    prompt_.SetPermissions(permissions_->GetWarningMessages(extension_type));
+    prompt_.SetPermissions(
+        permissions_->GetWarningMessages(extension_type));
+    prompt_.SetPermissionsDetails(
+        permissions_->GetWarningMessagesDetails(extension_type));
   }
 
   switch (prompt_.type()) {