Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/views/extensions/bookmark_app_bubble_view.h" | 5 #include "chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h" |
| 6 | 6 |
| 7 #include "base/strings/string16.h" | 7 #include "base/strings/string16.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/chrome_notification_types.h" | |
| 9 #include "chrome/browser/extensions/app_icon_loader_impl.h" | 10 #include "chrome/browser/extensions/app_icon_loader_impl.h" |
| 10 #include "chrome/browser/extensions/bookmark_app_helper.h" | 11 #include "chrome/browser/extensions/bookmark_app_helper.h" |
| 11 #include "chrome/browser/extensions/extension_service.h" | 12 #include "chrome/browser/extensions/extension_service.h" |
| 12 #include "chrome/browser/extensions/launch_util.h" | 13 #include "chrome/browser/extensions/launch_util.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 15 #include "chrome/browser/ui/app_list/app_list_service.h" | |
| 16 #include "chrome/browser/ui/app_list/app_list_util.h" | |
| 17 #include "chrome/browser/ui/browser_navigator.h" | |
| 18 #include "chrome/browser/ui/host_desktop.h" | |
| 14 #include "chrome/common/extensions/extension_constants.h" | 19 #include "chrome/common/extensions/extension_constants.h" |
| 20 #include "chrome/common/url_constants.h" | |
| 15 #include "chrome/grit/generated_resources.h" | 21 #include "chrome/grit/generated_resources.h" |
| 22 #include "content/public/browser/notification_service.h" | |
| 23 #include "content/public/browser/web_contents.h" | |
| 16 #include "extensions/browser/extension_prefs.h" | 24 #include "extensions/browser/extension_prefs.h" |
| 17 #include "extensions/browser/extension_registry.h" | 25 #include "extensions/browser/extension_registry.h" |
| 18 #include "extensions/browser/extension_system.h" | 26 #include "extensions/browser/extension_system.h" |
| 19 #include "extensions/browser/pref_names.h" | 27 #include "extensions/browser/pref_names.h" |
| 20 #include "extensions/browser/uninstall_reason.h" | 28 #include "extensions/browser/uninstall_reason.h" |
| 21 #include "extensions/common/constants.h" | 29 #include "extensions/common/constants.h" |
| 22 #include "ui/base/l10n/l10n_util.h" | 30 #include "ui/base/l10n/l10n_util.h" |
| 23 #include "ui/base/resource/resource_bundle.h" | 31 #include "ui/base/resource/resource_bundle.h" |
| 24 #include "ui/events/keycodes/keyboard_codes.h" | 32 #include "ui/events/keycodes/keyboard_codes.h" |
| 25 #include "ui/views/controls/button/checkbox.h" | 33 #include "ui/views/controls/button/checkbox.h" |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 : extensions::LAUNCH_TYPE_WINDOW; | 266 : extensions::LAUNCH_TYPE_WINDOW; |
| 259 profile_->GetPrefs()->SetInteger( | 267 profile_->GetPrefs()->SetInteger( |
| 260 extensions::pref_names::kBookmarkAppCreationLaunchType, launch_type); | 268 extensions::pref_names::kBookmarkAppCreationLaunchType, launch_type); |
| 261 extensions::SetLaunchType(GetExtensionService(profile_), | 269 extensions::SetLaunchType(GetExtensionService(profile_), |
| 262 extension_id_, | 270 extension_id_, |
| 263 launch_type); | 271 launch_type); |
| 264 | 272 |
| 265 const extensions::Extension* extension = | 273 const extensions::Extension* extension = |
| 266 extensions::ExtensionRegistry::Get(profile_)->GetExtensionById( | 274 extensions::ExtensionRegistry::Get(profile_)->GetExtensionById( |
| 267 extension_id_, extensions::ExtensionRegistry::EVERYTHING); | 275 extension_id_, extensions::ExtensionRegistry::EVERYTHING); |
| 268 if (extension && base::UTF8ToUTF16(extension->name()) == title_tf_->text()) | 276 |
| 277 if (!extension) | |
| 269 return; | 278 return; |
| 270 | 279 |
| 271 // Reinstall the app with an updated name. | 280 if (base::UTF8ToUTF16(extension->name()) != title_tf_->text()) { |
| 272 WebApplicationInfo install_info(web_app_info_); | 281 // Reinstall the app with an updated name. |
| 273 install_info.title = title_tf_->text(); | 282 WebApplicationInfo install_info(web_app_info_); |
| 283 install_info.title = title_tf_->text(); | |
| 274 | 284 |
| 275 extensions::CreateOrUpdateBookmarkApp(GetExtensionService(profile_), | 285 extensions::CreateOrUpdateBookmarkApp(GetExtensionService(profile_), |
| 276 &install_info); | 286 &install_info); |
|
calamity
2014/12/15 03:38:09
Hmm. Doesn't this happen asynchronously? I guess i
benwells
2014/12/15 05:02:47
Good point. It was unsafe before, I've made it saf
| |
| 287 } | |
| 288 | |
| 289 // Show the newly installed app in the app launcher or chrome://apps. Don't | |
| 290 // do this on ash, as the icon will have been added to the shelf. | |
| 291 chrome::HostDesktopType desktop = | |
| 292 chrome::GetHostDesktopTypeForNativeWindow(GetWidget()->GetNativeWindow()); | |
| 293 if (desktop == chrome::HOST_DESKTOP_TYPE_ASH) | |
| 294 return; | |
| 295 | |
| 296 Profile* current_profile = profile_->GetOriginalProfile(); | |
|
calamity
2014/12/15 03:38:09
Is this for dealing with incognito profiles? Shoul
benwells
2014/12/15 05:02:47
You can add bookmark apps in incognito, but they a
| |
| 297 if (IsAppLauncherEnabled()) { | |
| 298 AppListService::Get(desktop) | |
| 299 ->ShowForAppInstall(current_profile, extension->id(), false); | |
| 300 return; | |
| 301 } | |
| 302 | |
| 303 std::string app_id = extension->id(); | |
| 304 chrome::NavigateParams params(current_profile, | |
| 305 GURL(chrome::kChromeUIAppsURL), | |
| 306 ui::PAGE_TRANSITION_LINK); | |
| 307 params.disposition = NEW_FOREGROUND_TAB; | |
| 308 chrome::Navigate(¶ms); | |
| 309 | |
| 310 content::NotificationService::current()->Notify( | |
| 311 chrome::NOTIFICATION_APP_INSTALLED_TO_NTP, | |
| 312 content::Source<content::WebContents>(params.target_contents), | |
| 313 content::Details<const std::string>(&app_id)); | |
| 277 } | 314 } |
| OLD | NEW |