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 #include "remoting/host/setup/host_starter.h" | 5 #include "remoting/host/setup/host_starter.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/guid.h" | 9 #include "base/guid.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 config->SetString("host_owner", host_owner_); | 164 config->SetString("host_owner", host_owner_); |
165 } | 165 } |
166 config->SetString("xmpp_login", xmpp_login_); | 166 config->SetString("xmpp_login", xmpp_login_); |
167 config->SetString("oauth_refresh_token", refresh_token_); | 167 config->SetString("oauth_refresh_token", refresh_token_); |
168 config->SetString("host_id", host_id_); | 168 config->SetString("host_id", host_id_); |
169 config->SetString("host_name", host_name_); | 169 config->SetString("host_name", host_name_); |
170 config->SetString("private_key", key_pair_->ToString()); | 170 config->SetString("private_key", key_pair_->ToString()); |
171 config->SetString("host_secret_hash", host_secret_hash); | 171 config->SetString("host_secret_hash", host_secret_hash); |
172 daemon_controller_->SetConfigAndStart( | 172 daemon_controller_->SetConfigAndStart( |
173 config.Pass(), consent_to_data_collection_, | 173 config.Pass(), consent_to_data_collection_, |
174 base::Bind(&HostStarter::OnHostStarted, base::Unretained(this))); | 174 base::Bind(&HostStarter::OnStartHostSucceeded, base::Unretained(this)), |
| 175 base::Bind(&HostStarter::OnStartHostFailed, base::Unretained(this))); |
175 } | 176 } |
176 | 177 |
177 void HostStarter::OnHostStarted(DaemonController::AsyncResult result) { | 178 void HostStarter::OnStartHostSucceeded() { |
178 if (!main_task_runner_->BelongsToCurrentThread()) { | 179 if (!main_task_runner_->BelongsToCurrentThread()) { |
179 main_task_runner_->PostTask(FROM_HERE, base::Bind( | 180 main_task_runner_->PostTask(FROM_HERE, base::Bind( |
180 &HostStarter::OnHostStarted, weak_ptr_, result)); | 181 &HostStarter::OnStartHostSucceeded, weak_ptr_)); |
181 return; | |
182 } | |
183 if (result != DaemonController::RESULT_OK) { | |
184 unregistering_host_ = true; | |
185 service_client_->UnregisterHost(host_id_, access_token_, this); | |
186 return; | 182 return; |
187 } | 183 } |
188 base::ResetAndReturn(&on_done_).Run(START_COMPLETE); | 184 base::ResetAndReturn(&on_done_).Run(START_COMPLETE); |
189 } | 185 } |
190 | 186 |
| 187 void HostStarter::OnStartHostFailed(const std::string& error_message, |
| 188 const tracked_objects::Location& location) { |
| 189 if (!main_task_runner_->BelongsToCurrentThread()) { |
| 190 main_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 191 &HostStarter::OnStartHostFailed, weak_ptr_, error_message, location)); |
| 192 return; |
| 193 } |
| 194 |
| 195 // start_host is a command-line tool, so the error has already been reported. |
| 196 unregistering_host_ = true; |
| 197 service_client_->UnregisterHost(host_id_, access_token_, this); |
| 198 } |
| 199 |
191 void HostStarter::OnOAuthError() { | 200 void HostStarter::OnOAuthError() { |
192 if (!main_task_runner_->BelongsToCurrentThread()) { | 201 if (!main_task_runner_->BelongsToCurrentThread()) { |
193 main_task_runner_->PostTask(FROM_HERE, base::Bind( | 202 main_task_runner_->PostTask(FROM_HERE, base::Bind( |
194 &HostStarter::OnOAuthError, weak_ptr_)); | 203 &HostStarter::OnOAuthError, weak_ptr_)); |
195 return; | 204 return; |
196 } | 205 } |
197 if (unregistering_host_) { | 206 if (unregistering_host_) { |
198 LOG(ERROR) << "OAuth error occurred when unregistering host."; | 207 LOG(ERROR) << "OAuth error occurred when unregistering host."; |
199 } | 208 } |
200 | 209 |
(...skipping 18 matching lines...) Expand all Loading... |
219 void HostStarter::OnHostUnregistered() { | 228 void HostStarter::OnHostUnregistered() { |
220 if (!main_task_runner_->BelongsToCurrentThread()) { | 229 if (!main_task_runner_->BelongsToCurrentThread()) { |
221 main_task_runner_->PostTask(FROM_HERE, base::Bind( | 230 main_task_runner_->PostTask(FROM_HERE, base::Bind( |
222 &HostStarter::OnHostUnregistered, weak_ptr_)); | 231 &HostStarter::OnHostUnregistered, weak_ptr_)); |
223 return; | 232 return; |
224 } | 233 } |
225 base::ResetAndReturn(&on_done_).Run(START_ERROR); | 234 base::ResetAndReturn(&on_done_).Run(START_ERROR); |
226 } | 235 } |
227 | 236 |
228 } // namespace remoting | 237 } // namespace remoting |
OLD | NEW |