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

Side by Side Diff: chromeos/dbus/biod/biod_client.cc

Issue 2858003002: Roll src/third_party/cros_system_api/ c6eab9e4d..6139ae009 + API change (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/biod/biod_client.h" 5 #include "chromeos/dbus/biod/biod_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/strings/stringprintf.h"
12 #include "chromeos/dbus/biod/fake_biod_client.h" 13 #include "chromeos/dbus/biod/fake_biod_client.h"
14 #include "chromeos/dbus/biod/messages.pb.h"
13 #include "dbus/bus.h" 15 #include "dbus/bus.h"
14 #include "dbus/message.h" 16 #include "dbus/message.h"
15 #include "dbus/object_path.h" 17 #include "dbus/object_path.h"
16 #include "dbus/object_proxy.h" 18 #include "dbus/object_proxy.h"
17 19
18 namespace chromeos { 20 namespace chromeos {
19 21
20 namespace { 22 namespace {
21 23
22 // TODO(xiaoyinh@): Use the constant from service_constants.h
23 // crbug.com/713420
24 const char kBiometricsManagerPath[] =
25 "/org/chromium/BiometricsDaemon/FpcBiometricsManager";
26
27 // D-Bus response handler for methods that use void callbacks. 24 // D-Bus response handler for methods that use void callbacks.
28 void OnVoidResponse(const VoidDBusMethodCallback& callback, 25 void OnVoidResponse(const VoidDBusMethodCallback& callback,
29 dbus::Response* response) { 26 dbus::Response* response) {
30 callback.Run(response ? DBUS_METHOD_CALL_SUCCESS : DBUS_METHOD_CALL_FAILURE); 27 callback.Run(response ? DBUS_METHOD_CALL_SUCCESS : DBUS_METHOD_CALL_FAILURE);
31 } 28 }
32 29
33 } // namespace 30 } // namespace
34 31
35 // The BiodClient implementation used in production. 32 // The BiodClient implementation used in production.
36 class BiodClientImpl : public BiodClient { 33 class BiodClientImpl : public BiodClient {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 record_proxy->CallMethod( 201 record_proxy->CallMethod(
205 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 202 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
206 base::Bind(&BiodClientImpl::OnRequestRecordLabel, 203 base::Bind(&BiodClientImpl::OnRequestRecordLabel,
207 weak_ptr_factory_.GetWeakPtr(), callback)); 204 weak_ptr_factory_.GetWeakPtr(), callback));
208 } 205 }
209 206
210 protected: 207 protected:
211 void Init(dbus::Bus* bus) override { 208 void Init(dbus::Bus* bus) override {
212 bus_ = bus; 209 bus_ = bus;
213 210
214 biod_proxy_ = bus->GetObjectProxy(biod::kBiodServiceName, 211 dbus::ObjectPath fpc_bio_path = dbus::ObjectPath(base::StringPrintf(
215 dbus::ObjectPath(kBiometricsManagerPath)); 212 "%s/%s", biod::kBiodServicePath, biod::kFpcBiometricsManagerName));
213 biod_proxy_ = bus->GetObjectProxy(biod::kBiodServiceName, fpc_bio_path);
216 214
217 biod_proxy_->SetNameOwnerChangedCallback( 215 biod_proxy_->SetNameOwnerChangedCallback(
218 base::Bind(&BiodClientImpl::NameOwnerChangedReceived, 216 base::Bind(&BiodClientImpl::NameOwnerChangedReceived,
219 weak_ptr_factory_.GetWeakPtr())); 217 weak_ptr_factory_.GetWeakPtr()));
220 218
221 biod_proxy_->ConnectToSignal( 219 biod_proxy_->ConnectToSignal(
222 biod::kBiometricsManagerInterface, 220 biod::kBiometricsManagerInterface,
223 biod::kBiometricsManagerEnrollScanDoneSignal, 221 biod::kBiometricsManagerEnrollScanDoneSignal,
224 base::Bind(&BiodClientImpl::EnrollScanDoneReceived, 222 base::Bind(&BiodClientImpl::EnrollScanDoneReceived,
225 weak_ptr_factory_.GetWeakPtr()), 223 weak_ptr_factory_.GetWeakPtr()),
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 current_auth_session_path_.reset(); 329 current_auth_session_path_.reset();
332 330
333 if (!new_owner.empty()) { 331 if (!new_owner.empty()) {
334 for (auto& observer : observers_) 332 for (auto& observer : observers_)
335 observer.BiodServiceRestarted(); 333 observer.BiodServiceRestarted();
336 } 334 }
337 } 335 }
338 336
339 void EnrollScanDoneReceived(dbus::Signal* signal) { 337 void EnrollScanDoneReceived(dbus::Signal* signal) {
340 dbus::MessageReader reader(signal); 338 dbus::MessageReader reader(signal);
341 uint32_t scan_result; 339 biod::EnrollScanDone protobuf;
342 bool enroll_session_complete; 340
Daniel Erat 2017/05/03 20:47:34 nit: delete this blank line
xiaoyinh(OOO Sep 11-29) 2017/05/04 00:29:51 Done.
343 if (!reader.PopUint32(&scan_result) || 341 if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
344 !reader.PopBool(&enroll_session_complete)) { 342 LOG(ERROR) << "Unable to decode protocol buffer from "
345 LOG(ERROR) << "Error reading signal from biometrics: " 343 << biod::kBiometricsManagerEnrollScanDoneSignal << " signal.";
346 << signal->ToString();
347 return; 344 return;
348 } 345 }
349 346
350 if (enroll_session_complete) 347 biod::ScanResult scan_result = protobuf.scan_result();
351 current_enroll_session_path_.reset(); 348 bool enroll_session_complete = protobuf.done();
349 int32_t percent_complete =
350 protobuf.has_percent_complete() ? protobuf.percent_complete() : -1;
Daniel Erat 2017/05/03 20:47:34 i can understand caching percent_complete in a loc
xiaoyinh(OOO Sep 11-29) 2017/05/04 00:29:51 Thanks, changed.
352 351
353 for (auto& observer : observers_) { 352 for (auto& observer : observers_) {
354 observer.BiodEnrollScanDoneReceived( 353 observer.BiodEnrollScanDoneReceived(scan_result, enroll_session_complete,
355 static_cast<biod::ScanResult>(scan_result), enroll_session_complete); 354 percent_complete);
356 } 355 }
357 } 356 }
358 357
359 void AuthScanDoneReceived(dbus::Signal* signal) { 358 void AuthScanDoneReceived(dbus::Signal* signal) {
360 dbus::MessageReader signal_reader(signal); 359 dbus::MessageReader signal_reader(signal);
361 dbus::MessageReader array_reader(nullptr); 360 dbus::MessageReader array_reader(nullptr);
362 uint32_t scan_result; 361 uint32_t scan_result;
363 AuthScanMatches matches; 362 AuthScanMatches matches;
364 if (!signal_reader.PopUint32(&scan_result) || 363 if (!signal_reader.PopUint32(&scan_result) ||
365 !signal_reader.PopArray(&array_reader)) { 364 !signal_reader.PopArray(&array_reader)) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 412
414 // static 413 // static
415 BiodClient* BiodClient::Create(DBusClientImplementationType type) { 414 BiodClient* BiodClient::Create(DBusClientImplementationType type) {
416 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 415 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
417 return new BiodClientImpl(); 416 return new BiodClientImpl();
418 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); 417 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type);
419 return new FakeBiodClient(); 418 return new FakeBiodClient();
420 } 419 }
421 420
422 } // namespace chromeos 421 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698