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

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: Created 5 years, 7 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) 2014 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/printing/print_preview_dialog_controller.h"
8 #include "chrome/browser/printing/print_preview_message_handler.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
11 #include "components/dom_distiller/core/url_constants.h"
12 #include "components/dom_distiller/core/url_utils.h"
13 #include "components/printing/common/print_messages.h"
14 #include "content/public/browser/render_view_host.h"
15
16 using content::WebContents;
17 using content::RenderViewHost;
18
19 HiddenPrintPreview::HiddenPrintPreview(
20 WebContents* target_web_contents,
21 PrintPreviewUI* print_preview_ui)
22 : target_web_contents_(target_web_contents),
23 print_preview_ui_(print_preview_ui) {
24 const GURL& last_committed_url = target_web_contents->GetLastCommittedURL();
25 GURL url = dom_distiller::url_utils::GetPrintPreviewDistillerViewUrlFromUrl(
26 dom_distiller::kDomDistillerScheme, last_committed_url);
27 StartRendering(url);
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(const GURL& url) {
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, url));
53 hidden_web_contents_->StartRendering(
54 gfx::Size(1, 1), session_storage_namespace);
55 hidden_web_contents_->AddObserver(this);
56 }
57
58 void HiddenPrintPreview::SetSettings(
59 scoped_ptr<base::DictionaryValue> settings) {
60 settings_.reset(settings.release());
61 if (hidden_web_contents_ && hidden_web_contents_->has_finished_loading())
62 SendPrintPreviewMessageIfNecessary();
63 }
64
65 void HiddenPrintPreview::SendPrintPreviewMessageIfNecessary() {
66 WebContents* contents = hidden_web_contents_->web_contents();
67 if (!contents) {
68 NOTREACHED();
69 return;
70 }
71
72 printing::PrintPreviewDialogController* dialog_controller =
73 printing::PrintPreviewDialogController::GetInstance();
74 if (!dialog_controller) {
75 return;
76 }
77 dialog_controller->AddProxyDialogForWebContents(
78 contents, target_web_contents_);
79
80 if (!settings_)
81 return;
82
83 RenderViewHost* rvh = contents->GetRenderViewHost();
84 rvh->Send(new PrintMsg_InitiatePrintPreview(rvh->GetRoutingID(), false));
85 rvh->Send(new PrintMsg_PrintPreview(rvh->GetRoutingID(), *settings_));
86 }
87
88 void HiddenPrintPreview::OnFinishedLoad(HiddenWebContents* contents) {
89 SendPrintPreviewMessageIfNecessary();
90 }
91
92 void HiddenPrintPreview::OnFail(HiddenWebContents* contents) {
93 if (contents && contents->rendering_has_been_cancelled()) {
94 print_preview_ui_->OnPrintPreviewFailed();
95 }
96 }
97
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698