15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/printing_context.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace base { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MessageLoop; 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class SequencedTaskRunner; 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace tracked_objects { 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Location; 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace printing { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrintJobWorker; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrintSettings; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrintJobWorkerOwner 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public base::RefCountedThreadSafe<PrintJobWorkerOwner> { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) PrintJobWorkerOwner(); 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Finishes the initialization began by PrintJobWorker::GetSettings(). 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a new PrintedDocument if necessary. Solely meant to be called by 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PrintJobWorker. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetSettingsDone(const PrintSettings& new_settings, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintingContext::Result result) = 0; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Detach the PrintJobWorker associated to this object. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrintJobWorker* DetachWorker(PrintJobWorkerOwner* new_owner) = 0; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Access the current settings. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const PrintSettings& settings() const = 0; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cookie uniquely identifying the PrintedDocument and/or loaded settings. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int cookie() const = 0; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Returns true if the current thread is a thread on which a task 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // may be run, and false if no task will be run on the current 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // thread. 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool RunsTasksOnCurrentThread() const; 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Posts the given task to be run. 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool PostTask(const tracked_objects::Location& from_here, 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const base::Closure& task); 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class base::RefCountedThreadSafe<PrintJobWorkerOwner>; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual ~PrintJobWorkerOwner(); 5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Task runner reference. Used to send notifications in the right 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // thread. 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_refptr<base::SequencedTaskRunner> task_runner_; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace printing 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PRINTING_PRINT_JOB_WORKER_OWNER_H__ 67