| OLD | NEW | 
|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/browser_commands.h" | 5 #include "chrome/browser/ui/browser_commands.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" | 
| 9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" | 
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 89 #include "chrome/browser/ui/webui/ntp/core_app_launcher_handler.h" | 89 #include "chrome/browser/ui/webui/ntp/core_app_launcher_handler.h" | 
| 90 #include "chrome/browser/web_applications/web_app.h" | 90 #include "chrome/browser/web_applications/web_app.h" | 
| 91 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 91 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 
| 92 #include "extensions/browser/extension_registry.h" | 92 #include "extensions/browser/extension_registry.h" | 
| 93 #include "extensions/browser/extension_system.h" | 93 #include "extensions/browser/extension_system.h" | 
| 94 #include "extensions/common/extension.h" | 94 #include "extensions/common/extension.h" | 
| 95 #include "extensions/common/extension_set.h" | 95 #include "extensions/common/extension_set.h" | 
| 96 #endif | 96 #endif | 
| 97 | 97 | 
| 98 #if defined(ENABLE_PRINTING) | 98 #if defined(ENABLE_PRINTING) | 
| 99 #if defined(ENABLE_FULL_PRINTING) | 99 #if defined(ENABLE_PRINT_PREVIEW) | 
| 100 #include "chrome/browser/printing/print_preview_dialog_controller.h" | 100 #include "chrome/browser/printing/print_preview_dialog_controller.h" | 
| 101 #include "chrome/browser/printing/print_view_manager.h" | 101 #include "chrome/browser/printing/print_view_manager.h" | 
| 102 #else | 102 #else | 
| 103 #include "chrome/browser/printing/print_view_manager_basic.h" | 103 #include "chrome/browser/printing/print_view_manager_basic.h" | 
| 104 #endif  // defined(ENABLE_FULL_PRINTING) | 104 #endif  // defined(ENABLE_PRINT_PREVIEW) | 
| 105 #endif  // defined(ENABLE_PRINTING) | 105 #endif  // defined(ENABLE_PRINTING) | 
| 106 | 106 | 
| 107 namespace { | 107 namespace { | 
| 108 const char kOsOverrideForTabletSite[] = "Linux; Android 4.0.3"; | 108 const char kOsOverrideForTabletSite[] = "Linux; Android 4.0.3"; | 
| 109 } | 109 } | 
| 110 | 110 | 
| 111 using base::UserMetricsAction; | 111 using base::UserMetricsAction; | 
| 112 using content::NavigationController; | 112 using content::NavigationController; | 
| 113 using content::NavigationEntry; | 113 using content::NavigationEntry; | 
| 114 using content::OpenURLParams; | 114 using content::OpenURLParams; | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 262     return false; | 262     return false; | 
| 263 | 263 | 
| 264   // TODO(gbillock): This is currently called in production by the CanPrint | 264   // TODO(gbillock): This is currently called in production by the CanPrint | 
| 265   // method, and may be too restrictive if we allow print preview to overlap. | 265   // method, and may be too restrictive if we allow print preview to overlap. | 
| 266   // Re-assess how to queue print preview after we know more about popup | 266   // Re-assess how to queue print preview after we know more about popup | 
| 267   // management policy. | 267   // management policy. | 
| 268   return browser->popup_manager()->IsWebModalDialogActive(web_contents); | 268   return browser->popup_manager()->IsWebModalDialogActive(web_contents); | 
| 269 } | 269 } | 
| 270 | 270 | 
| 271 bool PrintPreviewShowing(const Browser* browser) { | 271 bool PrintPreviewShowing(const Browser* browser) { | 
| 272 #if defined(ENABLE_FULL_PRINTING) | 272 #if defined(ENABLE_PRINT_PREVIEW) | 
| 273   WebContents* contents = browser->tab_strip_model()->GetActiveWebContents(); | 273   WebContents* contents = browser->tab_strip_model()->GetActiveWebContents(); | 
| 274   printing::PrintPreviewDialogController* controller = | 274   printing::PrintPreviewDialogController* controller = | 
| 275       printing::PrintPreviewDialogController::GetInstance(); | 275       printing::PrintPreviewDialogController::GetInstance(); | 
| 276   return controller && (controller->GetPrintPreviewForContents(contents) || | 276   return controller && (controller->GetPrintPreviewForContents(contents) || | 
| 277                         controller->is_creating_print_preview_dialog()); | 277                         controller->is_creating_print_preview_dialog()); | 
| 278 #else | 278 #else | 
| 279   return false; | 279   return false; | 
| 280 #endif | 280 #endif | 
| 281 } | 281 } | 
| 282 | 282 | 
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 852                          const SSLStatus& ssl) { | 852                          const SSLStatus& ssl) { | 
| 853   browser->window()->ShowWebsiteSettings( | 853   browser->window()->ShowWebsiteSettings( | 
| 854       Profile::FromBrowserContext(web_contents->GetBrowserContext()), | 854       Profile::FromBrowserContext(web_contents->GetBrowserContext()), | 
| 855       web_contents, url, ssl); | 855       web_contents, url, ssl); | 
| 856 } | 856 } | 
| 857 | 857 | 
| 858 void Print(Browser* browser) { | 858 void Print(Browser* browser) { | 
| 859 #if defined(ENABLE_PRINTING) | 859 #if defined(ENABLE_PRINTING) | 
| 860   WebContents* contents = browser->tab_strip_model()->GetActiveWebContents(); | 860   WebContents* contents = browser->tab_strip_model()->GetActiveWebContents(); | 
| 861 | 861 | 
| 862 #if defined(ENABLE_FULL_PRINTING) | 862 #if defined(ENABLE_PRINT_PREVIEW) | 
| 863   printing::PrintViewManager* print_view_manager = | 863   printing::PrintViewManager* print_view_manager = | 
| 864       printing::PrintViewManager::FromWebContents(contents); | 864       printing::PrintViewManager::FromWebContents(contents); | 
| 865   if (!browser->profile()->GetPrefs()->GetBoolean( | 865   if (!browser->profile()->GetPrefs()->GetBoolean( | 
| 866           prefs::kPrintPreviewDisabled)) { | 866           prefs::kPrintPreviewDisabled)) { | 
| 867     print_view_manager->PrintPreviewNow(false); | 867     print_view_manager->PrintPreviewNow(false); | 
| 868     return; | 868     return; | 
| 869   } | 869   } | 
| 870 #else   // ENABLE_FULL_PRINTING | 870 #else   // ENABLE_PRINT_PREVIEW | 
| 871   printing::PrintViewManagerBasic* print_view_manager = | 871   printing::PrintViewManagerBasic* print_view_manager = | 
| 872       printing::PrintViewManagerBasic::FromWebContents(contents); | 872       printing::PrintViewManagerBasic::FromWebContents(contents); | 
| 873 #endif  // ENABLE_FULL_PRINTING | 873 #endif  // ENABLE_PRINT_PREVIEW | 
| 874 | 874 | 
| 875 #if !defined(DISABLE_BASIC_PRINTING) | 875 #if defined(ENABLE_BASIC_PRINTING) | 
| 876   print_view_manager->PrintNow(); | 876   print_view_manager->PrintNow(); | 
| 877 #endif  // DISABLE_BASIC_PRINTING | 877 #endif  // ENABLE_BASIC_PRINTING | 
| 878 | 878 | 
| 879 #endif  // defined(ENABLE_PRINTING) | 879 #endif  // defined(ENABLE_PRINTING) | 
| 880 } | 880 } | 
| 881 | 881 | 
| 882 bool CanPrint(Browser* browser) { | 882 bool CanPrint(Browser* browser) { | 
| 883   // Do not print when printing is disabled via pref or policy. | 883   // Do not print when printing is disabled via pref or policy. | 
| 884   // Do not print when a constrained window is showing. It's confusing. | 884   // Do not print when a constrained window is showing. It's confusing. | 
| 885   // TODO(gbillock): Need to re-assess the call to | 885   // TODO(gbillock): Need to re-assess the call to | 
| 886   // IsShowingWebContentsModalDialog after a popup management policy is | 886   // IsShowingWebContentsModalDialog after a popup management policy is | 
| 887   // refined -- we will probably want to just queue the print request, not | 887   // refined -- we will probably want to just queue the print request, not | 
| 888   // block it. | 888   // block it. | 
| 889   return browser->profile()->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) && | 889   return browser->profile()->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) && | 
| 890       !(IsShowingWebContentsModalDialog(browser) || | 890       !(IsShowingWebContentsModalDialog(browser) || | 
| 891       GetContentRestrictions(browser) & CONTENT_RESTRICTION_PRINT); | 891       GetContentRestrictions(browser) & CONTENT_RESTRICTION_PRINT); | 
| 892 } | 892 } | 
| 893 | 893 | 
| 894 #if !defined(DISABLE_BASIC_PRINTING) | 894 #if defined(ENABLE_BASIC_PRINTING) | 
| 895 void BasicPrint(Browser* browser) { | 895 void BasicPrint(Browser* browser) { | 
| 896 #if defined(ENABLE_FULL_PRINTING) | 896 #if defined(ENABLE_PRINT_PREVIEW) | 
| 897   printing::PrintViewManager* print_view_manager = | 897   printing::PrintViewManager* print_view_manager = | 
| 898       printing::PrintViewManager::FromWebContents( | 898       printing::PrintViewManager::FromWebContents( | 
| 899           browser->tab_strip_model()->GetActiveWebContents()); | 899           browser->tab_strip_model()->GetActiveWebContents()); | 
| 900   print_view_manager->BasicPrint(); | 900   print_view_manager->BasicPrint(); | 
| 901 #endif | 901 #endif | 
| 902 } | 902 } | 
| 903 | 903 | 
| 904 bool CanBasicPrint(Browser* browser) { | 904 bool CanBasicPrint(Browser* browser) { | 
| 905   // If printing is not disabled via pref or policy, it is always possible to | 905   // If printing is not disabled via pref or policy, it is always possible to | 
| 906   // advanced print when the print preview is visible.  The exception to this | 906   // advanced print when the print preview is visible.  The exception to this | 
| 907   // is under Win8 ash, since showing the advanced print dialog will open it | 907   // is under Win8 ash, since showing the advanced print dialog will open it | 
| 908   // modally on the Desktop and hang the browser. | 908   // modally on the Desktop and hang the browser. | 
| 909 #if defined(OS_WIN) | 909 #if defined(OS_WIN) | 
| 910   if (chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_ASH) | 910   if (chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_ASH) | 
| 911     return false; | 911     return false; | 
| 912 #endif | 912 #endif | 
| 913 | 913 | 
| 914   return browser->profile()->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) && | 914   return browser->profile()->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) && | 
| 915       (PrintPreviewShowing(browser) || CanPrint(browser)); | 915       (PrintPreviewShowing(browser) || CanPrint(browser)); | 
| 916 } | 916 } | 
| 917 #endif  // !DISABLE_BASIC_PRINTING | 917 #endif  // ENABLE_BASIC_PRINTING | 
| 918 | 918 | 
| 919 void EmailPageLocation(Browser* browser) { | 919 void EmailPageLocation(Browser* browser) { | 
| 920   content::RecordAction(UserMetricsAction("EmailPageLocation")); | 920   content::RecordAction(UserMetricsAction("EmailPageLocation")); | 
| 921   WebContents* wc = browser->tab_strip_model()->GetActiveWebContents(); | 921   WebContents* wc = browser->tab_strip_model()->GetActiveWebContents(); | 
| 922   DCHECK(wc); | 922   DCHECK(wc); | 
| 923 | 923 | 
| 924   std::string title = net::EscapeQueryParamValue( | 924   std::string title = net::EscapeQueryParamValue( | 
| 925       base::UTF16ToUTF8(wc->GetTitle()), false); | 925       base::UTF16ToUTF8(wc->GetTitle()), false); | 
| 926   std::string page_url = net::EscapeQueryParamValue(wc->GetURL().spec(), false); | 926   std::string page_url = net::EscapeQueryParamValue(wc->GetURL().spec(), false); | 
| 927   std::string mailto = std::string("mailto:?subject=Fwd:%20") + | 927   std::string mailto = std::string("mailto:?subject=Fwd:%20") + | 
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1288                                           browser->host_desktop_type())); | 1288                                           browser->host_desktop_type())); | 
| 1289   app_browser->tab_strip_model()->AppendWebContents(contents, true); | 1289   app_browser->tab_strip_model()->AppendWebContents(contents, true); | 
| 1290 | 1290 | 
| 1291   contents->GetMutableRendererPrefs()->can_accept_load_drops = false; | 1291   contents->GetMutableRendererPrefs()->can_accept_load_drops = false; | 
| 1292   contents->GetRenderViewHost()->SyncRendererPrefs(); | 1292   contents->GetRenderViewHost()->SyncRendererPrefs(); | 
| 1293   app_browser->window()->Show(); | 1293   app_browser->window()->Show(); | 
| 1294 } | 1294 } | 
| 1295 #endif  // defined(ENABLE_EXTENSIONS) | 1295 #endif  // defined(ENABLE_EXTENSIONS) | 
| 1296 | 1296 | 
| 1297 }  // namespace chrome | 1297 }  // namespace chrome | 
| OLD | NEW | 
|---|