Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: chrome/browser/printing/print_preview_dialog_controller.cc

Issue 2566153007: Implement PrintBrowser functionality. (Closed)
Patch Set: Fix git weirdness Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/printing/print_preview_dialog_controller.cc
diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc
index 780928be53474d99790f012a18a42736c78587d5..1c19971cac4deb7d51c32fbaddc6ee2793a326f2 100644
--- a/chrome/browser/printing/print_preview_dialog_controller.cc
+++ b/chrome/browser/printing/print_preview_dialog_controller.cc
@@ -11,6 +11,7 @@
#include <vector>
#include "base/auto_reset.h"
+#include "base/command_line.h"
#include "base/macros.h"
#include "base/path_service.h"
#include "base/strings/utf_string_conversions.h"
@@ -21,12 +22,17 @@
#include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/task_manager/web_contents_tags.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/tab_contents/core_tab_helper.h"
#include "chrome/browser/ui/webui/chrome_web_contents_handler.h"
#include "chrome/browser/ui/webui/constrained_web_dialog_ui.h"
#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
#include "chrome/common/chrome_paths.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/url_constants.h"
#include "components/guest_view/browser/guest_view_base.h"
#include "components/web_modal/web_contents_modal_dialog_host.h"
@@ -343,6 +349,14 @@ void PrintPreviewDialogController::OnNavEntryCommitted(
return;
}
}
+#if BUILDFLAG(ENABLE_PRINT_BROWSER)
+ // If in PrintBrowser mode, navigation away from the print UI is fine
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool print_browser_enabled =
+ command_line->HasSwitch(switches::kEnablePrintBrowser);
+ if (print_browser_enabled)
+ return;
+#endif
NOTREACHED();
return;
}
@@ -366,13 +380,37 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
WebContents* initiator) {
base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true);
- // The dialog delegates are deleted when the dialog is closed.
- ConstrainedWebDialogDelegate* web_dialog_delegate =
- ShowConstrainedWebDialog(initiator->GetBrowserContext(),
- new PrintPreviewDialogDelegate(initiator),
- initiator);
+ WebContents* preview_dialog;
- WebContents* preview_dialog = web_dialog_delegate->GetWebContents();
+#if BUILDFLAG(ENABLE_PRINT_BROWSER)
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool print_browser_enabled =
+ command_line->HasSwitch(switches::kEnablePrintBrowser);
+ if (!print_browser_enabled) {
+#endif
+ // The dialog delegates are deleted when the dialog is closed.
+ ConstrainedWebDialogDelegate* web_dialog_delegate =
+ ShowConstrainedWebDialog(initiator->GetBrowserContext(),
+ new PrintPreviewDialogDelegate(initiator),
+ initiator);
+
+ preview_dialog = web_dialog_delegate->GetWebContents();
+#if BUILDFLAG(ENABLE_PRINT_BROWSER)
+ } else {
+ // If in PrintBrowser mode, swap |initiator| with a newly-created
+ // |preview_dialog| and navigate |preview_dialog| to the print UI
+ Browser* browser =
+ chrome::FindBrowserWithWindow(initiator->GetTopLevelNativeWindow());
+ preview_dialog =
+ WebContents::Create(WebContents::CreateParams(browser->profile()));
+ CoreTabHelper::FromWebContents(initiator)->delegate()->SwapTabContents(
rbpotter 2016/12/16 20:05:28 I think you need to ensure the initiator web conte
+ initiator, preview_dialog, false, false);
+ browser->OpenURL(content::OpenURLParams(
+ GURL(chrome::kChromeUIPrintURL), content::Referrer(),
+ WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
+ false));
+ }
+#endif
// Clear the zoom level for the print preview dialog so it isn't affected by
// the default zoom level. This also controls the zoom level of the OOP PDF

Powered by Google App Engine
This is Rietveld 408576698