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

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 Created 9 years, 1 month 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/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 15 matching lines...) Expand all
26 #include "printing/metafile.h" 26 #include "printing/metafile.h"
27 #include "printing/metafile_impl.h" 27 #include "printing/metafile_impl.h"
28 #include "printing/printed_document.h" 28 #include "printing/printed_document.h"
29 #include "ui/base/l10n/l10n_util.h" 29 #include "ui/base/l10n/l10n_util.h"
30 30
31 using base::TimeDelta; 31 using base::TimeDelta;
32 using content::BrowserThread; 32 using content::BrowserThread;
33 33
34 namespace { 34 namespace {
35 35
36 string16 GenerateRenderSourceName(TabContents* tab_contents) {
37 string16 name(tab_contents->GetTitle());
38 if (name.empty())
39 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
40 return name;
41 }
42
43 // Release the PrinterQuery identified by |cookie|. 36 // Release the PrinterQuery identified by |cookie|.
44 void ReleasePrinterQuery(int cookie) { 37 void ReleasePrinterQuery(int cookie) {
45 printing::PrintJobManager* print_job_manager = 38 printing::PrintJobManager* print_job_manager =
46 g_browser_process->print_job_manager(); 39 g_browser_process->print_job_manager();
47 // May be NULL in tests. 40 // May be NULL in tests.
48 if (!print_job_manager) 41 if (!print_job_manager)
49 return; 42 return;
50 43
51 scoped_refptr<printing::PrinterQuery> printer_query; 44 scoped_refptr<printing::PrinterQuery> printer_query;
52 print_job_manager->PopPrinterQuery(cookie, &printer_query); 45 print_job_manager->PopPrinterQuery(cookie, &printer_query);
53 if (printer_query.get()) { 46 if (printer_query.get()) {
54 BrowserThread::PostTask( 47 BrowserThread::PostTask(
55 BrowserThread::IO, FROM_HERE, 48 BrowserThread::IO, FROM_HERE,
56 base::Bind(&printing::PrinterQuery::StopWorker, printer_query.get())); 49 base::Bind(&printing::PrinterQuery::StopWorker, printer_query.get()));
57 } 50 }
58 } 51 }
59 52
60 } // namespace 53 } // namespace
61 54
62 namespace printing { 55 namespace printing {
63 56
64 PrintViewManager::PrintViewManager(TabContentsWrapper* tab) 57 PrintViewManager::PrintViewManager(TabContentsWrapper* tab)
65 : TabContentsObserver(tab->tab_contents()), 58 : TabContentsObserver(tab->tab_contents()),
66 tab_(tab), 59 tab_(tab),
67 number_pages_(0), 60 number_pages_(0),
68 printing_succeeded_(false), 61 printing_succeeded_(false),
69 inside_inner_message_loop_(false), 62 inside_inner_message_loop_(false),
70 is_title_overridden_(false),
71 observer_(NULL), 63 observer_(NULL),
72 cookie_(0) { 64 cookie_(0) {
73 #if defined(OS_POSIX) && !defined(OS_MACOSX) 65 #if defined(OS_POSIX) && !defined(OS_MACOSX)
74 expecting_first_page_ = true; 66 expecting_first_page_ = true;
75 #endif 67 #endif
76 } 68 }
77 69
78 PrintViewManager::~PrintViewManager() { 70 PrintViewManager::~PrintViewManager() {
79 ReleasePrinterQuery(cookie_); 71 ReleasePrinterQuery(cookie_);
80 DisconnectFromCurrentPrintJob(); 72 DisconnectFromCurrentPrintJob();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 return; 111 return;
120 RenderViewHost* rvh = tab_contents()->render_view_host(); 112 RenderViewHost* rvh = tab_contents()->render_view_host();
121 rvh->Send(new PrintMsg_PreviewPrintingRequestCancelled(rvh->routing_id())); 113 rvh->Send(new PrintMsg_PreviewPrintingRequestCancelled(rvh->routing_id()));
122 } 114 }
123 115
124 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) { 116 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) {
125 DCHECK(!observer || !observer_); 117 DCHECK(!observer || !observer_);
126 observer_ = observer; 118 observer_ = observer;
127 } 119 }
128 120
129 void PrintViewManager::ResetTitleOverride() {
130 is_title_overridden_ = false;
131 }
132
133 void PrintViewManager::StopNavigation() { 121 void PrintViewManager::StopNavigation() {
134 // Cancel the current job, wait for the worker to finish. 122 // Cancel the current job, wait for the worker to finish.
135 TerminatePrintJob(true); 123 TerminatePrintJob(true);
136 } 124 }
137 125
138 void PrintViewManager::RenderViewGone() { 126 void PrintViewManager::RenderViewGone() {
139 if (!print_job_.get()) 127 if (!print_job_.get())
140 return; 128 return;
141 129
142 scoped_refptr<PrintedDocument> document(print_job_->document()); 130 scoped_refptr<PrintedDocument> document(print_job_->document());
143 if (document) { 131 if (document) {
144 // If IsComplete() returns false, the document isn't completely rendered. 132 // If IsComplete() returns false, the document isn't completely rendered.
145 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise, 133 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise,
146 // the print job may finish without problem. 134 // the print job may finish without problem.
147 TerminatePrintJob(!document->IsComplete()); 135 TerminatePrintJob(!document->IsComplete());
148 } 136 }
149 } 137 }
150 138
151 void PrintViewManager::OverrideTitle(TabContents* tab_contents) {
152 is_title_overridden_ = true;
153 overridden_title_ = GenerateRenderSourceName(tab_contents);
154 }
155
156 string16 PrintViewManager::RenderSourceName() { 139 string16 PrintViewManager::RenderSourceName() {
157 if (is_title_overridden_) 140 string16 name(tab_contents()->GetTitle());
158 return overridden_title_; 141 if (name.empty())
159 return GenerateRenderSourceName(tab_contents()); 142 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
143 return name;
160 } 144 }
161 145
162 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) { 146 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) {
163 DCHECK_GT(cookie, 0); 147 DCHECK_GT(cookie, 0);
164 DCHECK_GT(number_pages, 0); 148 DCHECK_GT(number_pages, 0);
165 number_pages_ = number_pages; 149 number_pages_ = number_pages;
166 OpportunisticallyCreatePrintJob(cookie); 150 OpportunisticallyCreatePrintJob(cookie);
167 } 151 }
168 152
169 void PrintViewManager::OnDidGetDocumentCookie(int cookie) { 153 void PrintViewManager::OnDidGetDocumentCookie(int cookie) {
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 } 511 }
528 512
529 bool PrintViewManager::PrintNowInternal(IPC::Message* message) { 513 bool PrintViewManager::PrintNowInternal(IPC::Message* message) {
530 // Don't print / print preview interstitials. 514 // Don't print / print preview interstitials.
531 if (tab_contents()->showing_interstitial_page()) 515 if (tab_contents()->showing_interstitial_page())
532 return false; 516 return false;
533 return Send(message); 517 return Send(message);
534 } 518 }
535 519
536 } // namespace printing 520 } // namespace printing
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_view_manager.h ('k') | chrome/browser/resources/print_preview/print_header.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698