OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_ui.h" | 5 #include "chrome/browser/extensions/extension_install_ui.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 | 115 |
116 void ExtensionInstallUI::ConfirmUninstall(Delegate* delegate, | 116 void ExtensionInstallUI::ConfirmUninstall(Delegate* delegate, |
117 const Extension* extension) { | 117 const Extension* extension) { |
118 DCHECK(ui_loop_ == MessageLoop::current()); | 118 DCHECK(ui_loop_ == MessageLoop::current()); |
119 extension_ = extension; | 119 extension_ = extension; |
120 delegate_ = delegate; | 120 delegate_ = delegate; |
121 | 121 |
122 ShowConfirmation(UNINSTALL_PROMPT); | 122 ShowConfirmation(UNINSTALL_PROMPT); |
123 } | 123 } |
124 | 124 |
125 void ExtensionInstallUI::OnInstallSuccess(const Extension* extension) { | 125 void ExtensionInstallUI::OnInstallSuccess(const Extension* extension, |
126 SkBitmap* icon) { | |
127 extension_ = extension; | |
128 SetIcon(icon); | |
129 | |
126 if (extension->is_theme()) { | 130 if (extension->is_theme()) { |
127 ShowThemeInfoBar(previous_theme_id_, previous_use_system_theme_, | 131 ShowThemeInfoBar(previous_theme_id_, previous_use_system_theme_, |
128 extension, profile_); | 132 extension, profile_); |
129 return; | 133 return; |
130 } | 134 } |
131 | 135 |
132 // Note that browser actions don't appear in incognito mode initially, | 136 // Note that browser actions don't appear in incognito mode initially, |
133 // so be sure to use a normal browser window. | 137 // so be sure to use a normal browser window. |
134 Profile* profile = profile_; | 138 Profile* profile = profile_; |
135 if (extension->browser_action()) | 139 if (extension->browser_action()) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
174 void ExtensionInstallUI::OnInstallFailure(const std::string& error) { | 178 void ExtensionInstallUI::OnInstallFailure(const std::string& error) { |
175 DCHECK(ui_loop_ == MessageLoop::current()); | 179 DCHECK(ui_loop_ == MessageLoop::current()); |
176 | 180 |
177 Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); | 181 Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); |
178 platform_util::SimpleErrorBox( | 182 platform_util::SimpleErrorBox( |
179 browser ? browser->window()->GetNativeHandle() : NULL, | 183 browser ? browser->window()->GetNativeHandle() : NULL, |
180 l10n_util::GetStringUTF16(IDS_EXTENSION_INSTALL_FAILURE_TITLE), | 184 l10n_util::GetStringUTF16(IDS_EXTENSION_INSTALL_FAILURE_TITLE), |
181 UTF8ToUTF16(error)); | 185 UTF8ToUTF16(error)); |
182 } | 186 } |
183 | 187 |
184 void ExtensionInstallUI::OnImageLoaded( | 188 void ExtensionInstallUI::SetIcon(SkBitmap* image) { |
185 SkBitmap* image, ExtensionResource resource, int index) { | |
186 if (image) | 189 if (image) |
187 icon_ = *image; | 190 icon_ = *image; |
188 else | 191 else |
189 icon_ = SkBitmap(); | 192 icon_ = SkBitmap(); |
190 if (icon_.empty()) { | 193 if (icon_.empty()) { |
191 if (extension_->is_app()) { | 194 if (extension_->is_app()) { |
192 icon_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed( | 195 icon_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed( |
193 IDR_APP_DEFAULT_ICON); | 196 IDR_APP_DEFAULT_ICON); |
194 } else { | 197 } else { |
195 icon_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed( | 198 icon_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed( |
196 IDR_EXTENSION_DEFAULT_ICON); | 199 IDR_EXTENSION_DEFAULT_ICON); |
197 } | 200 } |
198 } | 201 } |
202 } | |
203 | |
204 void ExtensionInstallUI::OnImageLoaded( | |
205 SkBitmap* image, ExtensionResource resource, int index) { | |
206 SetIcon(image); | |
199 | 207 |
200 switch (prompt_type_) { | 208 switch (prompt_type_) { |
201 case INSTALL_PROMPT: { | 209 case INSTALL_PROMPT: { |
202 // TODO(jcivelli): http://crbug.com/44771 We should not show an install | 210 // TODO(jcivelli): http://crbug.com/44771 We should not show an install |
203 // dialog when installing an app from the gallery. | 211 // dialog when installing an app from the gallery. |
204 NotificationService* service = NotificationService::current(); | 212 NotificationService* service = NotificationService::current(); |
205 service->Notify(NotificationType::EXTENSION_WILL_SHOW_CONFIRM_DIALOG, | 213 service->Notify(NotificationType::EXTENSION_WILL_SHOW_CONFIRM_DIALOG, |
206 Source<ExtensionInstallUI>(this), | 214 Source<ExtensionInstallUI>(this), |
207 NotificationService::NoDetails()); | 215 NotificationService::NoDetails()); |
208 | 216 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
262 tab_contents, new_theme, | 270 tab_contents, new_theme, |
263 previous_theme_id, previous_use_system_theme); | 271 previous_theme_id, previous_use_system_theme); |
264 | 272 |
265 if (old_delegate) | 273 if (old_delegate) |
266 tab_contents->ReplaceInfoBar(old_delegate, new_delegate); | 274 tab_contents->ReplaceInfoBar(old_delegate, new_delegate); |
267 else | 275 else |
268 tab_contents->AddInfoBar(new_delegate); | 276 tab_contents->AddInfoBar(new_delegate); |
269 } | 277 } |
270 | 278 |
271 void ExtensionInstallUI::ShowConfirmation(PromptType prompt_type) { | 279 void ExtensionInstallUI::ShowConfirmation(PromptType prompt_type) { |
272 // Load the image asynchronously. For the response, check OnImageLoaded. | 280 // Load the image asynchronously. For the response, check OnImageLoaded. |
asargent_no_longer_on_chrome
2010/12/13 18:05:11
Would it make sense to check here if the icon was
| |
273 prompt_type_ = prompt_type; | 281 prompt_type_ = prompt_type; |
274 ExtensionResource image = | 282 ExtensionResource image = |
275 extension_->GetIconResource(Extension::EXTENSION_ICON_LARGE, | 283 extension_->GetIconResource(Extension::EXTENSION_ICON_LARGE, |
276 ExtensionIconSet::MATCH_EXACTLY); | 284 ExtensionIconSet::MATCH_EXACTLY); |
277 tracker_.LoadImage(extension_, image, | 285 tracker_.LoadImage(extension_, image, |
278 gfx::Size(kIconSize, kIconSize), | 286 gfx::Size(kIconSize, kIconSize), |
279 ImageLoadingTracker::DONT_CACHE); | 287 ImageLoadingTracker::DONT_CACHE); |
280 } | 288 } |
281 | 289 |
282 #if defined(OS_MACOSX) | 290 #if defined(OS_MACOSX) |
(...skipping 24 matching lines...) Expand all Loading... | |
307 TabContents* tab_contents, const Extension* new_theme, | 315 TabContents* tab_contents, const Extension* new_theme, |
308 const std::string& previous_theme_id, bool previous_use_system_theme) { | 316 const std::string& previous_theme_id, bool previous_use_system_theme) { |
309 #if defined(TOOLKIT_GTK) | 317 #if defined(TOOLKIT_GTK) |
310 return new GtkThemeInstalledInfoBarDelegate(tab_contents, new_theme, | 318 return new GtkThemeInstalledInfoBarDelegate(tab_contents, new_theme, |
311 previous_theme_id, previous_use_system_theme); | 319 previous_theme_id, previous_use_system_theme); |
312 #else | 320 #else |
313 return new ThemeInstalledInfoBarDelegate(tab_contents, new_theme, | 321 return new ThemeInstalledInfoBarDelegate(tab_contents, new_theme, |
314 previous_theme_id); | 322 previous_theme_id); |
315 #endif | 323 #endif |
316 } | 324 } |
OLD | NEW |