| OLD | NEW |
| 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_job.h" | 5 #include "chrome/browser/printing/print_job.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "chrome/browser/printing/print_job_worker.h" | 8 #include "chrome/browser/printing/print_job_worker.h" |
| 9 #include "chrome/browser/printing/printed_document.h" | 9 #include "chrome/browser/printing/printed_document.h" |
| 10 #include "chrome/browser/printing/printed_page.h" | 10 #include "chrome/browser/printing/printed_page.h" |
| 11 | 11 |
| 12 #ifdef _MSC_VER | 12 #ifdef _MSC_VER |
| 13 #pragma warning(disable:4355) // 'this' : used in base member initializer list | 13 #pragma warning(disable:4355) // 'this' : used in base member initializer list |
| 14 #endif | 14 #endif |
| 15 | 15 |
| 16 using base::TimeDelta; | 16 using base::TimeDelta; |
| 17 | 17 |
| 18 namespace printing { | 18 namespace printing { |
| 19 | 19 |
| 20 PrintJob::PrintJob(PrintedPagesSource* source) | 20 PrintJob::PrintJob(PrintedPagesSource* source) |
| 21 : ui_message_loop_(MessageLoop::current()), | 21 : ui_message_loop_(MessageLoop::current()), |
| 22 worker_(new PrintJobWorker(this)), | 22 worker_(new PrintJobWorker(this)), |
| 23 source_(source), | 23 source_(source), |
| 24 is_job_pending_(false), | 24 is_job_pending_(false), |
| 25 is_print_dialog_box_shown_(false), | 25 is_print_dialog_box_shown_(false), |
| 26 is_canceling_(false) { | 26 is_canceling_(false) { |
| 27 DCHECK(ui_message_loop_); |
| 28 ui_message_loop_->AddDestructionObserver(this); |
| 27 } | 29 } |
| 28 | 30 |
| 29 PrintJob::PrintJob() | 31 PrintJob::PrintJob() |
| 30 : ui_message_loop_(MessageLoop::current()), | 32 : ui_message_loop_(MessageLoop::current()), |
| 31 worker_(), | 33 worker_(), |
| 32 source_(NULL), | 34 source_(NULL), |
| 33 settings_(), | 35 settings_(), |
| 34 is_job_pending_(false), | 36 is_job_pending_(false), |
| 35 is_print_dialog_box_shown_(false), | 37 is_print_dialog_box_shown_(false), |
| 36 is_canceling_(false) { | 38 is_canceling_(false) { |
| 39 DCHECK(ui_message_loop_); |
| 40 ui_message_loop_->AddDestructionObserver(this); |
| 37 } | 41 } |
| 38 | 42 |
| 39 PrintJob::~PrintJob() { | 43 PrintJob::~PrintJob() { |
| 44 ui_message_loop_->RemoveDestructionObserver(this); |
| 40 // The job should be finished (or at least canceled) when it is destroyed. | 45 // The job should be finished (or at least canceled) when it is destroyed. |
| 41 DCHECK(!is_job_pending_); | 46 DCHECK(!is_job_pending_); |
| 42 DCHECK(!is_print_dialog_box_shown_); | 47 DCHECK(!is_print_dialog_box_shown_); |
| 43 DCHECK(!is_canceling_); | 48 DCHECK(!is_canceling_); |
| 44 DCHECK(worker_->message_loop() == NULL); | 49 if (worker_.get()) |
| 50 DCHECK(worker_->message_loop() == NULL); |
| 45 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); | 51 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); |
| 46 } | 52 } |
| 47 | 53 |
| 48 void PrintJob::Initialize(PrintJobWorkerOwner* job, | 54 void PrintJob::Initialize(PrintJobWorkerOwner* job, |
| 49 PrintedPagesSource* source) { | 55 PrintedPagesSource* source) { |
| 50 DCHECK(!source_); | 56 DCHECK(!source_); |
| 51 DCHECK(!worker_.get()); | 57 DCHECK(!worker_.get()); |
| 52 DCHECK(!is_job_pending_); | 58 DCHECK(!is_job_pending_); |
| 53 DCHECK(!is_print_dialog_box_shown_); | 59 DCHECK(!is_print_dialog_box_shown_); |
| 54 DCHECK(!is_canceling_); | 60 DCHECK(!is_canceling_); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 return NULL; | 141 return NULL; |
| 136 } | 142 } |
| 137 | 143 |
| 138 int PrintJob::cookie() const { | 144 int PrintJob::cookie() const { |
| 139 if (!document_.get()) | 145 if (!document_.get()) |
| 140 // Always use an invalid cookie in this case. | 146 // Always use an invalid cookie in this case. |
| 141 return 0; | 147 return 0; |
| 142 return document_->cookie(); | 148 return document_->cookie(); |
| 143 } | 149 } |
| 144 | 150 |
| 151 void PrintJob::WillDestroyCurrentMessageLoop() { |
| 152 NOTREACHED(); |
| 153 } |
| 154 |
| 145 void PrintJob::GetSettings(GetSettingsAskParam ask_user_for_settings, | 155 void PrintJob::GetSettings(GetSettingsAskParam ask_user_for_settings, |
| 146 HWND parent_window) { | 156 HWND parent_window) { |
| 147 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); | 157 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); |
| 148 DCHECK(!is_job_pending_); | 158 DCHECK(!is_job_pending_); |
| 149 DCHECK(!is_print_dialog_box_shown_); | 159 DCHECK(!is_print_dialog_box_shown_); |
| 150 // Is not reentrant. | 160 // Is not reentrant. |
| 151 if (is_job_pending_) | 161 if (is_job_pending_) |
| 152 return; | 162 return; |
| 153 | 163 |
| 154 // Lazy create the worker thread. There is one worker thread per print job. | 164 // Lazy create the worker thread. There is one worker thread per print job. |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 PrintedDocument* JobEventDetails::document() const { | 458 PrintedDocument* JobEventDetails::document() const { |
| 449 return document_; | 459 return document_; |
| 450 } | 460 } |
| 451 | 461 |
| 452 PrintedPage* JobEventDetails::page() const { | 462 PrintedPage* JobEventDetails::page() const { |
| 453 return page_; | 463 return page_; |
| 454 } | 464 } |
| 455 | 465 |
| 456 } // namespace printing | 466 } // namespace printing |
| 457 | 467 |
| OLD | NEW |