| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_COMMON_CHILD_PROCESS_H__ | 5 #ifndef CHROME_COMMON_CHILD_PROCESS_H__ |
| 6 #define CHROME_COMMON_CHILD_PROCESS_H__ | 6 #define CHROME_COMMON_CHILD_PROCESS_H__ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
| 12 | 12 |
| 13 namespace base { |
| 14 class WaitableEvent; |
| 15 }; |
| 13 | 16 |
| 14 class ChildProcess; | 17 class ChildProcess; |
| 15 | 18 |
| 16 class ChildProcessFactoryInterface { | 19 class ChildProcessFactoryInterface { |
| 17 public: | 20 public: |
| 18 virtual ChildProcess* Create(const std::wstring& channel_name) = 0; | 21 virtual ChildProcess* Create(const std::wstring& channel_name) = 0; |
| 19 }; | 22 }; |
| 20 | 23 |
| 21 template<class T> | 24 template<class T> |
| 22 class ChildProcessFactory : public ChildProcessFactoryInterface { | 25 class ChildProcessFactory : public ChildProcessFactoryInterface { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 46 | 49 |
| 47 // A global event object that is signalled when the main thread's message | 50 // A global event object that is signalled when the main thread's message |
| 48 // loop exits. This gives background threads a way to observe the main | 51 // loop exits. This gives background threads a way to observe the main |
| 49 // thread shutting down. This can be useful when a background thread is | 52 // thread shutting down. This can be useful when a background thread is |
| 50 // waiting for some information from the browser process. If the browser | 53 // waiting for some information from the browser process. If the browser |
| 51 // process goes away prematurely, the background thread can at least notice | 54 // process goes away prematurely, the background thread can at least notice |
| 52 // the child processes's main thread exiting to determine that it should give | 55 // the child processes's main thread exiting to determine that it should give |
| 53 // up waiting. | 56 // up waiting. |
| 54 // For example, see the renderer code used to implement | 57 // For example, see the renderer code used to implement |
| 55 // webkit_glue::GetCookies. | 58 // webkit_glue::GetCookies. |
| 56 static HANDLE GetShutDownEvent(); | 59 static base::WaitableEvent* GetShutDownEvent(); |
| 57 | 60 |
| 58 // You must call Init after creating this object before it will be valid | 61 // You must call Init after creating this object before it will be valid |
| 59 ChildProcess(); | 62 ChildProcess(); |
| 60 virtual ~ChildProcess(); | 63 virtual ~ChildProcess(); |
| 61 | 64 |
| 62 protected: | 65 protected: |
| 63 static bool GlobalInit(const std::wstring& channel_name, | 66 static bool GlobalInit(const std::wstring& channel_name, |
| 64 ChildProcessFactoryInterface* factory); | 67 ChildProcessFactoryInterface* factory); |
| 65 | 68 |
| 66 static bool ProcessRefCountIsZero(); | 69 static bool ProcessRefCountIsZero(); |
| 67 | 70 |
| 68 // The singleton instance for this process. | 71 // The singleton instance for this process. |
| 69 static ChildProcess* child_process_; | 72 static ChildProcess* child_process_; |
| 70 | 73 |
| 71 static MessageLoop* main_thread_loop_; | 74 static MessageLoop* main_thread_loop_; |
| 72 | 75 |
| 73 // Derived classes can override this to alter the behavior when the ref count | 76 // Derived classes can override this to alter the behavior when the ref count |
| 74 // reaches 0. The default implementation calls Quit on the main message loop | 77 // reaches 0. The default implementation calls Quit on the main message loop |
| 75 // which causes the process to shutdown. Note, this can be called on any | 78 // which causes the process to shutdown. Note, this can be called on any |
| 76 // thread. (See ReleaseProcess) | 79 // thread. (See ReleaseProcess) |
| 77 virtual void OnFinalRelease(); | 80 virtual void OnFinalRelease(); |
| 78 | 81 |
| 79 private: | 82 private: |
| 80 // Derived classes can override this to handle any cleanup, called by | 83 // Derived classes can override this to handle any cleanup, called by |
| 81 // GlobalCleanup. | 84 // GlobalCleanup. |
| 82 virtual void Cleanup() {} | 85 virtual void Cleanup() {} |
| 83 static HANDLE shutdown_event_; | 86 static base::WaitableEvent* shutdown_event_; |
| 84 | 87 |
| 85 DISALLOW_EVIL_CONSTRUCTORS(ChildProcess); | 88 DISALLOW_EVIL_CONSTRUCTORS(ChildProcess); |
| 86 }; | 89 }; |
| 87 | 90 |
| 88 #endif // CHROME_COMMON_CHILD_PROCESS_H__ | 91 #endif // CHROME_COMMON_CHILD_PROCESS_H__ |
| 89 | 92 |
| OLD | NEW |