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

Unified Diff: remoting/host/setup/daemon_controller.h

Issue 1272833002: Pass error messages from native messaging to web-app. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 5 years, 4 months 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
« no previous file with comments | « no previous file | remoting/host/setup/daemon_controller.cc » ('j') | remoting/host/setup/daemon_controller.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/setup/daemon_controller.h
diff --git a/remoting/host/setup/daemon_controller.h b/remoting/host/setup/daemon_controller.h
index 9bc3b3323c59336553728c69cf351e0fa97fca83..88d34c1dd3a2726c9f0337102cff3d2be9add4d1 100644
--- a/remoting/host/setup/daemon_controller.h
+++ b/remoting/host/setup/daemon_controller.h
@@ -17,6 +17,10 @@ class DictionaryValue;
class SingleThreadTaskRunner;
} // namespace base
+namespace tracked_objects {
+class Location;
+} // namespace tracked_objects
+
namespace remoting {
class AutoThread;
@@ -46,24 +50,6 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
STATE_UNKNOWN = 6
};
- // Enum used for completion callback.
- enum AsyncResult {
- RESULT_OK = 0,
-
- // The operation has FAILED.
- RESULT_FAILED = 1,
-
- // User has cancelled the action (e.g. rejected UAC prompt).
- // TODO(sergeyu): Current implementations don't return this value.
- RESULT_CANCELLED = 2,
-
- // Failed to access host directory.
- RESULT_FAILED_DIRECTORY = 3
-
- // TODO(sergeyu): Add more error codes when we know how to handle
- // them in the webapp.
- };
-
// Callback type for GetConfig(). If the host is configured then a dictionary
// is returned containing host_id and xmpp_login, with security-sensitive
// fields filtered out. An empty dictionary is returned if the host is not
@@ -71,9 +57,10 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
typedef base::Callback<void (scoped_ptr<base::DictionaryValue> config)>
GetConfigCallback;
- // Callback used for asynchronous operations, e.g. when
- // starting/stopping the service.
- typedef base::Callback<void (AsyncResult result)> CompletionCallback;
+ // Callback used to indicate failure of an asynchronous operation.
+ typedef base::Callback<void (
+ const std::string& error_message,
+ const tracked_objects::Location& location)> ErrorCallback;
struct UsageStatsConsent {
// Indicates whether crash dump reporting is supported by the host.
@@ -112,25 +99,30 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
virtual scoped_ptr<base::DictionaryValue> GetConfig() = 0;
// Starts the daemon process. This may require that the daemon be
- // downloaded and installed. |done| is invoked on the calling thread when
- // the operation is completed.
+ // downloaded and installed. |on_done| or |on_error| is invoked on
+ // the calling thread when the operation is completed.
virtual void SetConfigAndStart(
scoped_ptr<base::DictionaryValue> config,
bool consent,
- const CompletionCallback& done) = 0;
+ const base::Closure& on_done,
+ const ErrorCallback& on_error) = 0;
// Updates current host configuration with the values specified in
// |config|. Any value in the existing configuration that isn't specified in
// |config| is preserved. |config| must not contain host_id or xmpp_login
- // values, because implementations of this method cannot change them. |done|
- // is invoked on the calling thread when the operation is completed.
+ // values, because implementations of this method cannot change them.
+ // |on_done| or |on_error| is invoked on the calling thread when the
+ // operation is completed.
virtual void UpdateConfig(
scoped_ptr<base::DictionaryValue> config,
- const CompletionCallback& done) = 0;
+ const base::Closure& on_done,
+ const ErrorCallback& on_error) = 0;
- // Stops the daemon process. |done| is invoked on the calling thread when
- // the operation is completed.
- virtual void Stop(const CompletionCallback& done) = 0;
+ // Stops the daemon process. |on_done| or |on_error| is invoked on the
+ // calling thread when the operation is completed.
+ virtual void Stop(
+ const base::Closure& on_done,
+ const ErrorCallback& on_error) = 0;
// Get the user's consent to crash reporting.
virtual UsageStatsConsent GetUsageStatsConsent() = 0;
@@ -163,7 +155,8 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
// working.
void SetConfigAndStart(scoped_ptr<base::DictionaryValue> config,
bool consent,
- const CompletionCallback& done);
+ const base::Closure& on_done,
+ const ErrorCallback& on_error);
// Updates current host configuration with the values specified in
// |config|. Changes must take effect before the call completes.
@@ -171,7 +164,8 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
// is preserved. |config| must not contain host_id or xmpp_login values,
// because implementations of this method cannot change them.
void UpdateConfig(scoped_ptr<base::DictionaryValue> config,
- const CompletionCallback& done);
+ const base::Closure& on_done,
+ const ErrorCallback& on_error);
// Stop the daemon process. It is permitted to call Stop while the daemon
// process is being installed, in which case the installation should be
@@ -179,7 +173,8 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
// daemon process is not started automatically upon successful installation.
// As with Start, Stop may return before the operation is complete--poll
// GetState until the state is STATE_STOPPED.
- void Stop(const CompletionCallback& done);
+ void Stop(const base::Closure& on_done,
+ const ErrorCallback& on_error);
// Get the user's consent to crash reporting.
void GetUsageStatsConsent(const GetUsageStatsConsentCallback& done);
@@ -192,22 +187,28 @@ class DaemonController : public base::RefCountedThreadSafe<DaemonController> {
void DoGetConfig(const GetConfigCallback& done);
void DoSetConfigAndStart(scoped_ptr<base::DictionaryValue> config,
bool consent,
- const CompletionCallback& done);
+ const base::Closure& on_done,
+ const ErrorCallback& on_error);
void DoUpdateConfig(scoped_ptr<base::DictionaryValue> config,
- const CompletionCallback& done);
- void DoStop(const CompletionCallback& done);
+ const base::Closure& on_done,
+ const ErrorCallback& on_error);
+ void DoStop(const base::Closure& on_done,
+ const ErrorCallback& on_error);
void DoGetUsageStatsConsent(const GetUsageStatsConsentCallback& done);
// "Trampoline" callbacks that schedule the next pending request and then
// invoke the original caller-supplied callback.
- void InvokeCompletionCallbackAndScheduleNext(
- const CompletionCallback& done,
- AsyncResult result);
+ void InvokeSuccessCallbackAndScheduleNext(
+ const base::Closure& callback);
+ void InvokeErrorCallbackAndScheduleNext(
+ const ErrorCallback& callback,
+ const std::string& error_message,
+ const tracked_objects::Location& location);
void InvokeConfigCallbackAndScheduleNext(
- const GetConfigCallback& done,
+ const GetConfigCallback& callback,
scoped_ptr<base::DictionaryValue> config);
void InvokeConsentCallbackAndScheduleNext(
- const GetUsageStatsConsentCallback& done,
+ const GetUsageStatsConsentCallback& callback,
const UsageStatsConsent& consent);
// Queue management methods.
« no previous file with comments | « no previous file | remoting/host/setup/daemon_controller.cc » ('j') | remoting/host/setup/daemon_controller.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698