| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_PRINTING_PRINT_JOB_H_ | 5 #ifndef CHROME_BROWSER_PRINTING_PRINT_JOB_H_ |
| 6 #define CHROME_BROWSER_PRINTING_PRINT_JOB_H_ | 6 #define CHROME_BROWSER_PRINTING_PRINT_JOB_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 class PrinterQuery; | 27 class PrinterQuery; |
| 28 | 28 |
| 29 // Manages the print work for a specific document. Talks to the printer through | 29 // Manages the print work for a specific document. Talks to the printer through |
| 30 // PrintingContext though PrintJob::Worker. Hides access to PrintingContext in a | 30 // PrintingContext though PrintJob::Worker. Hides access to PrintingContext in a |
| 31 // worker thread so the caller never blocks. PrintJob will send notifications on | 31 // worker thread so the caller never blocks. PrintJob will send notifications on |
| 32 // any state change. While printing, the PrintJobManager instance keeps a | 32 // any state change. While printing, the PrintJobManager instance keeps a |
| 33 // reference to the job to be sure it is kept alive. All the code in this class | 33 // reference to the job to be sure it is kept alive. All the code in this class |
| 34 // runs in the UI thread. | 34 // runs in the UI thread. |
| 35 class PrintJob : public PrintJobWorkerOwner, | 35 class PrintJob : public PrintJobWorkerOwner, |
| 36 public content::NotificationObserver, | 36 public content::NotificationObserver, |
| 37 public MessageLoop::DestructionObserver { | 37 public base::MessageLoop::DestructionObserver { |
| 38 public: | 38 public: |
| 39 // Create a empty PrintJob. When initializing with this constructor, | 39 // Create a empty PrintJob. When initializing with this constructor, |
| 40 // post-constructor initialization must be done with Initialize(). | 40 // post-constructor initialization must be done with Initialize(). |
| 41 PrintJob(); | 41 PrintJob(); |
| 42 | 42 |
| 43 // Grabs the ownership of the PrintJobWorker from another job, which is | 43 // Grabs the ownership of the PrintJobWorker from another job, which is |
| 44 // usually a PrinterQuery. Set the expected page count of the print job. | 44 // usually a PrinterQuery. Set the expected page count of the print job. |
| 45 void Initialize(PrintJobWorkerOwner* job, PrintedPagesSource* source, | 45 void Initialize(PrintJobWorkerOwner* job, PrintedPagesSource* source, |
| 46 int page_count); | 46 int page_count); |
| 47 | 47 |
| 48 // content::NotificationObserver implementation. | 48 // content::NotificationObserver implementation. |
| 49 virtual void Observe(int type, | 49 virtual void Observe(int type, |
| 50 const content::NotificationSource& source, | 50 const content::NotificationSource& source, |
| 51 const content::NotificationDetails& details) OVERRIDE; | 51 const content::NotificationDetails& details) OVERRIDE; |
| 52 | 52 |
| 53 // PrintJobWorkerOwner implementation. | 53 // PrintJobWorkerOwner implementation. |
| 54 virtual void GetSettingsDone(const PrintSettings& new_settings, | 54 virtual void GetSettingsDone(const PrintSettings& new_settings, |
| 55 PrintingContext::Result result) OVERRIDE; | 55 PrintingContext::Result result) OVERRIDE; |
| 56 virtual PrintJobWorker* DetachWorker(PrintJobWorkerOwner* new_owner) OVERRIDE; | 56 virtual PrintJobWorker* DetachWorker(PrintJobWorkerOwner* new_owner) OVERRIDE; |
| 57 virtual MessageLoop* message_loop() OVERRIDE; | 57 virtual base::MessageLoop* message_loop() OVERRIDE; |
| 58 virtual const PrintSettings& settings() const OVERRIDE; | 58 virtual const PrintSettings& settings() const OVERRIDE; |
| 59 virtual int cookie() const OVERRIDE; | 59 virtual int cookie() const OVERRIDE; |
| 60 | 60 |
| 61 // DestructionObserver implementation. | 61 // DestructionObserver implementation. |
| 62 virtual void WillDestroyCurrentMessageLoop() OVERRIDE; | 62 virtual void WillDestroyCurrentMessageLoop() OVERRIDE; |
| 63 | 63 |
| 64 // Starts the actual printing. Signals the worker that it should begin to | 64 // Starts the actual printing. Signals the worker that it should begin to |
| 65 // spool as soon as data is available. | 65 // spool as soon as data is available. |
| 66 void StartPrinting(); | 66 void StartPrinting(); |
| 67 | 67 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 117 |
| 118 // Called at shutdown when running a nested message loop. | 118 // Called at shutdown when running a nested message loop. |
| 119 void Quit(); | 119 void Quit(); |
| 120 | 120 |
| 121 void HoldUntilStopIsCalled(const scoped_refptr<PrintJob>& job); | 121 void HoldUntilStopIsCalled(const scoped_refptr<PrintJob>& job); |
| 122 | 122 |
| 123 content::NotificationRegistrar registrar_; | 123 content::NotificationRegistrar registrar_; |
| 124 | 124 |
| 125 // Main message loop reference. Used to send notifications in the right | 125 // Main message loop reference. Used to send notifications in the right |
| 126 // thread. | 126 // thread. |
| 127 MessageLoop* const ui_message_loop_; | 127 base::MessageLoop* const ui_message_loop_; |
| 128 | 128 |
| 129 // Source that generates the PrintedPage's (i.e. a WebContents). It will be | 129 // Source that generates the PrintedPage's (i.e. a WebContents). It will be |
| 130 // set back to NULL if the source is deleted before this object. | 130 // set back to NULL if the source is deleted before this object. |
| 131 PrintedPagesSource* source_; | 131 PrintedPagesSource* source_; |
| 132 | 132 |
| 133 // All the UI is done in a worker thread because many Win32 print functions | 133 // All the UI is done in a worker thread because many Win32 print functions |
| 134 // are blocking and enters a message loop without your consent. There is one | 134 // are blocking and enters a message loop without your consent. There is one |
| 135 // worker thread per print job. | 135 // worker thread per print job. |
| 136 scoped_ptr<PrintJobWorker> worker_; | 136 scoped_ptr<PrintJobWorker> worker_; |
| 137 | 137 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 scoped_refptr<PrintedDocument> document_; | 217 scoped_refptr<PrintedDocument> document_; |
| 218 scoped_refptr<PrintedPage> page_; | 218 scoped_refptr<PrintedPage> page_; |
| 219 const Type type_; | 219 const Type type_; |
| 220 | 220 |
| 221 DISALLOW_COPY_AND_ASSIGN(JobEventDetails); | 221 DISALLOW_COPY_AND_ASSIGN(JobEventDetails); |
| 222 }; | 222 }; |
| 223 | 223 |
| 224 } // namespace printing | 224 } // namespace printing |
| 225 | 225 |
| 226 #endif // CHROME_BROWSER_PRINTING_PRINT_JOB_H_ | 226 #endif // CHROME_BROWSER_PRINTING_PRINT_JOB_H_ |
| OLD | NEW |