Index: chrome/browser/renderer_context_menu/render_view_context_menu.cc |
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
index 210adc6d75d706936ca9186a699bc107e60d67e6..0f3e300c174b8f894258459fe67c5c4baf23f177 100644 |
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
@@ -1583,9 +1583,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const { |
incognito_avail != IncognitoModePrefs::DISABLED; |
case IDC_PRINT: |
- return prefs->GetBoolean(prefs::kPrintingEnabled) && |
- (params_.media_type == WebContextMenuData::MediaTypeNone || |
- params_.media_flags & WebContextMenuData::MediaCanPrint); |
+ return IsPrintPreviewEnabled(); |
case IDC_CONTENT_CONTEXT_SEARCHWEBFOR: |
case IDC_CONTENT_CONTEXT_GOTOURL: |
@@ -2082,6 +2080,17 @@ bool RenderViewContextMenu::IsPasteAndMatchStyleEnabled() const { |
ui::CLIPBOARD_TYPE_COPY_PASTE); |
} |
+bool RenderViewContextMenu::IsPrintPreviewEnabled() const { |
+ if (params_.media_type != WebContextMenuData::MediaTypeNone && |
+ !(params_.media_flags & WebContextMenuData::MediaCanPrint)) { |
+ return false; |
+ } |
+ |
+ // |browser| is a nullptr if a modal dialog is open. |
+ Browser* browser = chrome::FindBrowserWithWebContents(source_web_contents_); |
+ return browser && chrome::CanPrint(browser); |
+} |
+ |
bool RenderViewContextMenu::IsRouteMediaEnabled() const { |
if (!media_router::MediaRouterEnabled(browser_context_)) |
return false; |