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

Unified Diff: chrome/browser/ui/webui/print_preview/hidden_print_preview.cc

Issue 1125343004: Add a "Simplify Page" option to the print preview dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and remove custom URL source Created 5 years, 6 months 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/ui/webui/print_preview/hidden_print_preview.cc
diff --git a/chrome/browser/ui/webui/print_preview/hidden_print_preview.cc b/chrome/browser/ui/webui/print_preview/hidden_print_preview.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7683ca69732ecaefcd4ac91410358b91533af8ca
--- /dev/null
+++ b/chrome/browser/ui/webui/print_preview/hidden_print_preview.cc
@@ -0,0 +1,96 @@
+// Copyright (c) 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/print_preview/hidden_print_preview.h"
+
+#include "chrome/browser/dom_distiller/tab_utils.h"
+#include "chrome/browser/printing/print_preview_dialog_controller.h"
+#include "chrome/browser/printing/print_preview_message_handler.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
+#include "components/dom_distiller/core/url_constants.h"
+#include "components/dom_distiller/core/url_utils.h"
+#include "components/printing/common/print_messages.h"
+#include "content/public/browser/render_view_host.h"
+
+using content::WebContents;
+using content::RenderViewHost;
+
+HiddenPrintPreview::HiddenPrintPreview(
+ WebContents* target_web_contents,
+ PrintPreviewUI* print_preview_ui,
+ scoped_ptr<base::DictionaryValue> settings)
+ : target_web_contents_(target_web_contents),
+ settings_(settings.release()),
+ print_preview_ui_(print_preview_ui) {
+ StartRendering();
+}
+
+HiddenPrintPreview::~HiddenPrintPreview() {
+ if (!hidden_web_contents_)
+ return;
+
+ WebContents* contents = hidden_web_contents_->web_contents();
+ if (!contents)
+ return;
+
+ printing::PrintPreviewDialogController* dialog_controller =
+ printing::PrintPreviewDialogController::GetInstance();
+ if (!dialog_controller)
+ return;
+
+ dialog_controller->RemoveProxyDialogForWebContents(contents);
+}
+
+void HiddenPrintPreview::StartRendering() {
+ DCHECK(!hidden_web_contents_);
+ Profile* profile =
+ Profile::FromBrowserContext(target_web_contents_->GetBrowserContext());
+ content::SessionStorageNamespace* session_storage_namespace =
+ target_web_contents_->GetController().GetDefaultSessionStorageNamespace();
+ hidden_web_contents_.reset(new HiddenWebContents(profile));
+ hidden_web_contents_->StartRendering(
+ gfx::Size(1, 1), session_storage_namespace);
+ hidden_web_contents_->AddObserver(this);
+
+ WebContents* hidden_contents = hidden_web_contents_->web_contents();
+ DCHECK(hidden_contents);
+ DistillAndView(target_web_contents_, hidden_contents);
+}
+
+void HiddenPrintPreview::SendPrintPreviewMessageIfNecessary() {
+ WebContents* contents = hidden_web_contents_->web_contents();
+ if (!contents) {
+ NOTREACHED();
+ return;
+ }
+
+ printing::PrintPreviewDialogController* dialog_controller =
+ printing::PrintPreviewDialogController::GetInstance();
+ if (!dialog_controller) {
+ return;
+ }
+ dialog_controller->AddProxyDialogForWebContents(
+ contents, target_web_contents_);
+
+ DCHECK(settings_);
+ RenderViewHost* rvh = contents->GetRenderViewHost();
+ rvh->Send(new PrintMsg_InitiatePrintPreview(rvh->GetRoutingID(), false));
+ rvh->Send(new PrintMsg_PrintPreview(rvh->GetRoutingID(), *settings_));
+}
+
+content::WebContents* HiddenPrintPreview::GetHiddenWebContents() {
+ return hidden_web_contents_->web_contents();
+}
+
+void HiddenPrintPreview::OnFinishedLoad(HiddenWebContents* contents) {
+ SendPrintPreviewMessageIfNecessary();
+}
+
+void HiddenPrintPreview::OnFail(HiddenWebContents* contents) {
+ if (contents && contents->rendering_has_been_cancelled()) {
+ print_preview_ui_->OnPrintPreviewFailed();
+ }
+}
+

Powered by Google App Engine
This is Rietveld 408576698