diff options
Diffstat (limited to 'ui/viewer/viewer_process.h')
-rw-r--r-- | ui/viewer/viewer_process.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/ui/viewer/viewer_process.h b/ui/viewer/viewer_process.h new file mode 100644 index 0000000..6e80620 --- /dev/null +++ b/ui/viewer/viewer_process.h @@ -0,0 +1,69 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_VIEWER_VIEWER_PROCESS_H_ +#define UI_VIEWER_VIEWER_PROCESS_H_ + +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "base/message_loop_proxy.h" +#include "base/synchronization/waitable_event.h" +#include "base/threading/thread.h" + +class CommandLine; +class ViewerHostWin; +class ViewerIPCServer; + +// The ViewerProcess does not inherit from ChildProcess because this +// process can live independently of the browser process. +class ViewerProcess { + public: + ViewerProcess(); + virtual ~ViewerProcess(); + + // Initialize the ViewerProcess with the message loop that it should run on. + // ViewerProcess takes ownership of |state|. + bool Initialize(MessageLoop* message_loop, const CommandLine& command_line); + + bool Teardown(); + + // Returns the message loop that we perform I/O coordination on (network + // requests, communication with renderers, etc.). + scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy() { + return io_thread_->message_loop_proxy(); + } + + // A global event object that is signalled when the main thread's message + // loop exits. This gives background threads a way to observe the main + // thread shutting down. + base::WaitableEvent* shutdown_event() { + return &shutdown_event_; + } + + // Called by the IPC server when a client disconnects. A return value of + // true indicates that the IPC server should continue listening for new + // connections. + bool HandleClientDisconnect(); + + void Terminate(); + + private: + scoped_ptr<base::Thread> io_thread_; + scoped_ptr<ViewerIPCServer> ipc_server_; + + // An event that will be signalled when we shutdown. + base::WaitableEvent shutdown_event_; + + // Window that we draw into. + scoped_ptr<ViewerHostWin> viewer_host_win_; + + // Pointer to the main message loop that host this object. + MessageLoop* main_message_loop_; + + DISALLOW_COPY_AND_ASSIGN(ViewerProcess); +}; + +extern ViewerProcess* g_viewer_process; + +#endif // UI_VIEWER_VIEWER_PROCESS_H_ |