OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ | 5 #ifndef REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ |
6 #define REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ | 6 #define REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ |
7 | 7 |
8 #include <queue> | 8 #include <queue> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 GetConfigCallback; | 79 GetConfigCallback; |
80 | 80 |
81 // Callback used for asynchronous operations, e.g. when | 81 // Callback used for asynchronous operations, e.g. when |
82 // starting/stopping the service. | 82 // starting/stopping the service. |
83 typedef base::Callback<void (AsyncResult result)> CompletionCallback; | 83 typedef base::Callback<void (AsyncResult result)> CompletionCallback; |
84 | 84 |
85 // Callback type for GetVersion(). | 85 // Callback type for GetVersion(). |
86 typedef base::Callback<void (const std::string&)> GetVersionCallback; | 86 typedef base::Callback<void (const std::string&)> GetVersionCallback; |
87 | 87 |
88 struct UsageStatsConsent { | 88 struct UsageStatsConsent { |
| 89 // Indicates whether crash dump reporting is supported by the host. |
89 bool supported; | 90 bool supported; |
| 91 |
| 92 // Indicates if crash dump reporting is allowed by the user. |
90 bool allowed; | 93 bool allowed; |
| 94 |
| 95 // Carries information whether the crash dump reporting is controlled by |
| 96 // policy. |
91 bool set_by_policy; | 97 bool set_by_policy; |
92 }; | 98 }; |
93 | 99 |
94 // Callback type for GetUsageStatsConsent(). |supported| indicates whether | 100 // Callback type for GetUsageStatsConsent(). |
95 // crash dump reporting is supported by the host. |allowed| indicates if | |
96 // crash dump reporting is allowed by the user. |set_by_policy| carries | |
97 // information whether the crash dump reporting is controlled by policy. | |
98 typedef base::Callback<void (const UsageStatsConsent&)> | 101 typedef base::Callback<void (const UsageStatsConsent&)> |
99 GetUsageStatsConsentCallback; | 102 GetUsageStatsConsentCallback; |
100 | 103 |
101 // Interface representing the platform-spacific back-end. Most of its methods | 104 // Interface representing the platform-spacific back-end. Most of its methods |
102 // are blocking and should called on a background thread. There are two | 105 // are blocking and should called on a background thread. There are two |
103 // exceptions: | 106 // exceptions: |
104 // - GetState() is synchronous and called on the UI thread. It should avoid | 107 // - GetState() is synchronous and called on the UI thread. It should avoid |
105 // accessing any data members of the implementation. | 108 // accessing any data members of the implementation. |
106 // - SetConfigAndStart() is non blocking. |done| callback is posted to | 109 // - SetConfigAndStart(), UpdateConfig() and Stop() indicate completion via |
107 // |task_runner| when the operation completes. | 110 // a callback. There methods are still can be long running and should |
| 111 // be caled on a background thread. |
108 class Delegate { | 112 class Delegate { |
109 public: | 113 public: |
110 virtual ~Delegate() {} | 114 virtual ~Delegate() {} |
111 | 115 |
112 // Return the "installed/running" state of the daemon process. This method | 116 // Return the "installed/running" state of the daemon process. This method |
113 // should avoid accessing any data members of the implementation. | 117 // should avoid accessing any data members of the implementation. |
114 virtual State GetState() = 0; | 118 virtual State GetState() = 0; |
115 | 119 |
116 // Queries current host configuration. Any values that might be security | 120 // Queries current host configuration. Any values that might be security |
117 // sensitive have been filtered out. | 121 // sensitive have been filtered out. |
118 virtual scoped_ptr<base::DictionaryValue> GetConfig() = 0; | 122 virtual scoped_ptr<base::DictionaryValue> GetConfig() = 0; |
119 | 123 |
120 // Starts the daemon process. This may require that the daemon be | 124 // Starts the daemon process. This may require that the daemon be |
121 // downloaded and installed. |done| is invoked when the operation is | 125 // downloaded and installed. |done| is invoked on the calling thread when |
122 // finished or fails. | 126 // the operation is completed. |
123 virtual void SetConfigAndStart( | 127 virtual void SetConfigAndStart( |
124 scoped_ptr<base::DictionaryValue> config, | 128 scoped_ptr<base::DictionaryValue> config, |
125 bool consent, | 129 bool consent, |
126 const CompletionCallback& done) = 0; | 130 const CompletionCallback& done) = 0; |
127 | 131 |
128 // Updates current host configuration with the values specified in | 132 // Updates current host configuration with the values specified in |
129 // |config|. Any value in the existing configuration that isn't specified in | 133 // |config|. Any value in the existing configuration that isn't specified in |
130 // |config| is preserved. |config| must not contain host_id or xmpp_login | 134 // |config| is preserved. |config| must not contain host_id or xmpp_login |
131 // values, because implementations of this method cannot change them. | 135 // values, because implementations of this method cannot change them. |done| |
| 136 // is invoked on the calling thread when the operation is completed. |
132 virtual void UpdateConfig( | 137 virtual void UpdateConfig( |
133 scoped_ptr<base::DictionaryValue> config, | 138 scoped_ptr<base::DictionaryValue> config, |
134 const CompletionCallback& done) = 0; | 139 const CompletionCallback& done) = 0; |
135 | 140 |
136 // Stops the daemon process. | 141 // Stops the daemon process. |done| is invoked on the calling thread when |
| 142 // the operation is completed. |
137 virtual void Stop(const CompletionCallback& done) = 0; | 143 virtual void Stop(const CompletionCallback& done) = 0; |
138 | 144 |
139 // Caches the native handle of the plugin window so it can be used to focus | 145 // Caches the native handle of the plugin window so it can be used to focus |
140 // elevation prompts properly. | 146 // elevation prompts properly. |
141 virtual void SetWindow(void* window_handle) = 0; | 147 virtual void SetWindow(void* window_handle) = 0; |
142 | 148 |
143 // Get the version of the daemon as a dotted decimal string of the form | 149 // Get the version of the daemon as a dotted decimal string of the form |
144 // major.minor.build.patch, if it is installed, or "" otherwise. | 150 // major.minor.build.patch, if it is installed, or "" otherwise. |
145 virtual std::string GetVersion() = 0; | 151 virtual std::string GetVersion() = 0; |
146 | 152 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 | 243 |
238 // Queue management methods. | 244 // Queue management methods. |
239 void ScheduleNext(); | 245 void ScheduleNext(); |
240 void ServiceOrQueueRequest(const base::Closure& request); | 246 void ServiceOrQueueRequest(const base::Closure& request); |
241 void ServiceNextRequest(); | 247 void ServiceNextRequest(); |
242 | 248 |
243 // Task runner on which all public methods of this class should be called. | 249 // Task runner on which all public methods of this class should be called. |
244 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; | 250 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; |
245 | 251 |
246 // Task runner used to run blocking calls to the delegate. A single thread | 252 // Task runner used to run blocking calls to the delegate. A single thread |
247 // task runner is used to guarantee that one one method of the delegate is | 253 // task runner is used to guarantee that one method of the delegate is |
248 // called at a time. | 254 // called at a time. |
249 scoped_refptr<AutoThreadTaskRunner> delegate_task_runner_; | 255 scoped_refptr<AutoThreadTaskRunner> delegate_task_runner_; |
250 | 256 |
251 scoped_ptr<AutoThread> delegate_thread_; | 257 scoped_ptr<AutoThread> delegate_thread_; |
252 | 258 |
253 scoped_ptr<Delegate> delegate_; | 259 scoped_ptr<Delegate> delegate_; |
254 | 260 |
255 std::queue<base::Closure> pending_requests_; | 261 std::queue<base::Closure> pending_requests_; |
256 | 262 |
257 DISALLOW_COPY_AND_ASSIGN(DaemonController); | 263 DISALLOW_COPY_AND_ASSIGN(DaemonController); |
258 }; | 264 }; |
259 | 265 |
260 } // namespace remoting | 266 } // namespace remoting |
261 | 267 |
262 #endif // REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ | 268 #endif // REMOTING_HOST_SETUP_DAEMON_CONTROLLER_H_ |
OLD | NEW |