Chromium Code Reviews| Index: remoting/host/setup/daemon_controller.cc |
| diff --git a/remoting/host/setup/daemon_controller.cc b/remoting/host/setup/daemon_controller.cc |
| index dd413b4663aba176c78d352d4f934cf9fe9728fe..6ddb03ba3fbd0c62966a5e1ed5d113d71858fa56 100644 |
| --- a/remoting/host/setup/daemon_controller.cc |
| +++ b/remoting/host/setup/daemon_controller.cc |
| @@ -50,36 +50,45 @@ void DaemonController::GetConfig(const GetConfigCallback& done) { |
| void DaemonController::SetConfigAndStart( |
| scoped_ptr<base::DictionaryValue> config, |
| bool consent, |
| - const CompletionCallback& done) { |
| + const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| - DaemonController::CompletionCallback wrapped_done = base::Bind( |
| - &DaemonController::InvokeCompletionCallbackAndScheduleNext, this, done); |
| + base::Closure wrapped_on_done = base::Bind( |
| + &DaemonController::InvokeSuccessCallbackAndScheduleNext, this, on_done); |
| + DaemonController::ErrorCallback wrapped_on_error = base::Bind( |
| + &DaemonController::InvokeErrorCallbackAndScheduleNext, this, on_error); |
|
Sergey Ulanov
2015/08/08 00:57:09
Do we need separate on_done and on_error cases? I
|
| base::Closure request = base::Bind( |
| &DaemonController::DoSetConfigAndStart, this, base::Passed(&config), |
| - consent, wrapped_done); |
| + consent, wrapped_on_done, wrapped_on_error); |
| ServiceOrQueueRequest(request); |
| } |
| void DaemonController::UpdateConfig(scoped_ptr<base::DictionaryValue> config, |
| - const CompletionCallback& done) { |
| + const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| - DaemonController::CompletionCallback wrapped_done = base::Bind( |
| - &DaemonController::InvokeCompletionCallbackAndScheduleNext, this, done); |
| + base::Closure wrapped_on_done = base::Bind( |
| + &DaemonController::InvokeSuccessCallbackAndScheduleNext, this, on_done); |
| + DaemonController::ErrorCallback wrapped_on_error = base::Bind( |
| + &DaemonController::InvokeErrorCallbackAndScheduleNext, this, on_error); |
| base::Closure request = base::Bind( |
| &DaemonController::DoUpdateConfig, this, base::Passed(&config), |
| - wrapped_done); |
| + wrapped_on_done, wrapped_on_error); |
| ServiceOrQueueRequest(request); |
| } |
| -void DaemonController::Stop(const CompletionCallback& done) { |
| +void DaemonController::Stop(const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| - DaemonController::CompletionCallback wrapped_done = base::Bind( |
| - &DaemonController::InvokeCompletionCallbackAndScheduleNext, this, done); |
| + base::Closure wrapped_on_done = base::Bind( |
| + &DaemonController::InvokeSuccessCallbackAndScheduleNext, this, on_done); |
| + DaemonController::ErrorCallback wrapped_on_error = base::Bind( |
| + &DaemonController::InvokeErrorCallbackAndScheduleNext, this, on_error); |
| base::Closure request = base::Bind( |
| - &DaemonController::DoStop, this, wrapped_done); |
| + &DaemonController::DoStop, this, wrapped_on_done, wrapped_on_error); |
| ServiceOrQueueRequest(request); |
| } |
| @@ -114,24 +123,27 @@ void DaemonController::DoGetConfig(const GetConfigCallback& done) { |
| void DaemonController::DoSetConfigAndStart( |
| scoped_ptr<base::DictionaryValue> config, |
| bool consent, |
| - const CompletionCallback& done) { |
| + const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
| - delegate_->SetConfigAndStart(config.Pass(), consent, done); |
| + delegate_->SetConfigAndStart(config.Pass(), consent, on_done, on_error); |
| } |
| void DaemonController::DoUpdateConfig( |
| scoped_ptr<base::DictionaryValue> config, |
| - const CompletionCallback& done) { |
| + const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
| - delegate_->UpdateConfig(config.Pass(), done); |
| + delegate_->UpdateConfig(config.Pass(), on_done, on_error); |
| } |
| -void DaemonController::DoStop(const CompletionCallback& done) { |
| +void DaemonController::DoStop(const base::Closure& on_done, |
| + const ErrorCallback& on_error) { |
| DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
| - delegate_->Stop(done); |
| + delegate_->Stop(on_done, on_error); |
| } |
| void DaemonController::DoGetUsageStatsConsent( |
| @@ -143,36 +155,51 @@ void DaemonController::DoGetUsageStatsConsent( |
| caller_task_runner_->PostTask(FROM_HERE, base::Bind(done, consent)); |
| } |
| -void DaemonController::InvokeCompletionCallbackAndScheduleNext( |
| - const CompletionCallback& done, |
| - AsyncResult result) { |
| +void DaemonController::InvokeSuccessCallbackAndScheduleNext( |
| + const base::Closure& callback) { |
| if (!caller_task_runner_->BelongsToCurrentThread()) { |
| caller_task_runner_->PostTask( |
| FROM_HERE, |
| - base::Bind(&DaemonController::InvokeCompletionCallbackAndScheduleNext, |
| - this, done, result)); |
| + base::Bind(&DaemonController::InvokeSuccessCallbackAndScheduleNext, |
| + this, callback)); |
| return; |
| } |
| - done.Run(result); |
| + callback.Run(); |
| + ScheduleNext(); |
| +} |
| + |
| +void DaemonController::InvokeErrorCallbackAndScheduleNext( |
| + const ErrorCallback& callback, |
| + const std::string& error_message, |
| + const tracked_objects::Location& location) { |
| + if (!caller_task_runner_->BelongsToCurrentThread()) { |
|
Sergey Ulanov
2015/08/08 00:57:09
Delegate interface definition says that the callba
|
| + caller_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&DaemonController::InvokeErrorCallbackAndScheduleNext, |
| + this, callback, error_message, location)); |
| + return; |
| + } |
| + |
| + callback.Run(error_message, location); |
| ScheduleNext(); |
| } |
| void DaemonController::InvokeConfigCallbackAndScheduleNext( |
| - const GetConfigCallback& done, |
| + const GetConfigCallback& callback, |
| scoped_ptr<base::DictionaryValue> config) { |
| DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| - done.Run(config.Pass()); |
| + callback.Run(config.Pass()); |
| ScheduleNext(); |
| } |
| void DaemonController::InvokeConsentCallbackAndScheduleNext( |
| - const GetUsageStatsConsentCallback& done, |
| + const GetUsageStatsConsentCallback& callback, |
| const UsageStatsConsent& consent) { |
| DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| - done.Run(consent); |
| + callback.Run(consent); |
| ScheduleNext(); |
| } |