Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(283)

Side by Side Diff: chrome/browser/extensions/extension_install_prompt.cc

Issue 557953005: Allow the user to "repair" a corrupted extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "ui/base/resource/resource_bundle.h" 44 #include "ui/base/resource/resource_bundle.h"
45 #include "ui/gfx/image/image.h" 45 #include "ui/gfx/image/image.h"
46 46
47 using extensions::BundleInstaller; 47 using extensions::BundleInstaller;
48 using extensions::Extension; 48 using extensions::Extension;
49 using extensions::Manifest; 49 using extensions::Manifest;
50 using extensions::PermissionSet; 50 using extensions::PermissionSet;
51 51
52 namespace { 52 namespace {
53 53
54 bool AllowWebstoreData(ExtensionInstallPrompt::PromptType type) {
55 return type == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT ||
56 type == ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT ||
57 type == ExtensionInstallPrompt::REPAIR_PROMPT;
58 }
59
54 static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 60 static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
55 0, // The regular install prompt depends on what's being installed. 61 0, // The regular install prompt depends on what's being installed.
56 IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE, 62 IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE,
57 IDS_EXTENSION_INSTALL_PROMPT_TITLE, 63 IDS_EXTENSION_INSTALL_PROMPT_TITLE,
58 IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE, 64 IDS_EXTENSION_RE_ENABLE_PROMPT_TITLE,
59 IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE, 65 IDS_EXTENSION_PERMISSIONS_PROMPT_TITLE,
60 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE, 66 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_TITLE,
61 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE, 67 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_TITLE,
62 IDS_EXTENSION_LAUNCH_APP_PROMPT_TITLE, 68 IDS_EXTENSION_LAUNCH_APP_PROMPT_TITLE,
63 0, // The remote install prompt depends on what's being installed. 69 0, // The remote install prompt depends on what's being installed.
70 0, // The repair install prompt depends on what's being installed.
64 }; 71 };
65 static const int kHeadingIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 72 static const int kHeadingIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
66 IDS_EXTENSION_INSTALL_PROMPT_HEADING, 73 IDS_EXTENSION_INSTALL_PROMPT_HEADING,
67 0, // Inline installs use the extension name. 74 0, // Inline installs use the extension name.
68 0, // Heading for bundle installs depends on the bundle contents. 75 0, // Heading for bundle installs depends on the bundle contents.
69 IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING, 76 IDS_EXTENSION_RE_ENABLE_PROMPT_HEADING,
70 IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING, 77 IDS_EXTENSION_PERMISSIONS_PROMPT_HEADING,
71 0, // External installs use different strings for extensions/apps. 78 0, // External installs use different strings for extensions/apps.
72 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING, 79 IDS_EXTENSION_POST_INSTALL_PERMISSIONS_PROMPT_HEADING,
73 IDS_EXTENSION_LAUNCH_APP_PROMPT_HEADING, 80 IDS_EXTENSION_LAUNCH_APP_PROMPT_HEADING,
74 IDS_EXTENSION_REMOTE_INSTALL_PROMPT_HEADING, 81 IDS_EXTENSION_REMOTE_INSTALL_PROMPT_HEADING,
82 IDS_EXTENSION_REPAIR_PROMPT_HEADING
75 }; 83 };
76 static const int kButtons[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 84 static const int kButtons[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
77 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 85 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
78 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 86 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
79 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 87 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
80 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 88 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
81 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 89 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
82 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 90 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
83 ui::DIALOG_BUTTON_CANCEL, 91 ui::DIALOG_BUTTON_CANCEL,
84 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 92 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
85 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL, 93 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
94 ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL,
86 }; 95 };
87 static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 96 static const int kAcceptButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
88 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, 97 IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
89 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, 98 IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
90 IDS_EXTENSION_PROMPT_INSTALL_BUTTON, 99 IDS_EXTENSION_PROMPT_INSTALL_BUTTON,
91 IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON, 100 IDS_EXTENSION_PROMPT_RE_ENABLE_BUTTON,
92 IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON, 101 IDS_EXTENSION_PROMPT_PERMISSIONS_BUTTON,
93 0, // External installs use different strings for extensions/apps. 102 0, // External installs use different strings for extensions/apps.
94 IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON, 103 IDS_EXTENSION_PROMPT_PERMISSIONS_CLEAR_RETAINED_FILES_BUTTON,
95 IDS_EXTENSION_PROMPT_LAUNCH_BUTTON, 104 IDS_EXTENSION_PROMPT_LAUNCH_BUTTON,
96 IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON, 105 IDS_EXTENSION_PROMPT_REMOTE_INSTALL_BUTTON,
106 IDS_EXTENSION_PROMPT_REPAIR_BUTTON,
97 }; 107 };
98 static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 108 static const int kAbortButtonIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
99 0, // These all use the platform's default cancel label. 109 0, // These all use the platform's default cancel label.
100 0, 110 0,
101 0, 111 0,
102 0, 112 0,
103 IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON, 113 IDS_EXTENSION_PROMPT_PERMISSIONS_ABORT_BUTTON,
104 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON, 114 IDS_EXTENSION_EXTERNAL_INSTALL_PROMPT_ABORT_BUTTON,
105 IDS_CLOSE, 115 IDS_CLOSE,
106 0, // Platform dependent cancel button. 116 0, // Platform dependent cancel button.
107 0, 117 0,
118 0,
108 }; 119 };
109 static const int 120 static const int
110 kPermissionsHeaderIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 121 kPermissionsHeaderIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = {
111 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, 122 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
112 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, 123 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
113 IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO, 124 IDS_EXTENSION_PROMPT_THESE_WILL_HAVE_ACCESS_TO,
114 IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO, 125 IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO,
115 IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO, 126 IDS_EXTENSION_PROMPT_WANTS_ACCESS_TO,
116 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, 127 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
117 IDS_EXTENSION_PROMPT_CAN_ACCESS, 128 IDS_EXTENSION_PROMPT_CAN_ACCESS,
118 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, 129 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
119 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO, 130 IDS_EXTENSION_PROMPT_WILL_HAVE_ACCESS_TO,
131 IDS_EXTENSION_PROMPT_CAN_ACCESS,
120 }; 132 };
121 133
122 // Returns bitmap for the default icon with size equal to the default icon's 134 // Returns bitmap for the default icon with size equal to the default icon's
123 // pixel size under maximal supported scale factor. 135 // pixel size under maximal supported scale factor.
124 SkBitmap GetDefaultIconBitmapForMaxScaleFactor(bool is_app) { 136 SkBitmap GetDefaultIconBitmapForMaxScaleFactor(bool is_app) {
125 const gfx::ImageSkia& image = is_app ? 137 const gfx::ImageSkia& image = is_app ?
126 extensions::util::GetDefaultAppIcon() : 138 extensions::util::GetDefaultAppIcon() :
127 extensions::util::GetDefaultExtensionIcon(); 139 extensions::util::GetDefaultExtensionIcon();
128 return image.GetRepresentation( 140 return image.GetRepresentation(
129 gfx::ImageSkia::GetMaxSupportedScale()).sk_bitmap(); 141 gfx::ImageSkia::GetMaxSupportedScale()).sk_bitmap();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 case ExtensionInstallPrompt::PERMISSIONS_PROMPT: 202 case ExtensionInstallPrompt::PERMISSIONS_PROMPT:
191 return "PERMISSIONS_PROMPT"; 203 return "PERMISSIONS_PROMPT";
192 case ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT: 204 case ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT:
193 return "EXTERNAL_INSTALL_PROMPT"; 205 return "EXTERNAL_INSTALL_PROMPT";
194 case ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT: 206 case ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT:
195 return "POST_INSTALL_PERMISSIONS_PROMPT"; 207 return "POST_INSTALL_PERMISSIONS_PROMPT";
196 case ExtensionInstallPrompt::LAUNCH_PROMPT: 208 case ExtensionInstallPrompt::LAUNCH_PROMPT:
197 return "LAUNCH_PROMPT"; 209 return "LAUNCH_PROMPT";
198 case ExtensionInstallPrompt::REMOTE_INSTALL_PROMPT: 210 case ExtensionInstallPrompt::REMOTE_INSTALL_PROMPT:
199 return "REMOTE_INSTALL_PROMPT"; 211 return "REMOTE_INSTALL_PROMPT";
212 case ExtensionInstallPrompt::REPAIR_PROMPT:
213 return "REPAIR_PROMPT";
200 case ExtensionInstallPrompt::UNSET_PROMPT_TYPE: 214 case ExtensionInstallPrompt::UNSET_PROMPT_TYPE:
201 case ExtensionInstallPrompt::NUM_PROMPT_TYPES: 215 case ExtensionInstallPrompt::NUM_PROMPT_TYPES:
202 break; 216 break;
203 } 217 }
204 return "OTHER"; 218 return "OTHER";
205 } 219 }
206 220
207 ExtensionInstallPrompt::Prompt::Prompt(PromptType type) 221 ExtensionInstallPrompt::Prompt::Prompt(PromptType type)
208 : type_(type), 222 : type_(type),
209 is_showing_details_for_retained_files_(false), 223 is_showing_details_for_retained_files_(false),
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 is_showing_details_for_retained_files_ = is_showing_details; 257 is_showing_details_for_retained_files_ = is_showing_details;
244 break; 258 break;
245 } 259 }
246 } 260 }
247 261
248 void ExtensionInstallPrompt::Prompt::SetWebstoreData( 262 void ExtensionInstallPrompt::Prompt::SetWebstoreData(
249 const std::string& localized_user_count, 263 const std::string& localized_user_count,
250 bool show_user_count, 264 bool show_user_count,
251 double average_rating, 265 double average_rating,
252 int rating_count) { 266 int rating_count) {
253 CHECK(type_ == INLINE_INSTALL_PROMPT || type_ == EXTERNAL_INSTALL_PROMPT); 267 CHECK(AllowWebstoreData(type_));
254 localized_user_count_ = localized_user_count; 268 localized_user_count_ = localized_user_count;
255 show_user_count_ = show_user_count; 269 show_user_count_ = show_user_count;
256 average_rating_ = average_rating; 270 average_rating_ = average_rating;
257 rating_count_ = rating_count; 271 rating_count_ = rating_count;
258 has_webstore_data_ = true; 272 has_webstore_data_ = true;
259 } 273 }
260 274
261 base::string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const { 275 base::string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const {
262 int resource_id = kTitleIds[type_]; 276 int resource_id = kTitleIds[type_];
263 277
264 if (type_ == INSTALL_PROMPT) { 278 if (type_ == INSTALL_PROMPT) {
265 if (extension_->is_app()) 279 if (extension_->is_app())
266 resource_id = IDS_EXTENSION_INSTALL_APP_PROMPT_TITLE; 280 resource_id = IDS_EXTENSION_INSTALL_APP_PROMPT_TITLE;
267 else if (extension_->is_theme()) 281 else if (extension_->is_theme())
268 resource_id = IDS_EXTENSION_INSTALL_THEME_PROMPT_TITLE; 282 resource_id = IDS_EXTENSION_INSTALL_THEME_PROMPT_TITLE;
269 else 283 else
270 resource_id = IDS_EXTENSION_INSTALL_EXTENSION_PROMPT_TITLE; 284 resource_id = IDS_EXTENSION_INSTALL_EXTENSION_PROMPT_TITLE;
271 } else if (type_ == EXTERNAL_INSTALL_PROMPT) { 285 } else if (type_ == EXTERNAL_INSTALL_PROMPT) {
272 return l10n_util::GetStringFUTF16( 286 return l10n_util::GetStringFUTF16(
273 resource_id, base::UTF8ToUTF16(extension_->name())); 287 resource_id, base::UTF8ToUTF16(extension_->name()));
274 } else if (type_ == REMOTE_INSTALL_PROMPT) { 288 } else if (type_ == REMOTE_INSTALL_PROMPT) {
275 if (extension_->is_app()) 289 if (extension_->is_app())
276 resource_id = IDS_EXTENSION_REMOTE_INSTALL_APP_PROMPT_TITLE; 290 resource_id = IDS_EXTENSION_REMOTE_INSTALL_APP_PROMPT_TITLE;
277 else 291 else
278 resource_id = IDS_EXTENSION_REMOTE_INSTALL_EXTENSION_PROMPT_TITLE; 292 resource_id = IDS_EXTENSION_REMOTE_INSTALL_EXTENSION_PROMPT_TITLE;
293 } else if (type_ == REPAIR_PROMPT) {
294 if (extension_->is_app())
295 resource_id = IDS_EXTENSION_REPAIR_APP_PROMPT_TITLE;
296 else
297 resource_id = IDS_EXTENSION_REPAIR_EXTENSION_PROMPT_TITLE;
279 } 298 }
280 299
281 return l10n_util::GetStringUTF16(resource_id); 300 return l10n_util::GetStringUTF16(resource_id);
282 } 301 }
283 302
284 base::string16 ExtensionInstallPrompt::Prompt::GetHeading() const { 303 base::string16 ExtensionInstallPrompt::Prompt::GetHeading() const {
285 if (type_ == INLINE_INSTALL_PROMPT) { 304 if (type_ == INLINE_INSTALL_PROMPT) {
286 return base::UTF8ToUTF16(extension_->name()); 305 return base::UTF8ToUTF16(extension_->name());
287 } else if (type_ == BUNDLE_INSTALL_PROMPT) { 306 } else if (type_ == BUNDLE_INSTALL_PROMPT) {
288 return bundle_->GetHeadingTextFor(BundleInstaller::Item::STATE_PENDING); 307 return bundle_->GetHeadingTextFor(BundleInstaller::Item::STATE_PENDING);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 return l10n_util::GetPluralStringFUTF16(message_ids, GetRetainedFileCount()); 393 return l10n_util::GetPluralStringFUTF16(message_ids, GetRetainedFileCount());
375 } 394 }
376 395
377 bool ExtensionInstallPrompt::Prompt::ShouldShowPermissions() const { 396 bool ExtensionInstallPrompt::Prompt::ShouldShowPermissions() const {
378 return GetPermissionCount() > 0 || type_ == POST_INSTALL_PERMISSIONS_PROMPT; 397 return GetPermissionCount() > 0 || type_ == POST_INSTALL_PERMISSIONS_PROMPT;
379 } 398 }
380 399
381 void ExtensionInstallPrompt::Prompt::AppendRatingStars( 400 void ExtensionInstallPrompt::Prompt::AppendRatingStars(
382 StarAppender appender, void* data) const { 401 StarAppender appender, void* data) const {
383 CHECK(appender); 402 CHECK(appender);
384 CHECK(type_ == INLINE_INSTALL_PROMPT || type_ == EXTERNAL_INSTALL_PROMPT); 403 CHECK(AllowWebstoreData(type_));
385 int rating_integer = floor(average_rating_); 404 int rating_integer = floor(average_rating_);
386 double rating_fractional = average_rating_ - rating_integer; 405 double rating_fractional = average_rating_ - rating_integer;
387 406
388 if (rating_fractional > 0.66) { 407 if (rating_fractional > 0.66) {
389 rating_integer++; 408 rating_integer++;
390 } 409 }
391 410
392 if (rating_fractional < 0.33 || rating_fractional > 0.66) { 411 if (rating_fractional < 0.33 || rating_fractional > 0.66) {
393 rating_fractional = 0; 412 rating_fractional = 0;
394 } 413 }
395 414
396 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 415 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
397 int i; 416 int i;
398 for (i = 0; i < rating_integer; i++) { 417 for (i = 0; i < rating_integer; i++) {
399 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_ON), data); 418 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_ON), data);
400 } 419 }
401 if (rating_fractional) { 420 if (rating_fractional) {
402 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_HALF_LEFT), data); 421 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_HALF_LEFT), data);
403 i++; 422 i++;
404 } 423 }
405 for (; i < kMaxExtensionRating; i++) { 424 for (; i < kMaxExtensionRating; i++) {
406 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_OFF), data); 425 appender(rb.GetImageSkiaNamed(IDR_EXTENSIONS_RATING_STAR_OFF), data);
407 } 426 }
408 } 427 }
409 428
410 base::string16 ExtensionInstallPrompt::Prompt::GetRatingCount() const { 429 base::string16 ExtensionInstallPrompt::Prompt::GetRatingCount() const {
411 CHECK(type_ == INLINE_INSTALL_PROMPT || type_ == EXTERNAL_INSTALL_PROMPT); 430 CHECK(AllowWebstoreData(type_));
412 return l10n_util::GetStringFUTF16(IDS_EXTENSION_RATING_COUNT, 431 return l10n_util::GetStringFUTF16(IDS_EXTENSION_RATING_COUNT,
413 base::IntToString16(rating_count_)); 432 base::IntToString16(rating_count_));
414 } 433 }
415 434
416 base::string16 ExtensionInstallPrompt::Prompt::GetUserCount() const { 435 base::string16 ExtensionInstallPrompt::Prompt::GetUserCount() const {
417 CHECK(type_ == INLINE_INSTALL_PROMPT || type_ == EXTERNAL_INSTALL_PROMPT); 436 CHECK(AllowWebstoreData(type_));
418 437
419 if (show_user_count_) { 438 if (show_user_count_) {
420 return l10n_util::GetStringFUTF16(IDS_EXTENSION_USER_COUNT, 439 return l10n_util::GetStringFUTF16(IDS_EXTENSION_USER_COUNT,
421 base::UTF8ToUTF16(localized_user_count_)); 440 base::UTF8ToUTF16(localized_user_count_));
422 } 441 }
423 return base::string16(); 442 return base::string16();
424 } 443 }
425 444
426 size_t ExtensionInstallPrompt::Prompt::GetPermissionCount() const { 445 size_t ExtensionInstallPrompt::Prompt::GetPermissionCount() const {
427 return permissions_.size(); 446 return permissions_.size();
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 } 773 }
755 774
756 switch (prompt_->type()) { 775 switch (prompt_->type()) {
757 case PERMISSIONS_PROMPT: 776 case PERMISSIONS_PROMPT:
758 case RE_ENABLE_PROMPT: 777 case RE_ENABLE_PROMPT:
759 case INLINE_INSTALL_PROMPT: 778 case INLINE_INSTALL_PROMPT:
760 case EXTERNAL_INSTALL_PROMPT: 779 case EXTERNAL_INSTALL_PROMPT:
761 case INSTALL_PROMPT: 780 case INSTALL_PROMPT:
762 case LAUNCH_PROMPT: 781 case LAUNCH_PROMPT:
763 case POST_INSTALL_PERMISSIONS_PROMPT: 782 case POST_INSTALL_PERMISSIONS_PROMPT:
764 case REMOTE_INSTALL_PROMPT: { 783 case REMOTE_INSTALL_PROMPT:
784 case REPAIR_PROMPT: {
765 prompt_->set_extension(extension_); 785 prompt_->set_extension(extension_);
766 prompt_->set_icon(gfx::Image::CreateFrom1xBitmap(icon_)); 786 prompt_->set_icon(gfx::Image::CreateFrom1xBitmap(icon_));
767 break; 787 break;
768 } 788 }
769 case BUNDLE_INSTALL_PROMPT: { 789 case BUNDLE_INSTALL_PROMPT: {
770 prompt_->set_bundle(bundle_); 790 prompt_->set_bundle(bundle_);
771 break; 791 break;
772 } 792 }
773 default: 793 default:
774 NOTREACHED() << "Unknown message"; 794 NOTREACHED() << "Unknown message";
775 return; 795 return;
776 } 796 }
777 797
778 if (AutoConfirmPrompt(delegate_)) 798 if (AutoConfirmPrompt(delegate_))
779 return; 799 return;
780 800
781 if (show_dialog_callback_.is_null()) 801 if (show_dialog_callback_.is_null())
782 GetDefaultShowDialogCallback().Run(show_params_, delegate_, prompt_); 802 GetDefaultShowDialogCallback().Run(show_params_, delegate_, prompt_);
783 else 803 else
784 show_dialog_callback_.Run(show_params_, delegate_, prompt_); 804 show_dialog_callback_.Run(show_params_, delegate_, prompt_);
785 } 805 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698