OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_install_prompt.h" | 5 #include "chrome/browser/extensions/extension_install_prompt.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 namespace { | 52 namespace { |
53 | 53 |
54 static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 54 static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
55 0, // The regular install prompt depends on what's being installed. | 55 0, // The regular install prompt depends on what's being installed. |
56 IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE, | 56 IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE, |
57 IDS_EXTENSION_INSTALL_PROMPT_TITLE, | 57 IDS_EXTENSION_INSTALL_PROMPT_TITLE, |
58 IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE, | 58 IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE, |
59 IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE, | 59 IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE, |
60 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE, | 60 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE, |
61 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE, | 61 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE, |
62 0, // The prompt should be extension description. | 62 IDS_EXTENSION_FIRST_RUN_PROMPT_TITLE, |
63 }; | 63 }; |
64 static const int kHeadingIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 64 static const int kHeadingIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
65 IDS_EXTENSION_INSTALL_PROMPT_HEADING, | 65 IDS_EXTENSION_INSTALL_PROMPT_HEADING, |
66 0, // Inline installs use the extension name. | 66 0, // Inline installs use the extension name. |
67 0, // Heading for bundle installs depends on the bundle contents. | 67 0, // Heading for bundle installs depends on the bundle contents. |
68 IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING, | 68 IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING, |
69 IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING, | 69 IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING, |
70 0, // External installs use different strings for extensions/apps. | 70 0, // External installs use different strings for extensions/apps. |
71 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING, | 71 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING, |
72 0, // First run dialog use the extension name. | 72 IDS_EXTENSION_FIRST_RUN_PROMPT_HEADING, |
73 }; | 73 }; |
74 static const int kButtons[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 74 static const int kButtons[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
75 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 75 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
76 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 76 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
77 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 77 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
78 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 78 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
79 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 79 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
80 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 80 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
81 ui::DIALOG_BUTTON_CANCEL, | 81 ui::DIALOG_BUTTON_CANCEL, |
82 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, | 82 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, |
83 }; | 83 }; |
84 static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 84 static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
85 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, | 85 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
86 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, | 86 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
87 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, | 87 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, |
88 IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON, | 88 IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON, |
89 IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON, | 89 IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON, |
90 0, // External installs use different strings for extensions/apps. | 90 0, // External installs use different strings for extensions/apps. |
91 IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON, | 91 IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON, |
92 IDS_EXTENSION_PROMPT_FIRST_RUN_ACCEPT_BUTTON | 92 IDS_EXTENSION_PROMPT_FIRST_RUN_ACCEPT_BUTTON |
93 }; | 93 }; |
94 static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 94 static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
95 0, // These all use the platform's default cancel label. | 95 0, // These all use the platform's default cancel label. |
96 0, | 96 0, |
97 0, | 97 0, |
98 0, | 98 0, |
99 IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON, | 99 IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON, |
100 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON, | 100 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON, |
101 IDS_CLOSE, | 101 IDS_CLOSE, |
102 IDS_EXTENSION_PROMPT_FIRST_RUN_DECLINE_BUTTON | 102 0, // Platform dependent cancel button. |
103 }; | 103 }; |
104 static const int kPermissionsHeaderIds[ | 104 static const int kPermissionsHeaderIds[ |
105 ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { | 105 ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { |
106 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, | 106 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, |
107 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, | 107 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, |
108 IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO, | 108 IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO, |
109 IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO, | 109 IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO, |
110 IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO, | 110 IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO, |
111 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, | 111 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, |
112 IDS_EXTENSION_PROMPT_CAN_ACCESS, | 112 IDS_EXTENSION_PROMPT_CAN_ACCESS, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 if (type_ == INSTALL_PROMPT) { | 270 if (type_ == INSTALL_PROMPT) { |
271 if (extension_->is_app()) | 271 if (extension_->is_app()) |
272 resource_id = IDS_EXTENSION_INSTALL_APP_PROMPT_TITLE; | 272 resource_id = IDS_EXTENSION_INSTALL_APP_PROMPT_TITLE; |
273 else if (extension_->is_theme()) | 273 else if (extension_->is_theme()) |
274 resource_id = IDS_EXTENSION_INSTALL_THEME_PROMPT_TITLE; | 274 resource_id = IDS_EXTENSION_INSTALL_THEME_PROMPT_TITLE; |
275 else | 275 else |
276 resource_id = IDS_EXTENSION_INSTALL_EXTENSION_PROMPT_TITLE; | 276 resource_id = IDS_EXTENSION_INSTALL_EXTENSION_PROMPT_TITLE; |
277 } else if (type_ == EXTERNAL_INSTALL_PROMPT) { | 277 } else if (type_ == EXTERNAL_INSTALL_PROMPT) { |
278 return l10n_util::GetStringFUTF16( | 278 return l10n_util::GetStringFUTF16( |
279 resource_id, UTF8ToUTF16(extension_->name())); | 279 resource_id, UTF8ToUTF16(extension_->name())); |
280 } else if (type_ == DEFAULT_INSTALL_FIRST_RUN_PROMPT) { | |
281 return UTF8ToUTF16(extension_->name()); | |
282 } | 280 } |
283 | 281 |
284 return l10n_util::GetStringUTF16(resource_id); | 282 return l10n_util::GetStringUTF16(resource_id); |
285 } | 283 } |
286 | 284 |
287 string16 ExtensionInstallPrompt::Prompt::GetHeading() const { | 285 string16 ExtensionInstallPrompt::Prompt::GetHeading() const { |
288 if (type_ == INLINE_INSTALL_PROMPT) { | 286 if (type_ == INLINE_INSTALL_PROMPT) { |
289 return UTF8ToUTF16(extension_->name()); | 287 return UTF8ToUTF16(extension_->name()); |
290 } else if (type_ == BUNDLE_INSTALL_PROMPT) { | 288 } else if (type_ == BUNDLE_INSTALL_PROMPT) { |
291 return bundle_->GetHeadingTextFor(BundleInstaller::Item::STATE_PENDING); | 289 return bundle_->GetHeadingTextFor(BundleInstaller::Item::STATE_PENDING); |
292 } else if (type_ == EXTERNAL_INSTALL_PROMPT) { | 290 } else if (type_ == EXTERNAL_INSTALL_PROMPT) { |
293 int resource_id = -1; | 291 int resource_id = -1; |
294 if (extension_->is_app()) | 292 if (extension_->is_app()) |
295 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_APP; | 293 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_APP; |
296 else if (extension_->is_theme()) | 294 else if (extension_->is_theme()) |
297 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_THEME; | 295 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_THEME; |
298 else | 296 else |
299 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_EXTENSION; | 297 resource_id = IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_HEADING_EXTENSION; |
300 return l10n_util::GetStringUTF16(resource_id); | 298 return l10n_util::GetStringUTF16(resource_id); |
301 } else if (type_ == DEFAULT_INSTALL_FIRST_RUN_PROMPT) { | |
302 return UTF8ToUTF16(extension_->description()); | |
303 } else { | 299 } else { |
304 return l10n_util::GetStringFUTF16( | 300 return l10n_util::GetStringFUTF16( |
305 kHeadingIds[type_], UTF8ToUTF16(extension_->name())); | 301 kHeadingIds[type_], UTF8ToUTF16(extension_->name())); |
306 } | 302 } |
307 } | 303 } |
308 | 304 |
309 int ExtensionInstallPrompt::Prompt::GetDialogButtons() const { | 305 int ExtensionInstallPrompt::Prompt::GetDialogButtons() const { |
310 if (type_ == POST_INSTALL_PERMISSIONS_PROMPT && | 306 if (type_ == POST_INSTALL_PERMISSIONS_PROMPT && |
311 ShouldDisplayRevokeFilesButton()) { | 307 ShouldDisplayRevokeFilesButton()) { |
312 return kButtons[type_] | ui::DIALOG_BUTTON_OK; | 308 return kButtons[type_] | ui::DIALOG_BUTTON_OK; |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
832 } | 828 } |
833 | 829 |
834 if (AutoConfirmPrompt(delegate_)) | 830 if (AutoConfirmPrompt(delegate_)) |
835 return; | 831 return; |
836 | 832 |
837 if (show_dialog_callback_.is_null()) | 833 if (show_dialog_callback_.is_null()) |
838 GetDefaultShowDialogCallback().Run(show_params_, delegate_, prompt_); | 834 GetDefaultShowDialogCallback().Run(show_params_, delegate_, prompt_); |
839 else | 835 else |
840 show_dialog_callback_.Run(show_params_, delegate_, prompt_); | 836 show_dialog_callback_.Run(show_params_, delegate_, prompt_); |
841 } | 837 } |
OLD | NEW |