Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Unified Diff: chrome/service/service_utility_process_host.h

Issue 8774040: Don't make classes derive from ChildProcessHost, and instead have them use it through composition... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/service/service_utility_process_host.h
===================================================================
--- chrome/service/service_utility_process_host.h (revision 112597)
+++ chrome/service/service_utility_process_host.h (working copy)
@@ -14,11 +14,15 @@
#include "base/basictypes.h"
#include "base/file_path.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/process.h"
#include "base/task.h"
#include "ipc/ipc_channel.h"
-#include "chrome/service/service_child_process_host.h"
+#include "content/public/common/child_process_host_delegate.h"
#include "printing/pdf_render_settings.h"
+class ChildProcessHost;
+class CommandLine;
class ScopedTempDir;
namespace base {
@@ -34,7 +38,7 @@
// Acts as the service-side host to a utility child process. A
// utility process is a short-lived sandboxed process that is created to run
// a specific task.
-class ServiceUtilityProcessHost : public ServiceChildProcessHost {
+class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
public:
// Consumers of ServiceUtilityProcessHost must implement this interface to
// get results back. All functions are called on the thread passed along
@@ -101,9 +105,11 @@
// Allows this method to be overridden for tests.
virtual FilePath GetUtilityProcessCmd();
- // ChildProcessHost implementation.
+ // ChildProcessHostDelegate implementation:
virtual bool CanShutdown() OVERRIDE;
- virtual void OnChildDied() OVERRIDE;
+ virtual void OnChildDisconnected() OVERRIDE;
+ virtual void ShutdownStarted() OVERRIDE;
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
private:
// Starts a process. Returns true iff it succeeded. |exposed_dir| is the
@@ -111,22 +117,26 @@
// true.
bool StartProcess(bool no_sandbox, const FilePath& exposed_dir);
- // IPC messages:
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
- // Called when at least one page in the specified PDF has been rendered
- // successfully into metafile_path_;
+ // Launch the child process synchronously.
+ // TODO(sanjeevr): Determine whether we need to make the launch asynchronous.
+ // |exposed_dir| is the path to tbe exposed to the sandbox. This is ignored
+ // if |no_sandbox| is true.
+ bool Launch(CommandLine* cmd_line,
+ bool no_sandbox,
+ const FilePath& exposed_dir);
+
+ base::ProcessHandle handle() const { return handle_; }
+
+ // Messages handlers:
void OnRenderPDFPagesToMetafileSucceeded(int highest_rendered_page_number);
- // Called when PDF rendering failed.
void OnRenderPDFPagesToMetafileFailed();
- // Called when the printer capabilities and defaults have been
- // retrieved successfully.
void OnGetPrinterCapsAndDefaultsSucceeded(
const std::string& printer_name,
const printing::PrinterCapsAndDefaults& caps_and_defaults);
- // Called when the printer capabilities and defaults could not be
- // retrieved successfully.
void OnGetPrinterCapsAndDefaultsFailed(const std::string& printer_name);
+ scoped_ptr<ChildProcessHost> child_process_host_;
+ base::ProcessHandle handle_;
// A pointer to our client interface, who will be informed of progress.
scoped_refptr<Client> client_;
scoped_refptr<base::MessageLoopProxy> client_message_loop_proxy_;

Powered by Google App Engine
This is Rietveld 408576698