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

Side by Side Diff: chromeos/dbus/biod/fake_biod_client.h

Issue 2644233002: cros: Added a fake fingerprint storage class. (Closed)
Patch Set: Rebased. Created 3 years, 8 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 #ifndef CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_ 5 #ifndef CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_
6 #define CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_ 6 #define CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_
7 7
8 #include <map>
9 #include <string>
10
8 #include "base/macros.h" 11 #include "base/macros.h"
9 #include "base/observer_list.h" 12 #include "base/observer_list.h"
10 #include "chromeos/chromeos_export.h" 13 #include "chromeos/chromeos_export.h"
11 #include "chromeos/dbus/biod/biod_client.h" 14 #include "chromeos/dbus/biod/biod_client.h"
12 15
13 namespace dbus { 16 namespace dbus {
14 class Bus; 17 class Bus;
15 class ObjectPath; 18 class ObjectPath;
16 } // namespace dbus 19 } // namespace dbus
17 20
18 namespace chromeos { 21 namespace chromeos {
19 22
20 // A fake implementation of BiodClient. 23 class FakeBiodClientTest;
24
25 // A fake implementation of BiodClient. It emulates the real Biod daemon by
26 // providing the same API and storaging fingerprints locally. A fingerprint is
Daniel Erat 2017/04/07 18:27:56 nit: storing
sammiequon 2017/04/07 20:45:50 Done.
27 // represented by a string. During enrollment, fake enrollments are sent as
28 // chars. If they are successful they get appended to the current fingerprint,
29 // until and compeleted enroll scan is sent. An attempt scan is also sent with a
Daniel Erat 2017/04/07 18:27:56 nit: "until a completed enroll ..."
sammiequon 2017/04/07 20:45:50 Done.
30 // char. If that char matches any char in the stored fingerprint string, it is
31 // considered a match.
21 class CHROMEOS_EXPORT FakeBiodClient : public BiodClient { 32 class CHROMEOS_EXPORT FakeBiodClient : public BiodClient {
22 public: 33 public:
34 // The current session of fingerprint storage. The session determines which
35 // events will be sent from user finger touches.
36 enum class FingerprintSession {
37 NONE = 0,
Daniel Erat 2017/04/07 18:27:56 you don't need the '= 0' here
sammiequon 2017/04/07 20:45:50 Done.
38 ENROLL,
39 AUTH,
40 };
41
23 FakeBiodClient(); 42 FakeBiodClient();
24 ~FakeBiodClient() override; 43 ~FakeBiodClient() override;
25 44
26 // Emulates the biod daemon by sending events which the daemon normally sends. 45 // Emulates the biod daemon by sending events which the daemon normally sends.
27 // Notifies |observers_| about various events. These will be used in tests. 46 // Notifies |observers_| about various events. These will be used in tests.
28 void SendEnrollScanDone(biod::ScanResult type_result, bool is_complete); 47
29 void SendAuthScanDone(biod::ScanResult type_result, 48 // Emulates a scan that occurs during enrolling a new fingerprint.
30 const AuthScanMatches& matches); 49 // |fingerprint| is the fake data of the finger as a char. If |is_complete| is
Daniel Erat 2017/04/07 18:27:56 this char/string interface seems a bit odd. why no
sammiequon 2017/04/07 20:45:50 I could do that, but I am wondering why the vector
Daniel Erat 2017/04/07 20:57:25 yes, my main thought was that strings are much nic
sammiequon 2017/04/07 22:43:55 Acknowledged.
50 // true the enroll session is finished, and the record is stored.
51 void SendEnrollScanDone(char fingerprint,
52 biod::ScanResult type_result,
53 bool is_complete);
54 // Emulates a scan that occurs during a authentication session. |fingerprint|
55 // is a char which represents the finger, and will be compared with all the
56 // stored fingerprints.
57 void SendAuthScanDone(char fingerprint, biod::ScanResult type_result);
31 void SendSessionFailed(); 58 void SendSessionFailed();
32 59
33 // BiodClient: 60 // BiodClient:
34 void Init(dbus::Bus* bus) override; 61 void Init(dbus::Bus* bus) override;
35 void AddObserver(Observer* observer) override; 62 void AddObserver(Observer* observer) override;
36 void RemoveObserver(Observer* observer) override; 63 void RemoveObserver(Observer* observer) override;
37 bool HasObserver(const Observer* observer) const override; 64 bool HasObserver(const Observer* observer) const override;
38 void StartEnrollSession(const std::string& user_id, 65 void StartEnrollSession(const std::string& user_id,
39 const std::string& label, 66 const std::string& label,
40 const ObjectPathCallback& callback) override; 67 const ObjectPathCallback& callback) override;
41 void GetRecordsForUser(const std::string& user_id, 68 void GetRecordsForUser(const std::string& user_id,
42 const UserRecordsCallback& callback) override; 69 const UserRecordsCallback& callback) override;
43 void DestroyAllRecords() override; 70 void DestroyAllRecords() override;
44 void StartAuthSession(const ObjectPathCallback& callback) override; 71 void StartAuthSession(const ObjectPathCallback& callback) override;
45 void RequestType(const BiometricTypeCallback& callback) override; 72 void RequestType(const BiometricTypeCallback& callback) override;
46 void CancelEnrollSession( 73 void CancelEnrollSession(
47 const dbus::ObjectPath& enroll_session_path) override; 74 const dbus::ObjectPath& enroll_session_path) override;
48 void EndAuthSession(const dbus::ObjectPath& auth_session_path) override; 75 void EndAuthSession(const dbus::ObjectPath& auth_session_path) override;
49 void SetRecordLabel(const dbus::ObjectPath& record_path, 76 void SetRecordLabel(const dbus::ObjectPath& record_path,
50 const std::string& label) override; 77 const std::string& label) override;
51 void RemoveRecord(const dbus::ObjectPath& record_path) override; 78 void RemoveRecord(const dbus::ObjectPath& record_path) override;
52 void RequestRecordLabel(const dbus::ObjectPath& record_path, 79 void RequestRecordLabel(const dbus::ObjectPath& record_path,
53 const LabelCallback& callback) override; 80 const LabelCallback& callback) override;
54 81
82 // Clears and stored and current records from the fake storage.
Daniel Erat 2017/04/07 18:27:56 s/and/all/
sammiequon 2017/04/07 20:45:50 Done.
83 void Reset();
84
55 private: 85 private:
86 friend FakeBiodClientTest;
87
88 // FakeRecord is the definition of a fake stored fingerprint template.
89 struct FakeRecord {
90 std::string user_id;
91 std::string label;
92 // A fake fingerprint is a string which consists of all the chars which were
93 // "pressed" during the enroll session.
94 std::string fake_fingerprint;
95 };
96
97 // The stored fingerprints.
98 std::map<dbus::ObjectPath, std::unique_ptr<FakeRecord>> records_;
99
100 // Current record in process of getting enrolled and its path. These are
101 // assigned at the start of an enroll session and freed when the enroll
102 // session is finished or cancelled.
103 std::unique_ptr<dbus::ObjectPath> current_record_path_;
Daniel Erat 2017/04/07 18:27:56 you don't need unique_ptr; just use an empty path
sammiequon 2017/04/07 20:45:50 Done.
104 std::unique_ptr<FakeRecord> current_record_;
105
106 // Unique indentifier that gets updated each time an enroll session is started
107 // to ensure each record is stored at a different path.
108 int next_record_unique_id_ = 1;
109
110 // The current session of the fake storage.
111 FingerprintSession current_session_ = FingerprintSession::NONE;
112
56 base::ObserverList<Observer> observers_; 113 base::ObserverList<Observer> observers_;
57 114
58 DISALLOW_COPY_AND_ASSIGN(FakeBiodClient); 115 DISALLOW_COPY_AND_ASSIGN(FakeBiodClient);
59 }; 116 };
60 117
61 } // namespace chromeos 118 } // namespace chromeos
62 119
63 #endif // CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_ 120 #endif // CHROMEOS_DBUS_BIOD_FAKE_BIOD_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698