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

Side by Side Diff: chrome/browser/printing/print_view_manager.cc

Issue 149181: Move Emf class to the printing library. Also creates a platform agnostic Nat... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months 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
« no previous file with comments | « chrome/browser/printing/print_job_worker.cc ('k') | chrome/browser/printing/printed_document.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/scoped_ptr.h"
8 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/printing/print_job.h" 10 #include "chrome/browser/printing/print_job.h"
10 #include "chrome/browser/printing/print_job_manager.h" 11 #include "chrome/browser/printing/print_job_manager.h"
11 #include "chrome/browser/printing/printed_document.h" 12 #include "chrome/browser/printing/printed_document.h"
12 #include "chrome/browser/printing/printer_query.h" 13 #include "chrome/browser/printing/printer_query.h"
13 #include "chrome/browser/renderer_host/render_view_host.h" 14 #include "chrome/browser/renderer_host/render_view_host.h"
14 #include "chrome/browser/tab_contents/navigation_entry.h" 15 #include "chrome/browser/tab_contents/navigation_entry.h"
15 #include "chrome/browser/tab_contents/tab_contents.h" 16 #include "chrome/browser/tab_contents/tab_contents.h"
16 #include "chrome/common/gfx/emf.h"
17 #include "chrome/common/notification_service.h" 17 #include "chrome/common/notification_service.h"
18 #include "chrome/common/render_messages.h" 18 #include "chrome/common/render_messages.h"
19 #include "grit/generated_resources.h" 19 #include "grit/generated_resources.h"
20 #include "printing/native_metafile.h"
20 21
21 using base::TimeDelta; 22 using base::TimeDelta;
22 23
23 namespace printing { 24 namespace printing {
24 25
25 PrintViewManager::PrintViewManager(TabContents& owner) 26 PrintViewManager::PrintViewManager(TabContents& owner)
26 : owner_(owner), 27 : owner_(owner),
27 waiting_to_print_(false), 28 waiting_to_print_(false),
28 printing_succeeded_(false), 29 printing_succeeded_(false),
29 inside_inner_message_loop_(false) { 30 inside_inner_message_loop_(false) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 // http://msdn2.microsoft.com/en-us/library/ms535522.aspx 89 // http://msdn2.microsoft.com/en-us/library/ms535522.aspx
89 // Windows 2000/XP: When a page in a spooled file exceeds approximately 350 90 // Windows 2000/XP: When a page in a spooled file exceeds approximately 350
90 // MB, it can fail to print and not send an error message. 91 // MB, it can fail to print and not send an error message.
91 if (params.data_size && params.data_size >= 350*1024*1024) { 92 if (params.data_size && params.data_size >= 350*1024*1024) {
92 NOTREACHED() << "size:" << params.data_size; 93 NOTREACHED() << "size:" << params.data_size;
93 TerminatePrintJob(true); 94 TerminatePrintJob(true);
94 owner_.Stop(); 95 owner_.Stop();
95 return; 96 return;
96 } 97 }
97 98
98 base::SharedMemory shared_buf(params.emf_data_handle, true); 99 base::SharedMemory shared_buf(params.metafile_data_handle, true);
99 if (!shared_buf.Map(params.data_size)) { 100 if (!shared_buf.Map(params.data_size)) {
100 NOTREACHED() << "couldn't map"; 101 NOTREACHED() << "couldn't map";
101 owner_.Stop(); 102 owner_.Stop();
102 return; 103 return;
103 } 104 }
104 105
105 gfx::Emf* emf = new gfx::Emf; 106 scoped_ptr<NativeMetafile> metafile(new NativeMetafile());
106 if (!emf->CreateFromData(shared_buf.memory(), params.data_size)) { 107 if (!metafile->CreateFromData(shared_buf.memory(), params.data_size)) {
107 NOTREACHED() << "Invalid EMF header"; 108 NOTREACHED() << "Invalid metafile header";
108 delete emf;
109 owner_.Stop(); 109 owner_.Stop();
110 return; 110 return;
111 } 111 }
112 112
113 // Update the rendered document. It will send notifications to the listener. 113 // Update the rendered document. It will send notifications to the listener.
114 document->SetPage(params.page_number, emf, params.actual_shrink); 114 document->SetPage(params.page_number,
115 metafile.release(),
116 params.actual_shrink);
115 ShouldQuitFromInnerMessageLoop(); 117 ShouldQuitFromInnerMessageLoop();
116 } 118 }
117 119
118 std::wstring PrintViewManager::RenderSourceName() { 120 std::wstring PrintViewManager::RenderSourceName() {
119 std::wstring name(UTF16ToWideHack(owner_.GetTitle())); 121 std::wstring name(UTF16ToWideHack(owner_.GetTitle()));
120 if (name.empty()) 122 if (name.empty())
121 name = l10n_util::GetString(IDS_DEFAULT_PRINT_DOCUMENT_TITLE); 123 name = l10n_util::GetString(IDS_DEFAULT_PRINT_DOCUMENT_TITLE);
122 return name; 124 return name;
123 } 125 }
124 126
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 if (print_job_.get()) { 296 if (print_job_.get()) {
295 owner_.PrintingDone(print_job_->cookie(), success); 297 owner_.PrintingDone(print_job_->cookie(), success);
296 } 298 }
297 } 299 }
298 300
299 void PrintViewManager::TerminatePrintJob(bool cancel) { 301 void PrintViewManager::TerminatePrintJob(bool cancel) {
300 if (!print_job_.get()) 302 if (!print_job_.get())
301 return; 303 return;
302 304
303 if (cancel) { 305 if (cancel) {
304 // We don't need the EMF data anymore because the printing is canceled. 306 // We don't need the metafile data anymore because the printing is canceled.
305 print_job_->Cancel(); 307 print_job_->Cancel();
306 waiting_to_print_ = false; 308 waiting_to_print_ = false;
307 inside_inner_message_loop_ = false; 309 inside_inner_message_loop_ = false;
308 } else { 310 } else {
309 DCHECK(!inside_inner_message_loop_); 311 DCHECK(!inside_inner_message_loop_);
310 DCHECK(!print_job_->document() || print_job_->document()->IsComplete() || 312 DCHECK(!print_job_->document() || print_job_->document()->IsComplete() ||
311 !waiting_to_print_); 313 !waiting_to_print_);
312 314
313 // TabContents is either dying or navigating elsewhere. We need to render 315 // TabContents is either dying or navigating elsewhere. We need to render
314 // all the pages in an hurry if a print job is still pending. This does the 316 // all the pages in an hurry if a print job is still pending. This does the
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 return false; 405 return false;
404 } 406 }
405 407
406 // Settings are already loaded. Go ahead. This will set 408 // Settings are already loaded. Go ahead. This will set
407 // print_job_->is_job_pending() to true. 409 // print_job_->is_job_pending() to true.
408 print_job_->StartPrinting(); 410 print_job_->StartPrinting();
409 return true; 411 return true;
410 } 412 }
411 413
412 } // namespace printing 414 } // namespace printing
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_job_worker.cc ('k') | chrome/browser/printing/printed_document.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698