OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |