| 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/ui/gtk/create_application_shortcuts_dialog_gtk.h" | 5 #include "chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.h" | 
| 6 | 6 | 
| 7 #include <string> | 7 #include <string> | 
| 8 | 8 | 
| 9 #include "base/bind.h" | 9 #include "base/bind.h" | 
| 10 #include "base/environment.h" | 10 #include "base/environment.h" | 
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" | 
| 12 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" | 
| 13 #include "chrome/browser/shell_integration.h" |  | 
| 14 #include "chrome/browser/shell_integration_linux.h" | 13 #include "chrome/browser/shell_integration_linux.h" | 
| 15 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" | 
| 16 #include "chrome/browser/ui/browser_commands.h" | 15 #include "chrome/browser/ui/browser_commands.h" | 
| 17 #include "chrome/browser/ui/browser_dialogs.h" | 16 #include "chrome/browser/ui/browser_dialogs.h" | 
| 18 #include "chrome/browser/ui/browser_finder.h" | 17 #include "chrome/browser/ui/browser_finder.h" | 
| 19 #include "chrome/browser/ui/gtk/gtk_util.h" | 18 #include "chrome/browser/ui/gtk/gtk_util.h" | 
| 20 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" | 19 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" | 
| 21 #include "chrome/browser/web_applications/web_app.h" |  | 
| 22 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" | 
| 23 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" | 
| 24 #include "content/public/browser/web_contents_delegate.h" | 22 #include "content/public/browser/web_contents_delegate.h" | 
| 25 #include "extensions/common/extension.h" | 23 #include "extensions/common/extension.h" | 
| 26 #include "extensions/common/manifest_handlers/icons_handler.h" | 24 #include "extensions/common/manifest_handlers/icons_handler.h" | 
| 27 #include "grit/chromium_strings.h" | 25 #include "grit/chromium_strings.h" | 
| 28 #include "grit/generated_resources.h" | 26 #include "grit/generated_resources.h" | 
| 29 #include "grit/locale_settings.h" | 27 #include "grit/locale_settings.h" | 
| 30 #include "grit/theme_resources.h" | 28 #include "grit/theme_resources.h" | 
| 31 #include "ui/base/gtk/gtk_hig_constants.h" | 29 #include "ui/base/gtk/gtk_hig_constants.h" | 
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 201     gtk_widget_destroy(error_dialog_); | 199     gtk_widget_destroy(error_dialog_); | 
| 202 | 200 | 
| 203   g_object_unref(favicon_pixbuf_); | 201   g_object_unref(favicon_pixbuf_); | 
| 204 } | 202 } | 
| 205 | 203 | 
| 206 void CreateApplicationShortcutsDialogGtk::OnCreateDialogResponse( | 204 void CreateApplicationShortcutsDialogGtk::OnCreateDialogResponse( | 
| 207     GtkWidget* widget, int response) { | 205     GtkWidget* widget, int response) { | 
| 208   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 206   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
| 209 | 207 | 
| 210   if (response == GTK_RESPONSE_ACCEPT) { | 208   if (response == GTK_RESPONSE_ACCEPT) { | 
| 211     ShellIntegration::ShortcutLocations creation_locations; | 209     web_app::ShortcutLocations creation_locations; | 
| 212     creation_locations.on_desktop = | 210     creation_locations.on_desktop = | 
| 213         gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(desktop_checkbox_)); | 211         gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(desktop_checkbox_)); | 
| 214     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(menu_checkbox_))) { | 212     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(menu_checkbox_))) { | 
| 215       creation_locations.applications_menu_location = | 213       creation_locations.applications_menu_location = | 
| 216           create_in_chrome_apps_subdir_ ? | 214           create_in_chrome_apps_subdir_ ? | 
| 217               ShellIntegration::APP_MENU_LOCATION_SUBDIR_CHROMEAPPS : | 215               web_app::APP_MENU_LOCATION_SUBDIR_CHROMEAPPS : | 
| 218               ShellIntegration::APP_MENU_LOCATION_ROOT; | 216               web_app::APP_MENU_LOCATION_ROOT; | 
| 219     } | 217     } | 
| 220     BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 218     BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 
| 221         base::Bind(&CreateApplicationShortcutsDialogGtk::CreateDesktopShortcut, | 219         base::Bind(&CreateApplicationShortcutsDialogGtk::CreateDesktopShortcut, | 
| 222                    this, shortcut_info_, creation_locations)); | 220                    this, shortcut_info_, creation_locations)); | 
| 223 | 221 | 
| 224     OnCreatedShortcut(); | 222     OnCreatedShortcut(); | 
| 225   } else { | 223   } else { | 
| 226     Release(); | 224     Release(); | 
| 227   } | 225   } | 
| 228 } | 226 } | 
| 229 | 227 | 
| 230 void CreateApplicationShortcutsDialogGtk::OnErrorDialogResponse( | 228 void CreateApplicationShortcutsDialogGtk::OnErrorDialogResponse( | 
| 231     GtkWidget* widget, int response) { | 229     GtkWidget* widget, int response) { | 
| 232   Release(); | 230   Release(); | 
| 233 } | 231 } | 
| 234 | 232 | 
| 235 void CreateApplicationShortcutsDialogGtk::CreateDesktopShortcut( | 233 void CreateApplicationShortcutsDialogGtk::CreateDesktopShortcut( | 
| 236     const ShellIntegration::ShortcutInfo& shortcut_info, | 234     const web_app::ShortcutInfo& shortcut_info, | 
| 237     const ShellIntegration::ShortcutLocations& creation_locations) { | 235     const web_app::ShortcutLocations& creation_locations) { | 
| 238   DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 236   DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 
| 239   ShellIntegrationLinux::CreateDesktopShortcut(shortcut_info, | 237   ShellIntegrationLinux::CreateDesktopShortcut(shortcut_info, | 
| 240                                                creation_locations); | 238                                                creation_locations); | 
| 241   Release(); | 239   Release(); | 
| 242 } | 240 } | 
| 243 | 241 | 
| 244 void CreateApplicationShortcutsDialogGtk::ShowErrorDialog() { | 242 void CreateApplicationShortcutsDialogGtk::ShowErrorDialog() { | 
| 245   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 243   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
| 246 | 244 | 
| 247   // Hide the create dialog so that the user can no longer interact with it. | 245   // Hide the create dialog so that the user can no longer interact with it. | 
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 337 } | 335 } | 
| 338 | 336 | 
| 339 CreateChromeApplicationShortcutsDialogGtk:: | 337 CreateChromeApplicationShortcutsDialogGtk:: | 
| 340     ~CreateChromeApplicationShortcutsDialogGtk() { | 338     ~CreateChromeApplicationShortcutsDialogGtk() { | 
| 341   if (!close_callback_.is_null()) | 339   if (!close_callback_.is_null()) | 
| 342     close_callback_.Run(); | 340     close_callback_.Run(); | 
| 343 } | 341 } | 
| 344 | 342 | 
| 345 // Called when the app's ShortcutInfo (with icon) is loaded. | 343 // Called when the app's ShortcutInfo (with icon) is loaded. | 
| 346 void CreateChromeApplicationShortcutsDialogGtk::OnShortcutInfoLoaded( | 344 void CreateChromeApplicationShortcutsDialogGtk::OnShortcutInfoLoaded( | 
| 347   const ShellIntegration::ShortcutInfo& shortcut_info) { | 345   const web_app::ShortcutInfo& shortcut_info) { | 
| 348   shortcut_info_ = shortcut_info; | 346   shortcut_info_ = shortcut_info; | 
| 349 | 347 | 
| 350   CreateIconPixBuf(shortcut_info_.favicon); | 348   CreateIconPixBuf(shortcut_info_.favicon); | 
| 351   CreateDialogBox(parent_); | 349   CreateDialogBox(parent_); | 
| 352 } | 350 } | 
| 353 | 351 | 
| 354 void CreateChromeApplicationShortcutsDialogGtk::CreateDesktopShortcut( | 352 void CreateChromeApplicationShortcutsDialogGtk::CreateDesktopShortcut( | 
| 355     const ShellIntegration::ShortcutInfo& shortcut_info, | 353     const web_app::ShortcutInfo& shortcut_info, | 
| 356     const ShellIntegration::ShortcutLocations& creation_locations) { | 354     const web_app::ShortcutLocations& creation_locations) { | 
| 357   DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 355   DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 
| 358 | 356 | 
| 359   if (web_app::internals::CreateShortcutsOnFileThread( | 357   if (web_app::internals::CreateShortcutsOnFileThread( | 
| 360           web_app::SHORTCUT_CREATION_BY_USER, | 358           web_app::SHORTCUT_CREATION_BY_USER, | 
| 361           creation_locations, | 359           creation_locations, | 
| 362           shortcut_info)) { | 360           shortcut_info)) { | 
| 363     Release(); | 361     Release(); | 
| 364   } else { | 362   } else { | 
| 365     BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 363     BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 
| 366         base::Bind(&CreateChromeApplicationShortcutsDialogGtk::ShowErrorDialog, | 364         base::Bind(&CreateChromeApplicationShortcutsDialogGtk::ShowErrorDialog, | 
| 367                    this)); | 365                    this)); | 
| 368   } | 366   } | 
| 369 } | 367 } | 
| OLD | NEW | 
|---|