Chromium Code Reviews| 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_job.h" | 5 #include "chrome/browser/printing/print_job.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/threading/thread_restrictions.h" | 10 #include "base/threading/thread_restrictions.h" |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 191 | 191 |
| 192 bool PrintJob::FlushJob(int timeout_ms) { | 192 bool PrintJob::FlushJob(int timeout_ms) { |
| 193 // Make sure the object outlive this message loop. | 193 // Make sure the object outlive this message loop. |
| 194 scoped_refptr<PrintJob> handle(this); | 194 scoped_refptr<PrintJob> handle(this); |
| 195 | 195 |
| 196 // Stop() will eventually be called, which will get out of the inner message | 196 // Stop() will eventually be called, which will get out of the inner message |
| 197 // loop. But, don't take it for granted and set a timer in case something goes | 197 // loop. But, don't take it for granted and set a timer in case something goes |
| 198 // wrong. | 198 // wrong. |
| 199 base::OneShotTimer<MessageLoop> quit_task; | 199 base::OneShotTimer<MessageLoop> quit_task; |
| 200 if (timeout_ms) { | 200 if (timeout_ms) { |
| 201 quit_task.Start(FROM_HERE, TimeDelta::FromMilliseconds(timeout_ms), | 201 quit_task.Start(FROM_HERE, TimeDelta::FromMilliseconds(timeout_ms), |
|
jar (doing other things)
2012/02/11 03:24:38
This is pretty evil/problematic... though not rela
dhollowa
2012/02/13 17:44:26
Looks like this was added by Darin. I'm not sure
jar (doing other things)
2012/02/13 18:03:02
Darin,
This code looks pretty risky... especially
| |
| 202 MessageLoop::current(), &MessageLoop::Quit); | 202 MessageLoop::current(), &MessageLoop::Quit); |
| 203 } | 203 } |
| 204 | 204 |
| 205 bool old_state = MessageLoop::current()->NestableTasksAllowed(); | 205 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); |
| 206 MessageLoop::current()->SetNestableTasksAllowed(true); | |
| 207 MessageLoop::current()->Run(); | 206 MessageLoop::current()->Run(); |
| 208 // Restore task state. | |
| 209 MessageLoop::current()->SetNestableTasksAllowed(old_state); | |
| 210 | 207 |
| 211 return true; | 208 return true; |
| 212 } | 209 } |
| 213 | 210 |
| 214 void PrintJob::DisconnectSource() { | 211 void PrintJob::DisconnectSource() { |
| 215 source_ = NULL; | 212 source_ = NULL; |
| 216 if (document_.get()) | 213 if (document_.get()) |
| 217 document_->DisconnectSource(); | 214 document_->DisconnectSource(); |
| 218 } | 215 } |
| 219 | 216 |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 365 | 362 |
| 366 PrintedDocument* JobEventDetails::document() const { | 363 PrintedDocument* JobEventDetails::document() const { |
| 367 return document_; | 364 return document_; |
| 368 } | 365 } |
| 369 | 366 |
| 370 PrintedPage* JobEventDetails::page() const { | 367 PrintedPage* JobEventDetails::page() const { |
| 371 return page_; | 368 return page_; |
| 372 } | 369 } |
| 373 | 370 |
| 374 } // namespace printing | 371 } // namespace printing |
| OLD | NEW |