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