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 "chromeos/dbus/update_engine_client.h" | 5 #include "chromeos/dbus/update_engine_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "dbus/bus.h" | 10 #include "dbus/bus.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 update_engine::kRebootIfNeeded); | 125 update_engine::kRebootIfNeeded); |
126 | 126 |
127 VLOG(1) << "Requesting a reboot"; | 127 VLOG(1) << "Requesting a reboot"; |
128 update_engine_proxy_->CallMethod( | 128 update_engine_proxy_->CallMethod( |
129 &method_call, | 129 &method_call, |
130 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 130 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
131 base::Bind(&UpdateEngineClientImpl::OnRebootAfterUpdate, | 131 base::Bind(&UpdateEngineClientImpl::OnRebootAfterUpdate, |
132 weak_ptr_factory_.GetWeakPtr())); | 132 weak_ptr_factory_.GetWeakPtr())); |
133 } | 133 } |
134 | 134 |
135 virtual void SetReleaseTrack(const std::string& track) OVERRIDE { | |
136 dbus::MethodCall method_call( | |
137 update_engine::kUpdateEngineInterface, | |
138 update_engine::kSetTrack); | |
139 dbus::MessageWriter writer(&method_call); | |
140 writer.AppendString(track); | |
141 | |
142 VLOG(1) << "Requesting to set the release track to " << track; | |
143 update_engine_proxy_->CallMethod( | |
144 &method_call, | |
145 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
146 base::Bind(&UpdateEngineClientImpl::OnSetReleaseTrack, | |
147 weak_ptr_factory_.GetWeakPtr())); | |
148 } | |
149 | |
150 virtual void GetReleaseTrack( | |
151 const GetReleaseTrackCallback& callback) OVERRIDE { | |
152 dbus::MethodCall method_call( | |
153 update_engine::kUpdateEngineInterface, | |
154 update_engine::kGetTrack); | |
155 | |
156 VLOG(1) << "Requesting to get the current release track"; | |
157 update_engine_proxy_->CallMethod( | |
158 &method_call, | |
159 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
160 base::Bind(&UpdateEngineClientImpl::OnGetReleaseTrack, | |
161 weak_ptr_factory_.GetWeakPtr(), | |
162 callback)); | |
163 } | |
164 | |
165 virtual Status GetLastStatus() OVERRIDE { | 135 virtual Status GetLastStatus() OVERRIDE { |
166 return last_status_; | 136 return last_status_; |
167 } | 137 } |
168 | 138 |
169 virtual void SetChannel(const std::string& target_channel, | 139 virtual void SetChannel(const std::string& target_channel, |
170 bool is_powerwash_allowed) OVERRIDE { | 140 bool is_powerwash_allowed) OVERRIDE { |
171 if (!IsValidChannel(target_channel)) { | 141 if (!IsValidChannel(target_channel)) { |
172 LOG(ERROR) << "Invalid channel name: " << target_channel; | 142 LOG(ERROR) << "Invalid channel name: " << target_channel; |
173 return; | 143 return; |
174 } | 144 } |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 } | 204 } |
235 | 205 |
236 // Called when a response for RebootAfterUpdate() is received. | 206 // Called when a response for RebootAfterUpdate() is received. |
237 void OnRebootAfterUpdate(dbus::Response* response) { | 207 void OnRebootAfterUpdate(dbus::Response* response) { |
238 if (!response) { | 208 if (!response) { |
239 LOG(ERROR) << "Failed to request rebooting after update"; | 209 LOG(ERROR) << "Failed to request rebooting after update"; |
240 return; | 210 return; |
241 } | 211 } |
242 } | 212 } |
243 | 213 |
244 // Called when a response for SetReleaseTrack() is received. | |
245 void OnSetReleaseTrack(dbus::Response* response) { | |
246 if (!response) { | |
247 LOG(ERROR) << "Failed to request setting release track"; | |
248 return; | |
249 } | |
250 } | |
251 | |
252 // Called when a response for GetReleaseTrack() is received. | |
253 void OnGetReleaseTrack(const GetReleaseTrackCallback& callback, | |
254 dbus::Response* response) { | |
255 if (!response) { | |
256 LOG(ERROR) << "Failed to request getting release track"; | |
257 callback.Run(""); | |
258 return; | |
259 } | |
260 dbus::MessageReader reader(response); | |
261 std::string release_track; | |
262 if (!reader.PopString(&release_track)) { | |
263 LOG(ERROR) << "Incorrect response: " << response->ToString(); | |
264 callback.Run(""); | |
265 return; | |
266 } | |
267 VLOG(1) << "The current release track received: " << release_track; | |
268 callback.Run(release_track); | |
269 } | |
270 | |
271 // Called when a response for GetStatus is received. | 214 // Called when a response for GetStatus is received. |
272 void OnGetStatus(dbus::Response* response) { | 215 void OnGetStatus(dbus::Response* response) { |
273 if (!response) { | 216 if (!response) { |
274 LOG(ERROR) << "Failed to get response for GetStatus request."; | 217 LOG(ERROR) << "Failed to get response for GetStatus request."; |
275 return; | 218 return; |
276 } | 219 } |
277 | 220 |
278 dbus::MessageReader reader(response); | 221 dbus::MessageReader reader(response); |
279 std::string current_operation; | 222 std::string current_operation; |
280 Status status; | 223 Status status; |
281 if (!(reader.PopInt64(&status.last_checked_time) && | 224 if (!(reader.PopInt64(&status.last_checked_time) && |
282 reader.PopDouble(&status.download_progress) && | 225 reader.PopDouble(&status.download_progress) && |
283 reader.PopString(¤t_operation) && | 226 reader.PopString(¤t_operation) && |
284 reader.PopString(&status.new_version) && | 227 reader.PopString(&status.new_version) && |
285 reader.PopInt64(&status.new_size))) { | 228 reader.PopInt64(&status.new_size))) { |
286 LOG(ERROR) << "GetStatus had incorrect response: " | 229 LOG(ERROR) << "GetStatus had incorrect response: " |
287 << response->ToString(); | 230 << response->ToString(); |
288 return; | 231 return; |
289 } | 232 } |
290 status.status = UpdateStatusFromString(current_operation); | 233 status.status = UpdateStatusFromString(current_operation); |
291 last_status_ = status; | 234 last_status_ = status; |
292 FOR_EACH_OBSERVER(Observer, observers_, UpdateStatusChanged(status)); | 235 FOR_EACH_OBSERVER(Observer, observers_, UpdateStatusChanged(status)); |
293 } | 236 } |
294 | 237 |
295 // Called when GetStatus call failed. | 238 // Called when GetStatus call failed. |
296 void OnGetStatusError(dbus::ErrorResponse* error) { | 239 void OnGetStatusError(dbus::ErrorResponse* error) { |
297 LOG(ERROR) << "GetStatus request failed with error: " << error->ToString(); | 240 LOG(ERROR) << "GetStatus request failed with error: " << error->ToString(); |
298 } | 241 } |
299 | 242 |
300 // Called when a response for SetReleaseTrack() is received. | 243 // Called when a response for SetReleaseChannel() is received. |
301 void OnSetChannel(dbus::Response* response) { | 244 void OnSetChannel(dbus::Response* response) { |
302 if (!response) { | 245 if (!response) { |
303 LOG(ERROR) << "Failed to request setting channel"; | 246 LOG(ERROR) << "Failed to request setting channel"; |
304 return; | 247 return; |
305 } | 248 } |
306 VLOG(1) << "Succeeded to set channel"; | 249 VLOG(1) << "Succeeded to set channel"; |
307 } | 250 } |
308 | 251 |
309 // Called when a response for GetChannel() is received. | 252 // Called when a response for GetChannel() is received. |
310 void OnGetChannel(const GetReleaseTrackCallback& callback, | 253 void OnGetChannel(const GetChannelCallback& callback, |
311 dbus::Response* response) { | 254 dbus::Response* response) { |
312 if (!response) { | 255 if (!response) { |
313 LOG(ERROR) << "Failed to request getting channel"; | 256 LOG(ERROR) << "Failed to request getting channel"; |
314 callback.Run(""); | 257 callback.Run(""); |
315 return; | 258 return; |
316 } | 259 } |
317 dbus::MessageReader reader(response); | 260 dbus::MessageReader reader(response); |
318 std::string channel; | 261 std::string channel; |
319 if (!reader.PopString(&channel)) { | 262 if (!reader.PopString(&channel)) { |
320 LOG(ERROR) << "Incorrect response: " << response->ToString(); | 263 LOG(ERROR) << "Incorrect response: " << response->ToString(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 // UpdateEngineClient implementation: | 322 // UpdateEngineClient implementation: |
380 virtual void AddObserver(Observer* observer) OVERRIDE {} | 323 virtual void AddObserver(Observer* observer) OVERRIDE {} |
381 virtual void RemoveObserver(Observer* observer) OVERRIDE {} | 324 virtual void RemoveObserver(Observer* observer) OVERRIDE {} |
382 virtual bool HasObserver(Observer* observer) OVERRIDE { return false; } | 325 virtual bool HasObserver(Observer* observer) OVERRIDE { return false; } |
383 | 326 |
384 virtual void RequestUpdateCheck( | 327 virtual void RequestUpdateCheck( |
385 const UpdateCheckCallback& callback) OVERRIDE { | 328 const UpdateCheckCallback& callback) OVERRIDE { |
386 callback.Run(UPDATE_RESULT_NOTIMPLEMENTED); | 329 callback.Run(UPDATE_RESULT_NOTIMPLEMENTED); |
387 } | 330 } |
388 virtual void RebootAfterUpdate() OVERRIDE {} | 331 virtual void RebootAfterUpdate() OVERRIDE {} |
389 virtual void SetReleaseTrack(const std::string& track) OVERRIDE {} | |
390 virtual void GetReleaseTrack( | |
391 const GetReleaseTrackCallback& callback) OVERRIDE { | |
392 callback.Run("beta-channel"); | |
393 } | |
394 virtual Status GetLastStatus() OVERRIDE { return Status(); } | 332 virtual Status GetLastStatus() OVERRIDE { return Status(); } |
395 virtual void SetChannel(const std::string& target_channel, | 333 virtual void SetChannel(const std::string& target_channel, |
396 bool is_powerwash_allowed) OVERRIDE { | 334 bool is_powerwash_allowed) OVERRIDE { |
397 LOG(INFO) << "Requesting to set channel: " | 335 LOG(INFO) << "Requesting to set channel: " |
398 << "target_channel=" << target_channel << ", " | 336 << "target_channel=" << target_channel << ", " |
399 << "is_powerwash_allowed=" << is_powerwash_allowed; | 337 << "is_powerwash_allowed=" << is_powerwash_allowed; |
400 } | 338 } |
401 virtual void GetChannel(bool get_current_channel, | 339 virtual void GetChannel(bool get_current_channel, |
402 const GetChannelCallback& callback) OVERRIDE { | 340 const GetChannelCallback& callback) OVERRIDE { |
403 LOG(INFO) << "Requesting to get channel, get_current_channel=" | 341 LOG(INFO) << "Requesting to get channel, get_current_channel=" |
(...skipping 18 matching lines...) Expand all Loading... |
422 UpdateEngineClient* UpdateEngineClient::Create( | 360 UpdateEngineClient* UpdateEngineClient::Create( |
423 DBusClientImplementationType type, | 361 DBusClientImplementationType type, |
424 dbus::Bus* bus) { | 362 dbus::Bus* bus) { |
425 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 363 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
426 return new UpdateEngineClientImpl(bus); | 364 return new UpdateEngineClientImpl(bus); |
427 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); | 365 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); |
428 return new UpdateEngineClientStubImpl(); | 366 return new UpdateEngineClientStubImpl(); |
429 } | 367 } |
430 | 368 |
431 } // namespace chromeos | 369 } // namespace chromeos |
OLD | NEW |