OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/proximity_auth/cryptauth/cryptauth_device_manager.h" | 5 #include "components/proximity_auth/cryptauth/cryptauth_device_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
8 | 9 |
9 #include "base/base64url.h" | 10 #include "base/base64url.h" |
10 #include "base/macros.h" | 11 #include "base/macros.h" |
11 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
12 #include "base/prefs/scoped_user_pref_update.h" | 13 #include "base/prefs/scoped_user_pref_update.h" |
13 #include "base/prefs/testing_pref_service.h" | 14 #include "base/prefs/testing_pref_service.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
15 #include "base/test/simple_test_clock.h" | 16 #include "base/test/simple_test_clock.h" |
16 #include "components/proximity_auth/cryptauth/fake_cryptauth_gcm_manager.h" | 17 #include "components/proximity_auth/cryptauth/fake_cryptauth_gcm_manager.h" |
17 #include "components/proximity_auth/cryptauth/mock_cryptauth_client.h" | 18 #include "components/proximity_auth/cryptauth/mock_cryptauth_client.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 } | 110 } |
110 } | 111 } |
111 | 112 |
112 // Harness for testing CryptAuthDeviceManager. | 113 // Harness for testing CryptAuthDeviceManager. |
113 class TestCryptAuthDeviceManager : public CryptAuthDeviceManager { | 114 class TestCryptAuthDeviceManager : public CryptAuthDeviceManager { |
114 public: | 115 public: |
115 TestCryptAuthDeviceManager(scoped_ptr<base::Clock> clock, | 116 TestCryptAuthDeviceManager(scoped_ptr<base::Clock> clock, |
116 scoped_ptr<CryptAuthClientFactory> client_factory, | 117 scoped_ptr<CryptAuthClientFactory> client_factory, |
117 CryptAuthGCMManager* gcm_manager, | 118 CryptAuthGCMManager* gcm_manager, |
118 PrefService* pref_service) | 119 PrefService* pref_service) |
119 : CryptAuthDeviceManager(clock.Pass(), | 120 : CryptAuthDeviceManager(std::move(clock), |
120 client_factory.Pass(), | 121 std::move(client_factory), |
121 gcm_manager, | 122 gcm_manager, |
122 pref_service), | 123 pref_service), |
123 scoped_sync_scheduler_(new NiceMock<MockSyncScheduler>()), | 124 scoped_sync_scheduler_(new NiceMock<MockSyncScheduler>()), |
124 weak_sync_scheduler_factory_(scoped_sync_scheduler_.get()) {} | 125 weak_sync_scheduler_factory_(scoped_sync_scheduler_.get()) {} |
125 | 126 |
126 ~TestCryptAuthDeviceManager() override {} | 127 ~TestCryptAuthDeviceManager() override {} |
127 | 128 |
128 scoped_ptr<SyncScheduler> CreateSyncScheduler() override { | 129 scoped_ptr<SyncScheduler> CreateSyncScheduler() override { |
129 EXPECT_TRUE(scoped_sync_scheduler_); | 130 EXPECT_TRUE(scoped_sync_scheduler_); |
130 return scoped_sync_scheduler_.Pass(); | 131 return std::move(scoped_sync_scheduler_); |
131 } | 132 } |
132 | 133 |
133 base::WeakPtr<MockSyncScheduler> GetSyncScheduler() { | 134 base::WeakPtr<MockSyncScheduler> GetSyncScheduler() { |
134 return weak_sync_scheduler_factory_.GetWeakPtr(); | 135 return weak_sync_scheduler_factory_.GetWeakPtr(); |
135 } | 136 } |
136 | 137 |
137 private: | 138 private: |
138 // Ownership is passed to |CryptAuthDeviceManager| super class when | 139 // Ownership is passed to |CryptAuthDeviceManager| super class when |
139 // |CreateSyncScheduler()| is called. | 140 // |CreateSyncScheduler()| is called. |
140 scoped_ptr<MockSyncScheduler> scoped_sync_scheduler_; | 141 scoped_ptr<MockSyncScheduler> scoped_sync_scheduler_; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 base::Base64UrlEncodePolicy::INCLUDE_PADDING, | 196 base::Base64UrlEncodePolicy::INCLUDE_PADDING, |
196 &bluetooth_address_b64); | 197 &bluetooth_address_b64); |
197 | 198 |
198 unlock_key_dictionary->SetString("public_key", public_key_b64); | 199 unlock_key_dictionary->SetString("public_key", public_key_b64); |
199 unlock_key_dictionary->SetString("device_name", device_name_b64); | 200 unlock_key_dictionary->SetString("device_name", device_name_b64); |
200 unlock_key_dictionary->SetString("bluetooth_address", | 201 unlock_key_dictionary->SetString("bluetooth_address", |
201 bluetooth_address_b64); | 202 bluetooth_address_b64); |
202 { | 203 { |
203 ListPrefUpdate update(&pref_service_, | 204 ListPrefUpdate update(&pref_service_, |
204 prefs::kCryptAuthDeviceSyncUnlockKeys); | 205 prefs::kCryptAuthDeviceSyncUnlockKeys); |
205 update.Get()->Append(unlock_key_dictionary.Pass()); | 206 update.Get()->Append(std::move(unlock_key_dictionary)); |
206 } | 207 } |
207 | 208 |
208 device_manager_.reset(new TestCryptAuthDeviceManager( | 209 device_manager_.reset(new TestCryptAuthDeviceManager( |
209 make_scoped_ptr(clock_), make_scoped_ptr(client_factory_), | 210 make_scoped_ptr(clock_), make_scoped_ptr(client_factory_), |
210 &gcm_manager_, &pref_service_)); | 211 &gcm_manager_, &pref_service_)); |
211 device_manager_->AddObserver(this); | 212 device_manager_->AddObserver(this); |
212 | 213 |
213 cryptauth::ExternalDeviceInfo unlock_key; | 214 cryptauth::ExternalDeviceInfo unlock_key; |
214 unlock_key.set_public_key(kPublicKey1); | 215 unlock_key.set_public_key(kPublicKey1); |
215 unlock_key.set_friendly_device_name(kDeviceName1); | 216 unlock_key.set_friendly_device_name(kDeviceName1); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 | 249 |
249 // Simulates firing the SyncScheduler to trigger a device sync attempt. | 250 // Simulates firing the SyncScheduler to trigger a device sync attempt. |
250 void FireSchedulerForSync( | 251 void FireSchedulerForSync( |
251 cryptauth::InvocationReason expected_invocation_reason) { | 252 cryptauth::InvocationReason expected_invocation_reason) { |
252 SyncScheduler::Delegate* delegate = | 253 SyncScheduler::Delegate* delegate = |
253 static_cast<SyncScheduler::Delegate*>(device_manager_.get()); | 254 static_cast<SyncScheduler::Delegate*>(device_manager_.get()); |
254 | 255 |
255 scoped_ptr<SyncScheduler::SyncRequest> sync_request = make_scoped_ptr( | 256 scoped_ptr<SyncScheduler::SyncRequest> sync_request = make_scoped_ptr( |
256 new SyncScheduler::SyncRequest(device_manager_->GetSyncScheduler())); | 257 new SyncScheduler::SyncRequest(device_manager_->GetSyncScheduler())); |
257 EXPECT_CALL(*this, OnSyncStartedProxy()); | 258 EXPECT_CALL(*this, OnSyncStartedProxy()); |
258 delegate->OnSyncRequested(sync_request.Pass()); | 259 delegate->OnSyncRequested(std::move(sync_request)); |
259 | 260 |
260 EXPECT_EQ(expected_invocation_reason, | 261 EXPECT_EQ(expected_invocation_reason, |
261 get_my_devices_request_.invocation_reason()); | 262 get_my_devices_request_.invocation_reason()); |
262 | 263 |
263 // The allow_stale_read flag is set if the sync was not forced. | 264 // The allow_stale_read flag is set if the sync was not forced. |
264 bool allow_stale_read = | 265 bool allow_stale_read = |
265 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason) != | 266 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason) != |
266 cryptauth::INVOCATION_REASON_UNKNOWN; | 267 cryptauth::INVOCATION_REASON_UNKNOWN; |
267 EXPECT_EQ(allow_stale_read, get_my_devices_request_.allow_stale_read()); | 268 EXPECT_EQ(allow_stale_read, get_my_devices_request_.allow_stale_read()); |
268 } | 269 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 | 342 |
342 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithDefaultPrefs) { | 343 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithDefaultPrefs) { |
343 scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock); | 344 scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock); |
344 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); | 345 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); |
345 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); | 346 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); |
346 | 347 |
347 TestingPrefServiceSimple pref_service; | 348 TestingPrefServiceSimple pref_service; |
348 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); | 349 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); |
349 | 350 |
350 TestCryptAuthDeviceManager device_manager( | 351 TestCryptAuthDeviceManager device_manager( |
351 clock.Pass(), | 352 std::move(clock), |
352 make_scoped_ptr(new MockCryptAuthClientFactory( | 353 make_scoped_ptr(new MockCryptAuthClientFactory( |
353 MockCryptAuthClientFactory::MockType::MAKE_STRICT_MOCKS)), | 354 MockCryptAuthClientFactory::MockType::MAKE_STRICT_MOCKS)), |
354 &gcm_manager_, &pref_service); | 355 &gcm_manager_, &pref_service); |
355 | 356 |
356 EXPECT_CALL( | 357 EXPECT_CALL( |
357 *(device_manager.GetSyncScheduler()), | 358 *(device_manager.GetSyncScheduler()), |
358 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 359 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
359 device_manager.Start(); | 360 device_manager.Start(); |
360 EXPECT_TRUE(device_manager.GetLastSyncTime().is_null()); | 361 EXPECT_TRUE(device_manager.GetLastSyncTime().is_null()); |
361 EXPECT_EQ(0u, device_manager.unlock_keys().size()); | 362 EXPECT_EQ(0u, device_manager.unlock_keys().size()); |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 596 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
596 success_callback_.Run(get_my_devices_response_); | 597 success_callback_.Run(get_my_devices_response_); |
597 | 598 |
598 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 599 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
599 1, get_my_devices_response_.devices(0)), | 600 1, get_my_devices_response_.devices(0)), |
600 device_manager_->unlock_keys(), | 601 device_manager_->unlock_keys(), |
601 pref_service_); | 602 pref_service_); |
602 } | 603 } |
603 | 604 |
604 } // namespace proximity_auth | 605 } // namespace proximity_auth |
OLD | NEW |