| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 // @file | 5 // @file |
| 6 // ExecutorsManager implementation, an object to keep track of the | 6 // ExecutorsManager implementation, an object to keep track of the |
| 7 // CeeeExecutor objects that were instantiated in destination threads. | 7 // CeeeExecutor objects that were instantiated in destination threads. |
| 8 | 8 |
| 9 #ifndef CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ | 9 #ifndef CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ |
| 10 #define CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ | 10 #define CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 // the instance of the Broker object does. | 27 // the instance of the Broker object does. |
| 28 // | 28 // |
| 29 // See the @ref ExecutorsManagerDoc page for more details. | 29 // See the @ref ExecutorsManagerDoc page for more details. |
| 30 | 30 |
| 31 // Manages a map of destination threads to CeeeExecutor interfaces. | 31 // Manages a map of destination threads to CeeeExecutor interfaces. |
| 32 class ExecutorsManager { | 32 class ExecutorsManager { |
| 33 public: | 33 public: |
| 34 // Identifiers for destination threads where to run executors. | 34 // Identifiers for destination threads where to run executors. |
| 35 typedef DWORD ThreadId; | 35 typedef DWORD ThreadId; |
| 36 | 36 |
| 37 // Returns the singleton instance. |
| 38 static ExecutorsManager* GetInstance(); |
| 39 |
| 37 // To avoid lint errors, even though we are only virtual for unittests. | 40 // To avoid lint errors, even though we are only virtual for unittests. |
| 38 virtual ~ExecutorsManager() {} | 41 virtual ~ExecutorsManager() {} |
| 39 | 42 |
| 40 // Temporary until we have a better structure to recognize known windows. | 43 // Temporary until we have a better structure to recognize known windows. |
| 41 // TODO(mad@chromium.org): Find a better structure. | 44 // TODO(mad@chromium.org): Find a better structure. |
| 42 static bool IsKnownWindow(HWND window); | 45 static bool IsKnownWindow(HWND window); |
| 43 virtual bool IsKnownWindowImpl(HWND window); | 46 virtual bool IsKnownWindowImpl(HWND window); |
| 44 static HWND FindTabChild(HWND window); | 47 static HWND FindTabChild(HWND window); |
| 45 virtual HWND FindTabChildImpl(HWND window); | 48 virtual HWND FindTabChildImpl(HWND window); |
| 46 | 49 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 // Register the relation between a tool band tab ID and an HWND. | 121 // Register the relation between a tool band tab ID and an HWND. |
| 119 virtual void SetTabToolBandIdForHandle(int tool_band_id, HWND tab_handle); | 122 virtual void SetTabToolBandIdForHandle(int tool_band_id, HWND tab_handle); |
| 120 | 123 |
| 121 // Unregister the HWND and its corresponding tab ID and tool band tab ID. | 124 // Unregister the HWND and its corresponding tab ID and tool band tab ID. |
| 122 virtual void DeleteTabHandle(HWND handle); | 125 virtual void DeleteTabHandle(HWND handle); |
| 123 | 126 |
| 124 // Cleans up the maps from all handles that would be associated to the given | 127 // Cleans up the maps from all handles that would be associated to the given |
| 125 // thread id. | 128 // thread id. |
| 126 virtual void CleanupMapsForThread(DWORD thread_id); | 129 virtual void CleanupMapsForThread(DWORD thread_id); |
| 127 | 130 |
| 131 protected: |
| 128 // Traits for Singleton<ExecutorsManager> so that we can pass an argument | 132 // Traits for Singleton<ExecutorsManager> so that we can pass an argument |
| 129 // to the constructor. | 133 // to the constructor. |
| 130 struct SingletonTraits : public DefaultSingletonTraits<ExecutorsManager> { | 134 struct SingletonTraits : public DefaultSingletonTraits<ExecutorsManager> { |
| 131 static ExecutorsManager* New() { | 135 static ExecutorsManager* New() { |
| 132 if (test_instance_) | 136 if (test_instance_) |
| 133 return test_instance_; | 137 return test_instance_; |
| 134 else | 138 else |
| 135 return new ExecutorsManager(false); // By default, we want a thread. | 139 return new ExecutorsManager(false); // By default, we want a thread. |
| 136 } | 140 } |
| 137 }; | 141 }; |
| 138 | 142 |
| 139 protected: | |
| 140 // The data we pass to start our worker thread. | 143 // The data we pass to start our worker thread. |
| 141 // THERE IS A COPY OF THIS CLASS IN THE UNITTEST WHICH YOU NEED TO UPDATE IF | 144 // THERE IS A COPY OF THIS CLASS IN THE UNITTEST WHICH YOU NEED TO UPDATE IF |
| 142 // you change this one... | 145 // you change this one... |
| 143 struct ThreadStartData { | 146 struct ThreadStartData { |
| 144 ExecutorsManager* me; | 147 ExecutorsManager* me; |
| 145 CHandle thread_started_gate; | 148 CHandle thread_started_gate; |
| 146 }; | 149 }; |
| 147 | 150 |
| 148 // A structures holding on the info about an executor and thread it runs in. | 151 // A structures holding on the info about an executor and thread it runs in. |
| 149 struct ExecutorInfo { | 152 struct ExecutorInfo { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 return windows_events_funnel_; | 260 return windows_events_funnel_; |
| 258 } | 261 } |
| 259 | 262 |
| 260 // Test seam too. | 263 // Test seam too. |
| 261 static ExecutorsManager* test_instance_; | 264 static ExecutorsManager* test_instance_; |
| 262 | 265 |
| 263 DISALLOW_COPY_AND_ASSIGN(ExecutorsManager); | 266 DISALLOW_COPY_AND_ASSIGN(ExecutorsManager); |
| 264 }; | 267 }; |
| 265 | 268 |
| 266 #endif // CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ | 269 #endif // CEEE_IE_BROKER_EXECUTORS_MANAGER_H_ |
| OLD | NEW |