| 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 "base/timer.h" | 8 #include "base/timer.h" |
| 9 #include "chrome/browser/printing/print_job_worker.h" | 9 #include "chrome/browser/printing/print_job_worker.h" |
| 10 #include "chrome/browser/printing/printed_document.h" | 10 #include "chrome/browser/printing/printed_document.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 // Don't forget to register to our own messages. | 59 // Don't forget to register to our own messages. |
| 60 registrar_.Add(this, NotificationType::PRINT_JOB_EVENT, | 60 registrar_.Add(this, NotificationType::PRINT_JOB_EVENT, |
| 61 Source<PrintJob>(this)); | 61 Source<PrintJob>(this)); |
| 62 } | 62 } |
| 63 | 63 |
| 64 void PrintJob::Observe(NotificationType type, | 64 void PrintJob::Observe(NotificationType type, |
| 65 const NotificationSource& source, | 65 const NotificationSource& source, |
| 66 const NotificationDetails& details) { | 66 const NotificationDetails& details) { |
| 67 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); | 67 DCHECK_EQ(ui_message_loop_, MessageLoop::current()); |
| 68 switch (type.value) { | 68 switch (type.value) { |
| 69 case NotificationType::PRINTED_DOCUMENT_UPDATED: { | |
| 70 DCHECK(Source<PrintedDocument>(source).ptr() == | |
| 71 document_.get()); | |
| 72 | |
| 73 // This notification may happens even if no job is started (i.e. print | |
| 74 // preview) | |
| 75 if (is_job_pending_ == true && | |
| 76 Source<PrintedDocument>(source).ptr() == document_.get() && | |
| 77 Details<PrintedPage>(details).ptr() != NULL) { | |
| 78 // Are we waiting for a page to print? The worker will know. | |
| 79 worker_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | |
| 80 worker_.get(), &PrintJobWorker::OnNewPage)); | |
| 81 } | |
| 82 break; | |
| 83 } | |
| 84 case NotificationType::PRINT_JOB_EVENT: { | 69 case NotificationType::PRINT_JOB_EVENT: { |
| 85 OnNotifyPrintJobEvent(*Details<JobEventDetails>(details).ptr()); | 70 OnNotifyPrintJobEvent(*Details<JobEventDetails>(details).ptr()); |
| 86 break; | 71 break; |
| 87 } | 72 } |
| 88 default: { | 73 default: { |
| 89 break; | 74 break; |
| 90 } | 75 } |
| 91 } | 76 } |
| 92 } | 77 } |
| 93 | 78 |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 return is_print_dialog_box_shown_; | 207 return is_print_dialog_box_shown_; |
| 223 } | 208 } |
| 224 | 209 |
| 225 PrintedDocument* PrintJob::document() const { | 210 PrintedDocument* PrintJob::document() const { |
| 226 return document_.get(); | 211 return document_.get(); |
| 227 } | 212 } |
| 228 | 213 |
| 229 void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) { | 214 void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) { |
| 230 if (document_.get() == new_document) | 215 if (document_.get() == new_document) |
| 231 return; | 216 return; |
| 232 // Unregisters. | 217 |
| 233 if (document_.get()) { | |
| 234 registrar_.Remove(this, NotificationType::PRINTED_DOCUMENT_UPDATED, | |
| 235 Source<PrintedDocument>(document_.get())); | |
| 236 } | |
| 237 document_ = new_document; | 218 document_ = new_document; |
| 238 | 219 |
| 239 // Registers. | |
| 240 if (document_.get()) { | 220 if (document_.get()) { |
| 241 registrar_.Add(this, NotificationType::PRINTED_DOCUMENT_UPDATED, | |
| 242 Source<PrintedDocument>(document_.get())); | |
| 243 settings_ = document_->settings(); | 221 settings_ = document_->settings(); |
| 244 } | 222 } |
| 245 | 223 |
| 246 if (worker_.get() && worker_->message_loop()) { | 224 if (worker_.get() && worker_->message_loop()) { |
| 247 DCHECK(!is_job_pending_); | 225 DCHECK(!is_job_pending_); |
| 248 // Sync the document with the worker. | 226 // Sync the document with the worker. |
| 249 worker_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | 227 worker_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
| 250 worker_.get(), &PrintJobWorker::OnDocumentChanged, document_)); | 228 worker_.get(), &PrintJobWorker::OnDocumentChanged, document_)); |
| 251 } | 229 } |
| 252 } | 230 } |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 | 342 |
| 365 PrintedDocument* JobEventDetails::document() const { | 343 PrintedDocument* JobEventDetails::document() const { |
| 366 return document_; | 344 return document_; |
| 367 } | 345 } |
| 368 | 346 |
| 369 PrintedPage* JobEventDetails::page() const { | 347 PrintedPage* JobEventDetails::page() const { |
| 370 return page_; | 348 return page_; |
| 371 } | 349 } |
| 372 | 350 |
| 373 } // namespace printing | 351 } // namespace printing |
| OLD | NEW |