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 dec1aa54f3b756b3d1ba147b74b8179e6c912cf0..0c47b2fedcf372877bb7bd092c113bfd43f326cf 100644 |
--- a/chrome/browser/extensions/extension_install_prompt.cc |
+++ b/chrome/browser/extensions/extension_install_prompt.cc |
@@ -91,7 +91,7 @@ static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
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, |
+ 0, // Different strings depending on the files and devices retained. |
IDS_EXTENSION_PROMPT_LAUNCH_BUTTON, |
IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON, |
}; |
@@ -207,6 +207,7 @@ std::string ExtensionInstallPrompt::PromptTypeToString(PromptType type) { |
ExtensionInstallPrompt::Prompt::Prompt(PromptType type) |
: type_(type), |
is_showing_details_for_retained_files_(false), |
+ is_showing_details_for_retained_devices_(false), |
extension_(NULL), |
bundle_(NULL), |
average_rating_(0.0), |
@@ -242,6 +243,9 @@ void ExtensionInstallPrompt::Prompt::SetIsShowingDetails( |
case RETAINED_FILES_DETAILS: |
is_showing_details_for_retained_files_ = is_showing_details; |
break; |
+ case RETAINED_DEVICES_DETAILS: |
+ is_showing_details_for_retained_devices_ = is_showing_details; |
+ break; |
} |
} |
@@ -302,8 +306,7 @@ base::string16 ExtensionInstallPrompt::Prompt::GetHeading() const { |
} |
int ExtensionInstallPrompt::Prompt::GetDialogButtons() const { |
- if (type_ == POST_INSTALL_PERMISSIONS_PROMPT && |
- ShouldDisplayRevokeFilesButton()) { |
+ if (type_ == POST_INSTALL_PERMISSIONS_PROMPT && ShouldDisplayRevokeButton()) { |
return kButtons[type_] | ui::DIALOG_BUTTON_OK; |
} |
Finnur
2014/09/23 09:46:03
nit: No need for braces (single-line).
Reilly Grant (use Gerrit)
2014/09/25 17:06:21
The C++ style guide allows braces for single-line
|
@@ -316,12 +319,12 @@ bool ExtensionInstallPrompt::Prompt::ShouldShowExplanationText() const { |
} |
bool ExtensionInstallPrompt::Prompt::HasAcceptButtonLabel() const { |
+ if (type_ == POST_INSTALL_PERMISSIONS_PROMPT) |
+ return ShouldDisplayRevokeButton(); |
+ |
if (kAcceptButtonIds[type_] == 0) |
return false; |
- if (type_ == POST_INSTALL_PERMISSIONS_PROMPT) |
- return ShouldDisplayRevokeFilesButton(); |
- |
return true; |
} |
@@ -335,6 +338,18 @@ base::string16 ExtensionInstallPrompt::Prompt::GetAcceptButtonLabel() const { |
else |
id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ACCEPT_BUTTON_EXTENSION; |
return l10n_util::GetStringUTF16(id); |
+ } else if (type_ == POST_INSTALL_PERMISSIONS_PROMPT) { |
+ int id = -1; |
+ 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 { |
Finnur
2014/09/23 09:46:03
Ummm... Won't this use the RetainedDevices label w
Reilly Grant (use Gerrit)
2014/09/25 17:06:21
Since HasAcceptButtonLabel() will return false whe
|
+ DCHECK_LT(0U, GetRetainedDeviceCount()); |
+ id = IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_DEVICES_BUTTON; |
+ } |
+ return l10n_util::GetStringUTF16(id); |
} |
if (ShouldShowExplanationText()) |
return experiment_->GetOkButtonText(); |
@@ -367,13 +382,31 @@ base::string16 ExtensionInstallPrompt::Prompt::GetRetainedFilesHeading() const { |
IDS_EXTENSION_PROMPT_RETAINED_FILES_FEW, |
IDS_EXTENSION_PROMPT_RETAINED_FILES_MANY, |
}; |
- std::vector<int> message_ids; |
- for (size_t i = 0; i < arraysize(kRetainedFilesMessageIDs); i++) { |
- message_ids.push_back(kRetainedFilesMessageIDs[i]); |
- } |
+ std::vector<int> message_ids( |
+ kRetainedFilesMessageIDs, |
+ kRetainedFilesMessageIDs + arraysize(kRetainedFilesMessageIDs)); |
+ |
return l10n_util::GetPluralStringFUTF16(message_ids, GetRetainedFileCount()); |
} |
+base::string16 ExtensionInstallPrompt::Prompt::GetRetainedDevicesHeading() |
+ const { |
+ const int kRetainedDevicesMessageIDs[6] = { |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICES_DEFAULT, |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICE_SINGULAR, |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICES_ZERO, |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICES_TWO, |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICES_FEW, |
+ IDS_EXTENSION_PROMPT_RETAINED_DEVICES_MANY, |
+ }; |
+ std::vector<int> message_ids( |
+ kRetainedDevicesMessageIDs, |
+ kRetainedDevicesMessageIDs + arraysize(kRetainedDevicesMessageIDs)); |
+ |
+ return l10n_util::GetPluralStringFUTF16(message_ids, |
+ GetRetainedDeviceCount()); |
+} |
+ |
bool ExtensionInstallPrompt::Prompt::ShouldShowPermissions() const { |
return GetPermissionCount() > 0 || type_ == POST_INSTALL_PERMISSIONS_PROMPT; |
} |
@@ -451,6 +484,8 @@ bool ExtensionInstallPrompt::Prompt::GetIsShowingDetails( |
return is_showing_details_for_permissions_[index]; |
case RETAINED_FILES_DETAILS: |
return is_showing_details_for_retained_files_; |
+ case RETAINED_DEVICES_DETAILS: |
+ return is_showing_details_for_retained_devices_; |
} |
return false; |
} |
@@ -465,8 +500,18 @@ base::string16 ExtensionInstallPrompt::Prompt::GetRetainedFile(size_t index) |
return retained_files_[index].AsUTF16Unsafe(); |
} |
-bool ExtensionInstallPrompt::Prompt::ShouldDisplayRevokeFilesButton() const { |
- return !retained_files_.empty(); |
+size_t ExtensionInstallPrompt::Prompt::GetRetainedDeviceCount() const { |
+ return retained_device_messages_.size(); |
+} |
+ |
+bool ExtensionInstallPrompt::Prompt::ShouldDisplayRevokeButton() const { |
+ return !retained_files_.empty() || !retained_device_messages_.empty(); |
+} |
+ |
+base::string16 ExtensionInstallPrompt::Prompt::GetRetainedDeviceMessageString( |
+ size_t index) const { |
+ CHECK_LT(index, retained_device_messages_.size()); |
+ return retained_device_messages_[index]; |
} |
ExtensionInstallPrompt::ShowParams::ShowParams(content::WebContents* contents) |
@@ -662,12 +707,14 @@ void ExtensionInstallPrompt::ConfirmPermissions( |
void ExtensionInstallPrompt::ReviewPermissions( |
Delegate* delegate, |
const Extension* extension, |
- const std::vector<base::FilePath>& retained_file_paths) { |
+ const std::vector<base::FilePath>& retained_file_paths, |
+ const std::vector<base::string16>& retained_device_messages) { |
DCHECK(ui_loop_ == base::MessageLoop::current()); |
extension_ = extension; |
permissions_ = extension->permissions_data()->active_permissions(); |
prompt_ = new Prompt(POST_INSTALL_PERMISSIONS_PROMPT); |
prompt_->set_retained_files(retained_file_paths); |
+ prompt_->set_retained_device_messages(retained_device_messages); |
delegate_ = delegate; |
LoadImageIfNeeded(); |