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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/print_preview/hidden_print_preview.h"
6
7 #include "chrome/browser/dom_distiller/tab_utils.h"
8 #include "chrome/browser/printing/print_preview_dialog_controller.h"
9 #include "chrome/browser/printing/print_preview_message_handler.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
12 #include "components/dom_distiller/core/url_constants.h"
13 #include "components/dom_distiller/core/url_utils.h"
14 #include "components/printing/common/print_messages.h"
15 #include "content/public/browser/render_view_host.h"
16
17 using content::WebContents;
18 using content::RenderViewHost;
19
20 HiddenPrintPreview::HiddenPrintPreview(
21 WebContents* target_web_contents,
22 PrintPreviewUI* print_preview_ui,
23 scoped_ptr<base::DictionaryValue> settings)
24 : target_web_contents_(target_web_contents),
25 settings_(settings.release()),
26 print_preview_ui_(print_preview_ui) {
27 StartRendering();
28 }
29
30 HiddenPrintPreview::~HiddenPrintPreview() {
31 if (!hidden_web_contents_)
32 return;
33
34 WebContents* contents = hidden_web_contents_->web_contents();
35 if (!contents)
36 return;
37
38 printing::PrintPreviewDialogController* dialog_controller =
39 printing::PrintPreviewDialogController::GetInstance();
40 if (!dialog_controller)
41 return;
42
43 dialog_controller->RemoveProxyDialogForWebContents(contents);
44 }
45
46 void HiddenPrintPreview::StartRendering() {
47 DCHECK(!hidden_web_contents_);
48 Profile* profile =
49 Profile::FromBrowserContext(target_web_contents_->GetBrowserContext());
50 content::SessionStorageNamespace* session_storage_namespace =
51 target_web_contents_->GetController().GetDefaultSessionStorageNamespace();
52 hidden_web_contents_.reset(new HiddenWebContents(profile));
53 hidden_web_contents_->StartRendering(
54 gfx::Size(1, 1), session_storage_namespace);
55 hidden_web_contents_->AddObserver(this);
56
57 WebContents* hidden_contents = hidden_web_contents_->web_contents();
58 DCHECK(hidden_contents);
59 DistillAndView(target_web_contents_, hidden_contents);
60 }
61
62 void HiddenPrintPreview::SendPrintPreviewMessageIfNecessary() {
63 WebContents* contents = hidden_web_contents_->web_contents();
64 if (!contents) {
65 NOTREACHED();
66 return;
67 }
68
69 printing::PrintPreviewDialogController* dialog_controller =
70 printing::PrintPreviewDialogController::GetInstance();
71 if (!dialog_controller) {
72 return;
73 }
74 dialog_controller->AddProxyDialogForWebContents(
75 contents, target_web_contents_);
76
77 DCHECK(settings_);
78 RenderViewHost* rvh = contents->GetRenderViewHost();
79 rvh->Send(new PrintMsg_InitiatePrintPreview(rvh->GetRoutingID(), false));
80 rvh->Send(new PrintMsg_PrintPreview(rvh->GetRoutingID(), *settings_));
81 }
82
83 content::WebContents* HiddenPrintPreview::GetHiddenWebContents() {
84 return hidden_web_contents_->web_contents();
85 }
86
87 void HiddenPrintPreview::OnFinishedLoad(HiddenWebContents* contents) {
88 SendPrintPreviewMessageIfNecessary();
89 }
90
91 void HiddenPrintPreview::OnFail(HiddenWebContents* contents) {
92 if (contents && contents->rendering_has_been_cancelled()) {
93 print_preview_ui_->OnPrintPreviewFailed();
94 }
95 }
96
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698