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