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

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, no renderer changes 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 14 matching lines...) Expand all
25 #include "grit/generated_resources.h" 25 #include "grit/generated_resources.h"
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 32
33 namespace { 33 namespace {
34 34
35 string16 GenerateRenderSourceName(TabContents* tab_contents) {
36 string16 name(tab_contents->GetTitle());
37 if (name.empty())
38 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
39 return name;
40 }
41
42 // Release the PrinterQuery identified by |cookie|. 35 // Release the PrinterQuery identified by |cookie|.
43 void ReleasePrinterQuery(int cookie) { 36 void ReleasePrinterQuery(int cookie) {
44 printing::PrintJobManager* print_job_manager = 37 printing::PrintJobManager* print_job_manager =
45 g_browser_process->print_job_manager(); 38 g_browser_process->print_job_manager();
46 // May be NULL in tests. 39 // May be NULL in tests.
47 if (!print_job_manager) 40 if (!print_job_manager)
48 return; 41 return;
49 42
50 scoped_refptr<printing::PrinterQuery> printer_query; 43 scoped_refptr<printing::PrinterQuery> printer_query;
51 print_job_manager->PopPrinterQuery(cookie, &printer_query); 44 print_job_manager->PopPrinterQuery(cookie, &printer_query);
52 if (printer_query.get()) { 45 if (printer_query.get()) {
53 BrowserThread::PostTask( 46 BrowserThread::PostTask(
54 BrowserThread::IO, FROM_HERE, 47 BrowserThread::IO, FROM_HERE,
55 base::Bind(&printing::PrinterQuery::StopWorker, printer_query.get())); 48 base::Bind(&printing::PrinterQuery::StopWorker, printer_query.get()));
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
123 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) { 115 void PrintViewManager::set_observer(PrintViewManagerObserver* observer) {
124 DCHECK(!observer || !observer_); 116 DCHECK(!observer || !observer_);
125 observer_ = observer; 117 observer_ = observer;
126 } 118 }
127 119
128 void PrintViewManager::ResetTitleOverride() {
129 is_title_overridden_ = false;
130 }
131
132 void PrintViewManager::StopNavigation() { 120 void PrintViewManager::StopNavigation() {
133 // Cancel the current job, wait for the worker to finish. 121 // Cancel the current job, wait for the worker to finish.
134 TerminatePrintJob(true); 122 TerminatePrintJob(true);
135 } 123 }
136 124
137 void PrintViewManager::RenderViewGone() { 125 void PrintViewManager::RenderViewGone() {
138 if (!print_job_.get()) 126 if (!print_job_.get())
139 return; 127 return;
140 128
141 scoped_refptr<PrintedDocument> document(print_job_->document()); 129 scoped_refptr<PrintedDocument> document(print_job_->document());
142 if (document) { 130 if (document) {
143 // If IsComplete() returns false, the document isn't completely rendered. 131 // If IsComplete() returns false, the document isn't completely rendered.
144 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise, 132 // Since our renderer is gone, there's nothing to do, cancel it. Otherwise,
145 // the print job may finish without problem. 133 // the print job may finish without problem.
146 TerminatePrintJob(!document->IsComplete()); 134 TerminatePrintJob(!document->IsComplete());
147 } 135 }
148 } 136 }
149 137
150 void PrintViewManager::OverrideTitle(TabContents* tab_contents) {
151 is_title_overridden_ = true;
152 overridden_title_ = GenerateRenderSourceName(tab_contents);
153 }
154
155 string16 PrintViewManager::RenderSourceName() { 138 string16 PrintViewManager::RenderSourceName() {
156 if (is_title_overridden_) 139 string16 name(tab_contents()->GetTitle());
157 return overridden_title_; 140 if (name.empty())
158 return GenerateRenderSourceName(tab_contents()); 141 name = l10n_util::GetStringUTF16(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
142 return name;
159 } 143 }
160 144
161 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) { 145 void PrintViewManager::OnDidGetPrintedPagesCount(int cookie, int number_pages) {
162 DCHECK_GT(cookie, 0); 146 DCHECK_GT(cookie, 0);
163 DCHECK_GT(number_pages, 0); 147 DCHECK_GT(number_pages, 0);
164 number_pages_ = number_pages; 148 number_pages_ = number_pages;
165 OpportunisticallyCreatePrintJob(cookie); 149 OpportunisticallyCreatePrintJob(cookie);
166 } 150 }
167 151
168 void PrintViewManager::OnDidGetDocumentCookie(int cookie) { 152 void PrintViewManager::OnDidGetDocumentCookie(int cookie) {
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 } 510 }
527 511
528 bool PrintViewManager::PrintNowInternal(IPC::Message* message) { 512 bool PrintViewManager::PrintNowInternal(IPC::Message* message) {
529 // Don't print / print preview interstitials. 513 // Don't print / print preview interstitials.
530 if (tab_contents()->showing_interstitial_page()) 514 if (tab_contents()->showing_interstitial_page())
531 return false; 515 return false;
532 return Send(message); 516 return Send(message);
533 } 517 }
534 518
535 } // namespace printing 519 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698