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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 6 #define CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 7 8 #include "base/memory/ref_counted.h" 9 #include "printing/printing_context.h" 10 11 namespace base { 12 class MessageLoop; 13 } 14 15 16 namespace printing { 17 18 class PrintJobWorker; 19 class PrintSettings; 20 21 class PrintJobWorkerOwner 22 : public base::RefCountedThreadSafe<PrintJobWorkerOwner> { 23 public: 24 // Finishes the initialization began by PrintJobWorker::GetSettings(). 25 // Creates a new PrintedDocument if necessary. Solely meant to be called by 26 // PrintJobWorker. 27 virtual void GetSettingsDone(const PrintSettings& new_settings, 28 PrintingContext::Result result) = 0; 29 30 // Detach the PrintJobWorker associated to this object. 31 virtual PrintJobWorker* DetachWorker(PrintJobWorkerOwner* new_owner) = 0; 32 33 // Retrieves the message loop that is expected to process GetSettingsDone. 34 virtual base::MessageLoop* message_loop() = 0; 35 36 // Access the current settings. 37 virtual const PrintSettings& settings() const = 0; 38 39 // Cookie uniquely identifying the PrintedDocument and/or loaded settings. 40 virtual int cookie() const = 0; 41 42 protected: 43 friend class base::RefCountedThreadSafe<PrintJobWorkerOwner>; 44 45 virtual ~PrintJobWorkerOwner() {} 46 }; 47 48 } // namespace printing 49 50 #endif // CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 51