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

Side by Side Diff: chrome/browser/printing/print_view_manager.cc

Issue 8136027: Print Preview: Make print preview tab modal. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rebase, more fixes Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/printing/print_view_manager.h" 5 #include "chrome/browser/printing/print_view_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/printing/print_job.h" 10 #include "chrome/browser/printing/print_job.h"
(...skipping 13 matching lines...) Expand all
24 #include "grit/generated_resources.h" 24 #include "grit/generated_resources.h"
25 #include "printing/metafile.h" 25 #include "printing/metafile.h"
26 #include "printing/metafile_impl.h" 26 #include "printing/metafile_impl.h"
27 #include "printing/printed_document.h" 27 #include "printing/printed_document.h"
28 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
29 29
30 using base::TimeDelta; 30 using base::TimeDelta;
31 31
32 namespace { 32 namespace {
33 33
34 string16 GenerateRenderSourceName(TabContents* tab_contents) {
35 string16 name(tab_contents->GetTitle());
36 if (name.empty())
37 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
38 return name;
39 }
40
41 // Release the PrinterQuery identified by |cookie|. 34 // Release the PrinterQuery identified by |cookie|.
42 void ReleasePrinterQuery(int cookie) { 35 void ReleasePrinterQuery(int cookie) {
43 printing::PrintJobManager* print_job_manager = 36 printing::PrintJobManager* print_job_manager =
44 g_browser_process->print_job_manager(); 37 g_browser_process->print_job_manager();
45 // May be NULL in tests. 38 // May be NULL in tests.
46 if (!print_job_manager) 39 if (!print_job_manager)
47 return; 40 return;
48 41
49 scoped_refptr<printing::PrinterQuery> printer_query; 42 scoped_refptr<printing::PrinterQuery> printer_query;
50 print_job_manager->PopPrinterQuery(cookie, &printer_query); 43 print_job_manager->PopPrinterQuery(cookie, &printer_query);
51 if (printer_query.get()) { 44 if (printer_query.get()) {
52 BrowserThread::PostTask( 45 BrowserThread::PostTask(
53 BrowserThread::IO, FROM_HERE, 46 BrowserThread::IO, FROM_HERE,
54 NewRunnableMethod(printer_query.get(), 47 NewRunnableMethod(printer_query.get(),
55 &printing::PrinterQuery::StopWorker)); 48 &printing::PrinterQuery::StopWorker));
56 } 49 }
57 } 50 }
58 51
59 } // namespace 52 } // namespace
60 53
61 namespace printing { 54 namespace printing {
62 55
63 PrintViewManager::PrintViewManager(TabContentsWrapper* tab) 56 PrintViewManager::PrintViewManager(TabContentsWrapper* tab)
64 : TabContentsObserver(tab->tab_contents()), 57 : TabContentsObserver(tab->tab_contents()),
65 tab_(tab), 58 tab_(tab),
66 number_pages_(0), 59 number_pages_(0),
67 printing_succeeded_(false), 60 printing_succeeded_(false),
68 inside_inner_message_loop_(false), 61 inside_inner_message_loop_(false),
69 is_title_overridden_(false),
70 observer_(NULL), 62 observer_(NULL),
71 cookie_(0) { 63 cookie_(0) {
72 #if defined(OS_POSIX) && !defined(OS_MACOSX) 64 #if defined(OS_POSIX) && !defined(OS_MACOSX)
73 expecting_first_page_ = true; 65 expecting_first_page_ = true;
74 #endif 66 #endif
75 } 67 }
76 68
77 PrintViewManager::~PrintViewManager() { 69 PrintViewManager::~PrintViewManager() {
78 ReleasePrinterQuery(cookie_); 70 ReleasePrinterQuery(cookie_);
79 DisconnectFromCurrentPrintJob(); 71 DisconnectFromCurrentPrintJob();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 return PrintNowInternal(new PrintMsg_InitiatePrintPreview(routing_id())); 105 return PrintNowInternal(new PrintMsg_InitiatePrintPreview(routing_id()));
114 } 106 }
115 107
116 void PrintViewManager::PreviewPrintingRequestCancelled() { 108 void PrintViewManager::PreviewPrintingRequestCancelled() {
117 if (!tab_contents()) 109 if (!tab_contents())
118 return; 110 return;
119 RenderViewHost* rvh = tab_contents()->render_view_host(); 111 RenderViewHost* rvh = tab_contents()->render_view_host();
120 rvh->Send(new PrintMsg_PreviewPrintingRequestCancelled(rvh->routing_id())); 112 rvh->Send(new PrintMsg_PreviewPrintingRequestCancelled(rvh->routing_id()));
121 } 113 }
122 114
115 void PrintViewManager::PrintPreviewDone() {
116 RenderViewHost* rvh = tab_contents()->render_view_host();
117 rvh->Send(new PrintMsg_PrintPreviewDone(rvh->routing_id()));
118 }
119
123 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) { 120 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) {
124 DCHECK(!observer || !observer_); 121 DCHECK(!observer || !observer_);
125 observer_ = observer; 122 observer_ = observer;
126 } 123 }
127 124
128 void PrintViewManager::ResetTitleOverride() {
129 is_title_overridden_ = false;
130 }
131
132 void PrintViewManager::StopNavigation() { 125 void PrintViewManager::StopNavigation() {
133 // Cancel the current job, wait for the worker to finish. 126 // Cancel the current job, wait for the worker to finish.
134 TerminatePrintJob(true); 127 TerminatePrintJob(true);
135 } 128 }
136 129
137 void PrintViewManager::RenderViewGone() { 130 void PrintViewManager::RenderViewGone() {
138 if (!print_job_.get()) 131 if (!print_job_.get())
139 return; 132 return;
140 133
141 scoped_refptr<PrintedDocument> document(print_job_->document()); 134 scoped_refptr<PrintedDocument> document(print_job_->document());
142 if (document) { 135 if (document) {
143 // If IsComplete() returns false, the document isn't completely rendered. 136 // If IsComplete() returns false, the document isn't completely rendered.
144 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise, 137 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise,
145 // the print job may finish without problem. 138 // the print job may finish without problem.
146 TerminatePrintJob(!document->IsComplete()); 139 TerminatePrintJob(!document->IsComplete());
147 } 140 }
148 } 141 }
149 142
150 void PrintViewManager::OverrideTitle(TabContents* tab_contents) {
151 is_title_overridden_ = true;
152 overridden_title_ = GenerateRenderSourceName(tab_contents);
153 }
154
155 string16 PrintViewManager::RenderSourceName() { 143 string16 PrintViewManager::RenderSourceName() {
156 if (is_title_overridden_) 144 string16 name(tab_contents()->GetTitle());
157 return overridden_title_; 145 if (name.empty())
158 return GenerateRenderSourceName(tab_contents()); 146 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
147 return name;
159 } 148 }
160 149
161 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) { 150 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) {
162 DCHECK_GT(cookie, 0); 151 DCHECK_GT(cookie, 0);
163 DCHECK_GT(number_pages, 0); 152 DCHECK_GT(number_pages, 0);
164 number_pages_ = number_pages; 153 number_pages_ = number_pages;
165 OpportunisticallyCreatePrintJob(cookie); 154 OpportunisticallyCreatePrintJob(cookie);
166 } 155 }
167 156
168 void PrintViewManager::OnDidGetDocumentCookie(int cookie) { 157 void PrintViewManager::OnDidGetDocumentCookie(int cookie) {
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 } 515 }
527 516
528 bool PrintViewManager::PrintNowInternal(IPC::Message* message) { 517 bool PrintViewManager::PrintNowInternal(IPC::Message* message) {
529 // Don't print / print preview interstitials. 518 // Don't print / print preview interstitials.
530 if (tab_contents()->showing_interstitial_page()) 519 if (tab_contents()->showing_interstitial_page())
531 return false; 520 return false;
532 return Send(message); 521 return Send(message);
533 } 522 }
534 523
535 } // namespace printing 524 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698