mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Store metadata in FastPairDevice
Add DeviceMetadata to FastPairDevice after downloading it. It simplifies the code and prevents fetching the same metadata several times. FastPairDataEncryptorImpl does not download the metadata anymore. Metadata must have already been downloaded, otherwise we wouldn't know what FP protocol to use. PiperOrigin-RevId: 542490742
This commit is contained in:
committed by
Copybara-Service
parent
f9123d544b
commit
3cf20ee3bc
@@ -28,6 +28,7 @@ cc_library(
|
|||||||
"//fastpair/common",
|
"//fastpair/common",
|
||||||
"//fastpair/handshake",
|
"//fastpair/handshake",
|
||||||
"//fastpair/message_stream",
|
"//fastpair/message_stream",
|
||||||
|
"//fastpair/server_access",
|
||||||
"//internal/base",
|
"//internal/base",
|
||||||
"//internal/platform:comm",
|
"//internal/platform:comm",
|
||||||
"//internal/platform:types",
|
"//internal/platform:types",
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ cc_library(
|
|||||||
"account_key_filter.h",
|
"account_key_filter.h",
|
||||||
"battery_notification.h",
|
"battery_notification.h",
|
||||||
"constant.h",
|
"constant.h",
|
||||||
|
"device_metadata.h",
|
||||||
"fast_pair_device.h",
|
"fast_pair_device.h",
|
||||||
"fast_pair_http_result.h",
|
"fast_pair_http_result.h",
|
||||||
"fast_pair_prefs.h",
|
"fast_pair_prefs.h",
|
||||||
"fast_pair_switches.h",
|
"fast_pair_switches.h",
|
||||||
|
"fast_pair_version.h",
|
||||||
"non_discoverable_advertisement.h",
|
"non_discoverable_advertisement.h",
|
||||||
"pair_failure.h",
|
"pair_failure.h",
|
||||||
"protocol.h",
|
"protocol.h",
|
||||||
@@ -29,6 +31,7 @@ cc_library(
|
|||||||
"//fastpair:__subpackages__",
|
"//fastpair:__subpackages__",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//fastpair/proto:fastpair_cc_proto",
|
||||||
"//internal/crypto",
|
"//internal/crypto",
|
||||||
"//internal/platform:logging",
|
"//internal/platform:logging",
|
||||||
"//internal/preferences",
|
"//internal/preferences",
|
||||||
@@ -64,9 +67,9 @@ cc_test(
|
|||||||
shard_count = 16,
|
shard_count = 16,
|
||||||
deps = [
|
deps = [
|
||||||
":common",
|
":common",
|
||||||
|
"//fastpair/proto:fastpair_cc_proto",
|
||||||
"//internal/platform/implementation/g3", # build_cleaner: keep
|
"//internal/platform/implementation/g3", # build_cleaner: keep
|
||||||
"@com_github_protobuf_matchers//protobuf-matchers",
|
"@com_github_protobuf_matchers//protobuf-matchers",
|
||||||
"@com_google_absl//absl/strings",
|
|
||||||
"@com_google_googletest//:gtest_main",
|
"@com_google_googletest//:gtest_main",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "fastpair/common/fast_pair_version.h"
|
||||||
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
@@ -27,9 +27,9 @@ class DeviceMetadata {
|
|||||||
explicit DeviceMetadata(const proto::GetObservedDeviceResponse response)
|
explicit DeviceMetadata(const proto::GetObservedDeviceResponse response)
|
||||||
: response_(std::move(response)) {}
|
: response_(std::move(response)) {}
|
||||||
DeviceMetadata(DeviceMetadata &&) = default;
|
DeviceMetadata(DeviceMetadata &&) = default;
|
||||||
DeviceMetadata(const DeviceMetadata &) = delete;
|
DeviceMetadata(const DeviceMetadata &) = default;
|
||||||
DeviceMetadata &operator=(const DeviceMetadata &) = delete;
|
DeviceMetadata &operator=(const DeviceMetadata &) = default;
|
||||||
DeviceMetadata &operator=(DeviceMetadata &&) = delete;
|
DeviceMetadata &operator=(DeviceMetadata &&) = default;
|
||||||
~DeviceMetadata() = default;
|
~DeviceMetadata() = default;
|
||||||
const proto::Device &GetDetails() const { return response_.device(); }
|
const proto::Device &GetDetails() const { return response_.device(); }
|
||||||
const proto::GetObservedDeviceResponse &GetResponse() const {
|
const proto::GetObservedDeviceResponse &GetResponse() const {
|
||||||
@@ -46,7 +46,7 @@ class DeviceMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const proto::GetObservedDeviceResponse response_;
|
proto::GetObservedDeviceResponse response_;
|
||||||
};
|
};
|
||||||
} // namespace fastpair
|
} // namespace fastpair
|
||||||
} // namespace nearby
|
} // namespace nearby
|
||||||
@@ -25,16 +25,13 @@
|
|||||||
#include "absl/container/flat_hash_map.h"
|
#include "absl/container/flat_hash_map.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/common/account_key.h"
|
#include "fastpair/common/account_key.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
|
#include "fastpair/common/fast_pair_version.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
|
|
||||||
enum class DeviceFastPairVersion {
|
|
||||||
kV1,
|
|
||||||
kHigherThanV1,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Thin class which is used by the higher level components of the Fast Pair
|
// Thin class which is used by the higher level components of the Fast Pair
|
||||||
// system to represent a device.
|
// system to represent a device.
|
||||||
class FastPairDevice {
|
class FastPairDevice {
|
||||||
@@ -64,10 +61,11 @@ class FastPairDevice {
|
|||||||
display_name_ = std::string(display_name);
|
display_name_ = std::string(display_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<DeviceFastPairVersion> GetVersion() { return version_; }
|
std::optional<DeviceFastPairVersion> GetVersion() const {
|
||||||
|
if (metadata_) {
|
||||||
void SetVersion(std::optional<DeviceFastPairVersion> version) {
|
return metadata_->GetFastPairVersion();
|
||||||
version_ = version;
|
}
|
||||||
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
const AccountKey& GetAccountKey() const { return account_key_; }
|
const AccountKey& GetAccountKey() const { return account_key_; }
|
||||||
@@ -88,6 +86,10 @@ class FastPairDevice {
|
|||||||
|
|
||||||
Protocol GetProtocol() const { return protocol_; }
|
Protocol GetProtocol() const { return protocol_; }
|
||||||
|
|
||||||
|
void SetMetadata(const DeviceMetadata& metadata) { metadata_ = metadata; }
|
||||||
|
|
||||||
|
const std::optional<DeviceMetadata>& GetMetadata() const { return metadata_; }
|
||||||
|
|
||||||
const std::string& GetUniqueId() const {
|
const std::string& GetUniqueId() const {
|
||||||
if (public_address_.has_value()) {
|
if (public_address_.has_value()) {
|
||||||
return *public_address_;
|
return *public_address_;
|
||||||
@@ -122,6 +124,8 @@ class FastPairDevice {
|
|||||||
// for eligible devices (V2 or higher) and used for detecting subsequent
|
// for eligible devices (V2 or higher) and used for detecting subsequent
|
||||||
// pairing scenarios.
|
// pairing scenarios.
|
||||||
AccountKey account_key_;
|
AccountKey account_key_;
|
||||||
|
|
||||||
|
std::optional<DeviceMetadata> metadata_;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& stream, const FastPairDevice& device);
|
std::ostream& operator<<(std::ostream& stream, const FastPairDevice& device);
|
||||||
|
|||||||
@@ -23,7 +23,9 @@
|
|||||||
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "fastpair/common/account_key.h"
|
#include "fastpair/common/account_key.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
@@ -76,6 +78,34 @@ TEST(FastPairDevice, GetAndPublicAddress) {
|
|||||||
EXPECT_EQ(device.GetPublicAddress().value(), new_test_GetPublicAddress);
|
EXPECT_EQ(device.GetPublicAddress().value(), new_test_GetPublicAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(FastPairDevice, GetVersionUnset) {
|
||||||
|
FastPairDevice device("model_id", "ble_address",
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
|
|
||||||
|
EXPECT_FALSE(device.GetVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(FastPairDevice, GetVersionV1) {
|
||||||
|
FastPairDevice device("model_id", "ble_address",
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
|
proto::GetObservedDeviceResponse response;
|
||||||
|
device.SetMetadata(DeviceMetadata(response));
|
||||||
|
|
||||||
|
EXPECT_EQ(device.GetVersion(), DeviceFastPairVersion::kV1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(FastPairDevice, GetVersionHigherThanV1) {
|
||||||
|
FastPairDevice device("model_id", "ble_address",
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
|
proto::GetObservedDeviceResponse response;
|
||||||
|
std::string anti_spoofing_key(kPublicKeyByteSize, 0);
|
||||||
|
response.mutable_device()->mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
|
anti_spoofing_key);
|
||||||
|
device.SetMetadata(DeviceMetadata(response));
|
||||||
|
|
||||||
|
EXPECT_EQ(device.GetVersion(), DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace fastpair
|
} // namespace fastpair
|
||||||
} // namespace nearby
|
} // namespace nearby
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
// Copyright 2022 Google LLC
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef THIRD_PARTY_NEARBY_FASTPAIR_COMMON_FAST_PAIR_VERSION_H_
|
||||||
|
#define THIRD_PARTY_NEARBY_FASTPAIR_COMMON_FAST_PAIR_VERSION_H_
|
||||||
|
|
||||||
|
namespace nearby {
|
||||||
|
namespace fastpair {
|
||||||
|
|
||||||
|
enum class DeviceFastPairVersion {
|
||||||
|
kV1,
|
||||||
|
kHigherThanV1,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
} // namespace nearby
|
||||||
|
|
||||||
|
#endif // THIRD_PARTY_NEARBY_FASTPAIR_COMMON_FAST_PAIR_VERSION_H_
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
#include "fastpair/handshake/fast_pair_data_encryptor_impl.h"
|
#include "fastpair/handshake/fast_pair_data_encryptor_impl.h"
|
||||||
#include "fastpair/message_stream/message_stream.h"
|
#include "fastpair/message_stream/message_stream.h"
|
||||||
|
#include "fastpair/server_access/fast_pair_repository.h"
|
||||||
#include "internal/platform/bluetooth_adapter.h"
|
#include "internal/platform/bluetooth_adapter.h"
|
||||||
#include "internal/platform/bluetooth_classic.h"
|
#include "internal/platform/bluetooth_classic.h"
|
||||||
#include "internal/platform/single_thread_executor.h"
|
#include "internal/platform/single_thread_executor.h"
|
||||||
@@ -91,18 +92,30 @@ FastPairController::GetDataEncryptor() {
|
|||||||
if (!encryptor_) {
|
if (!encryptor_) {
|
||||||
encryptor_ =
|
encryptor_ =
|
||||||
std::make_unique<Future<std::shared_ptr<FastPairDataEncryptor>>>();
|
std::make_unique<Future<std::shared_ptr<FastPairDataEncryptor>>>();
|
||||||
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
if (device_.GetMetadata()) {
|
||||||
device_, [borrowable = lender_.GetBorrowable()](
|
CreateDataEncryptor();
|
||||||
std::unique_ptr<FastPairDataEncryptor> encryptor) mutable {
|
} else {
|
||||||
auto borrowed = borrowable.Borrow();
|
FastPairRepository::Get()->GetDeviceMetadata(
|
||||||
if (borrowed) {
|
device_.GetModelId(), [this](DeviceMetadata& metadata) {
|
||||||
(*borrowed)->SetDataEncryptor(std::move(encryptor));
|
device_.SetMetadata(metadata);
|
||||||
}
|
CreateDataEncryptor();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return *encryptor_;
|
return *encryptor_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FastPairController::CreateDataEncryptor() {
|
||||||
|
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
||||||
|
device_, [borrowable = lender_.GetBorrowable()](
|
||||||
|
std::unique_ptr<FastPairDataEncryptor> encryptor) mutable {
|
||||||
|
auto borrowed = borrowable.Borrow();
|
||||||
|
if (borrowed) {
|
||||||
|
(*borrowed)->SetDataEncryptor(std::move(encryptor));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Future<FastPairController::GattClientRef>
|
Future<FastPairController::GattClientRef>
|
||||||
FastPairController::GetGattClientRef() {
|
FastPairController::GetGattClientRef() {
|
||||||
Future<FastPairController::GattClientRef> result;
|
Future<FastPairController::GattClientRef> result;
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ class FastPairController : public MessageStream::Observer {
|
|||||||
CHECK(gatt_client_ != nullptr);
|
CHECK(gatt_client_ != nullptr);
|
||||||
return gatt_client_.get();
|
return gatt_client_.get();
|
||||||
}
|
}
|
||||||
|
void CreateDataEncryptor();
|
||||||
Mediums* mediums_;
|
Mediums* mediums_;
|
||||||
FastPairDevice device_;
|
FastPairDevice device_;
|
||||||
SingleThreadExecutor* executor_;
|
SingleThreadExecutor* executor_;
|
||||||
|
|||||||
@@ -139,6 +139,7 @@ cc_test(
|
|||||||
deps = [
|
deps = [
|
||||||
":handshake",
|
":handshake",
|
||||||
"//fastpair/common",
|
"//fastpair/common",
|
||||||
|
"//fastpair/proto:fastpair_cc_proto",
|
||||||
"//fastpair/server_access:test_support",
|
"//fastpair/server_access:test_support",
|
||||||
"//internal/platform:base",
|
"//internal/platform:base",
|
||||||
"//internal/platform:test_util",
|
"//internal/platform:test_util",
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/common/account_key.h"
|
#include "fastpair/common/account_key.h"
|
||||||
#include "fastpair/common/constant.h"
|
#include "fastpair/common/constant.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
#include "fastpair/crypto/decrypted_passkey.h"
|
#include "fastpair/crypto/decrypted_passkey.h"
|
||||||
#include "fastpair/crypto/decrypted_response.h"
|
#include "fastpair/crypto/decrypted_response.h"
|
||||||
@@ -36,7 +37,6 @@
|
|||||||
#include "fastpair/crypto/fast_pair_key_pair.h"
|
#include "fastpair/crypto/fast_pair_key_pair.h"
|
||||||
#include "fastpair/dataparser/fast_pair_data_parser.h"
|
#include "fastpair/dataparser/fast_pair_data_parser.h"
|
||||||
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/server_access/fast_pair_repository.h"
|
#include "fastpair/server_access/fast_pair_repository.h"
|
||||||
#include "internal/platform/logging.h"
|
#include "internal/platform/logging.h"
|
||||||
|
|
||||||
@@ -88,27 +88,12 @@ void FastPairDataEncryptorImpl::Factory::CreateAsyncWithKeyExchange(
|
|||||||
const FastPairDevice& device,
|
const FastPairDevice& device,
|
||||||
absl::AnyInvocable<void(std::unique_ptr<FastPairDataEncryptor>)>
|
absl::AnyInvocable<void(std::unique_ptr<FastPairDataEncryptor>)>
|
||||||
on_get_instance_callback) {
|
on_get_instance_callback) {
|
||||||
// We first have to get the metadata in order to get the public key to use
|
NEARBY_LOGS(VERBOSE) << __func__;
|
||||||
// to generate the new secret key pair.
|
auto& metadata = device.GetMetadata();
|
||||||
NEARBY_LOGS(INFO) << __func__ << ": Attempting to get device metadata.";
|
DCHECK(metadata);
|
||||||
FastPairRepository::Get()->GetDeviceMetadata(
|
|
||||||
device.GetModelId(),
|
|
||||||
[on_get_instance_callback = std::move(on_get_instance_callback)](
|
|
||||||
DeviceMetadata& metadata) mutable {
|
|
||||||
FastPairDataEncryptorImpl::Factory::DeviceMetadataRetrieved(
|
|
||||||
std::move(on_get_instance_callback), metadata);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void FastPairDataEncryptorImpl::Factory::DeviceMetadataRetrieved(
|
|
||||||
absl::AnyInvocable<void(std::unique_ptr<FastPairDataEncryptor>)>
|
|
||||||
on_get_instance_callback,
|
|
||||||
DeviceMetadata& device_metadata) {
|
|
||||||
NEARBY_LOGS(INFO) << __func__;
|
|
||||||
DCHECK(&device_metadata);
|
|
||||||
std::optional<KeyPair> key_pair =
|
std::optional<KeyPair> key_pair =
|
||||||
FastPairEncryption::GenerateKeysWithEcdhKeyAgreement(
|
FastPairEncryption::GenerateKeysWithEcdhKeyAgreement(
|
||||||
device_metadata.GetDetails().anti_spoofing_key_pair().public_key());
|
metadata->GetDetails().anti_spoofing_key_pair().public_key());
|
||||||
if (!key_pair.has_value()) {
|
if (!key_pair.has_value()) {
|
||||||
NEARBY_LOGS(INFO) << "Fail to generate key pair";
|
NEARBY_LOGS(INFO) << "Fail to generate key pair";
|
||||||
std::move(on_get_instance_callback)(nullptr);
|
std::move(on_get_instance_callback)(nullptr);
|
||||||
|
|||||||
@@ -25,10 +25,10 @@
|
|||||||
|
|
||||||
#include "absl/functional/any_invocable.h"
|
#include "absl/functional/any_invocable.h"
|
||||||
#include "fastpair/common/constant.h"
|
#include "fastpair/common/constant.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
#include "fastpair/crypto/fast_pair_key_pair.h"
|
#include "fastpair/crypto/fast_pair_key_pair.h"
|
||||||
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
|
|||||||
@@ -26,11 +26,11 @@
|
|||||||
#include "absl/strings/escaping.h"
|
#include "absl/strings/escaping.h"
|
||||||
#include "fastpair/common/account_key.h"
|
#include "fastpair/common/account_key.h"
|
||||||
#include "fastpair/common/constant.h"
|
#include "fastpair/common/constant.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
#include "fastpair/crypto/fast_pair_encryption.h"
|
#include "fastpair/crypto/fast_pair_encryption.h"
|
||||||
#include "fastpair/dataparser/fast_pair_data_parser.h"
|
#include "fastpair/dataparser/fast_pair_data_parser.h"
|
||||||
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
#include "fastpair/handshake/fast_pair_data_encryptor.h"
|
||||||
#include "fastpair/server_access/fake_fast_pair_repository.h"
|
|
||||||
#include "internal/platform/count_down_latch.h"
|
#include "internal/platform/count_down_latch.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
@@ -57,27 +57,15 @@ class FastPairDataEncryptorImplTest : public testing::Test {
|
|||||||
public:
|
public:
|
||||||
void TearDown() override { data_encryptor_.reset(); }
|
void TearDown() override { data_encryptor_.reset(); }
|
||||||
|
|
||||||
void FailedSetUpRepositoryWithNoDeviceMetadata() {
|
void FailedSetUpDeviceWithNoPublicKey() {
|
||||||
CountDownLatch latch(1);
|
proto::GetObservedDeviceResponse response;
|
||||||
repository_ = std::make_unique<FakeFastPairRepository>();
|
|
||||||
FastPairDevice device(kValidModelId, kTestAddress,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
|
||||||
device, absl::bind_front(
|
|
||||||
&FastPairDataEncryptorImplTest::OnDataEncryptorCreateAsync,
|
|
||||||
this, latch));
|
|
||||||
EXPECT_FALSE(latch.Await(kWaitTimeout).GetResult());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FailedSetUpRepositoryWithNoPublicKey() {
|
|
||||||
repository_ = std::make_unique<FakeFastPairRepository>();
|
|
||||||
proto::Device metadata;
|
|
||||||
std::string decoded_key;
|
std::string decoded_key;
|
||||||
absl::Base64Unescape(kInvalidPublicAntiSpoof, &decoded_key);
|
absl::Base64Unescape(kInvalidPublicAntiSpoof, &decoded_key);
|
||||||
metadata.mutable_anti_spoofing_key_pair()->set_public_key(decoded_key);
|
response.mutable_device()->mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
repository_->SetFakeMetadata(kValidModelId, metadata);
|
decoded_key);
|
||||||
FastPairDevice device(kValidModelId, kTestAddress,
|
FastPairDevice device(kValidModelId, kTestAddress,
|
||||||
Protocol::kFastPairInitialPairing);
|
Protocol::kFastPairInitialPairing);
|
||||||
|
device.SetMetadata(DeviceMetadata(response));
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
||||||
device, absl::bind_front(
|
device, absl::bind_front(
|
||||||
@@ -87,14 +75,14 @@ class FastPairDataEncryptorImplTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SuccessCreateFastPairDataEncryptorWithKeyExchange() {
|
void SuccessCreateFastPairDataEncryptorWithKeyExchange() {
|
||||||
repository_ = std::make_unique<FakeFastPairRepository>();
|
proto::GetObservedDeviceResponse response;
|
||||||
proto::Device metadata;
|
|
||||||
std::string decoded_key;
|
std::string decoded_key;
|
||||||
absl::Base64Unescape(kPublicAntiSpoof, &decoded_key);
|
absl::Base64Unescape(kPublicAntiSpoof, &decoded_key);
|
||||||
metadata.mutable_anti_spoofing_key_pair()->set_public_key(decoded_key);
|
response.mutable_device()->mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
repository_->SetFakeMetadata(kValidModelId, metadata);
|
decoded_key);
|
||||||
FastPairDevice device(kValidModelId, kTestAddress,
|
FastPairDevice device(kValidModelId, kTestAddress,
|
||||||
Protocol::kFastPairInitialPairing);
|
Protocol::kFastPairInitialPairing);
|
||||||
|
device.SetMetadata(DeviceMetadata(response));
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
FastPairDataEncryptorImpl::Factory::CreateAsync(
|
||||||
device, absl::bind_front(
|
device, absl::bind_front(
|
||||||
@@ -218,17 +206,10 @@ class FastPairDataEncryptorImplTest : public testing::Test {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<FastPairDevice> device_;
|
std::unique_ptr<FastPairDevice> device_;
|
||||||
std::unique_ptr<FakeFastPairRepository> repository_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(FastPairDataEncryptorImplTest, FailedSetUpNoMetadata) {
|
|
||||||
EXPECT_FALSE(data_encryptor_);
|
|
||||||
FailedSetUpRepositoryWithNoDeviceMetadata();
|
|
||||||
EXPECT_FALSE(data_encryptor_);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(FastPairDataEncryptorImplTest, NoKeyPair) {
|
TEST_F(FastPairDataEncryptorImplTest, NoKeyPair) {
|
||||||
FailedSetUpRepositoryWithNoPublicKey();
|
FailedSetUpDeviceWithNoPublicKey();
|
||||||
EXPECT_FALSE(data_encryptor_);
|
EXPECT_FALSE(data_encryptor_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,12 @@
|
|||||||
#include "absl/status/status.h"
|
#include "absl/status/status.h"
|
||||||
#include "absl/strings/escaping.h"
|
#include "absl/strings/escaping.h"
|
||||||
#include "fastpair/common/constant.h"
|
#include "fastpair/common/constant.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
#include "fastpair/common/pair_failure.h"
|
#include "fastpair/common/pair_failure.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
#include "fastpair/handshake/fast_pair_gatt_service_client_impl.h"
|
#include "fastpair/handshake/fast_pair_gatt_service_client_impl.h"
|
||||||
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
#include "fastpair/server_access/fake_fast_pair_repository.h"
|
#include "fastpair/server_access/fake_fast_pair_repository.h"
|
||||||
#include "internal/platform/byte_array.h"
|
#include "internal/platform/byte_array.h"
|
||||||
#include "internal/platform/count_down_latch.h"
|
#include "internal/platform/count_down_latch.h"
|
||||||
@@ -139,22 +141,22 @@ class FastPairHandshakeImplTest : public testing::Test {
|
|||||||
absl::OkStatus();
|
absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUpFastPairRepository() {
|
void SetUpValidAntiSpoofingKey(FastPairDevice* device) {
|
||||||
repository_ = std::make_unique<FakeFastPairRepository>();
|
proto::GetObservedDeviceResponse response;
|
||||||
proto::Device metadata;
|
|
||||||
std::string decoded_key;
|
std::string decoded_key;
|
||||||
absl::Base64Unescape(kPublicAntiSpoof, &decoded_key);
|
absl::Base64Unescape(kPublicAntiSpoof, &decoded_key);
|
||||||
metadata.mutable_anti_spoofing_key_pair()->set_public_key(decoded_key);
|
response.mutable_device()->mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
repository_->SetFakeMetadata(kMetadataId, metadata);
|
decoded_key);
|
||||||
|
device->SetMetadata(DeviceMetadata(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FailedFastPairRepository() {
|
void SetUpInvalidAntiSpoofingKey(FastPairDevice* device) {
|
||||||
repository_ = std::make_unique<FakeFastPairRepository>();
|
proto::GetObservedDeviceResponse response;
|
||||||
proto::Device metadata;
|
|
||||||
std::string decoded_key;
|
std::string decoded_key;
|
||||||
absl::Base64Unescape(kInvalidPublicAntiSpoof, &decoded_key);
|
absl::Base64Unescape(kInvalidPublicAntiSpoof, &decoded_key);
|
||||||
metadata.mutable_anti_spoofing_key_pair()->set_public_key(decoded_key);
|
response.mutable_device()->mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
repository_->SetFakeMetadata(kMetadataId, metadata);
|
decoded_key);
|
||||||
|
device->SetMetadata(DeviceMetadata(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
absl::Status TriggerKeyBasedGattChanged() {
|
absl::Status TriggerKeyBasedGattChanged() {
|
||||||
@@ -208,10 +210,10 @@ TEST_F(FastPairHandshakeImplTest, Success) {
|
|||||||
notified = true;
|
notified = true;
|
||||||
EXPECT_OK(TriggerKeyBasedGattChanged());
|
EXPECT_OK(TriggerKeyBasedGattChanged());
|
||||||
});
|
});
|
||||||
SetUpFastPairRepository();
|
|
||||||
InsertCorrectGattCharacteristics();
|
InsertCorrectGattCharacteristics();
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpValidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
@@ -233,9 +235,9 @@ TEST_F(FastPairHandshakeImplTest, GattError) {
|
|||||||
notified = true;
|
notified = true;
|
||||||
EXPECT_OK(TriggerKeyBasedGattChanged());
|
EXPECT_OK(TriggerKeyBasedGattChanged());
|
||||||
});
|
});
|
||||||
SetUpFastPairRepository();
|
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpValidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
@@ -256,10 +258,10 @@ TEST_F(FastPairHandshakeImplTest, DataEncryptorCreateError) {
|
|||||||
notified = true;
|
notified = true;
|
||||||
EXPECT_OK(TriggerKeyBasedGattChanged());
|
EXPECT_OK(TriggerKeyBasedGattChanged());
|
||||||
});
|
});
|
||||||
FailedFastPairRepository();
|
|
||||||
InsertCorrectGattCharacteristics();
|
InsertCorrectGattCharacteristics();
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpInvalidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
@@ -276,10 +278,10 @@ TEST_F(FastPairHandshakeImplTest, DataEncryptorCreateError) {
|
|||||||
|
|
||||||
TEST_F(FastPairHandshakeImplTest, WriteResponseError) {
|
TEST_F(FastPairHandshakeImplTest, WriteResponseError) {
|
||||||
StartGattServer([]() {});
|
StartGattServer([]() {});
|
||||||
SetUpFastPairRepository();
|
|
||||||
InsertCorrectGattCharacteristics();
|
InsertCorrectGattCharacteristics();
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpValidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
@@ -300,10 +302,10 @@ TEST_F(FastPairHandshakeImplTest, WriteResponseWrongSize) {
|
|||||||
notified = true;
|
notified = true;
|
||||||
EXPECT_OK(TriggerKeyBasedGattChangedWithWrongSizeResponse());
|
EXPECT_OK(TriggerKeyBasedGattChangedWithWrongSizeResponse());
|
||||||
});
|
});
|
||||||
SetUpFastPairRepository();
|
|
||||||
InsertCorrectGattCharacteristics();
|
InsertCorrectGattCharacteristics();
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpValidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
@@ -325,10 +327,10 @@ TEST_F(FastPairHandshakeImplTest, ParseResponseError) {
|
|||||||
notified = true;
|
notified = true;
|
||||||
EXPECT_OK(TriggerKeyBasedGattChangedWithWrongResponse());
|
EXPECT_OK(TriggerKeyBasedGattChangedWithWrongResponse());
|
||||||
});
|
});
|
||||||
SetUpFastPairRepository();
|
|
||||||
InsertCorrectGattCharacteristics();
|
InsertCorrectGattCharacteristics();
|
||||||
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
fast_pair_device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
kMetadataId, provider_address_, Protocol::kFastPairInitialPairing);
|
||||||
|
SetUpValidAntiSpoofingKey(fast_pair_device_.get());
|
||||||
CountDownLatch latch(1);
|
CountDownLatch latch(1);
|
||||||
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
handshake_ = std::make_unique<FastPairHandshakeImpl>(
|
||||||
*fast_pair_device_, mediums_,
|
*fast_pair_device_, mediums_,
|
||||||
|
|||||||
@@ -35,7 +35,9 @@
|
|||||||
#include "fastpair//handshake/fast_pair_handshake_lookup.h"
|
#include "fastpair//handshake/fast_pair_handshake_lookup.h"
|
||||||
#include "fastpair/common/account_key.h"
|
#include "fastpair/common/account_key.h"
|
||||||
#include "fastpair/common/constant.h"
|
#include "fastpair/common/constant.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
|
#include "fastpair/common/fast_pair_version.h"
|
||||||
#include "fastpair/common/protocol.h"
|
#include "fastpair/common/protocol.h"
|
||||||
#include "fastpair/handshake/fast_pair_data_encryptor_impl.h"
|
#include "fastpair/handshake/fast_pair_data_encryptor_impl.h"
|
||||||
#include "fastpair/handshake/fast_pair_handshake_impl.h"
|
#include "fastpair/handshake/fast_pair_handshake_impl.h"
|
||||||
@@ -133,13 +135,18 @@ class FastPairPairerImplTest : public testing::Test {
|
|||||||
void CreateMockDevice(DeviceFastPairVersion version, Protocol protocol) {
|
void CreateMockDevice(DeviceFastPairVersion version, Protocol protocol) {
|
||||||
device_ = std::make_unique<FastPairDevice>(
|
device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, remote_device_->GetMacAddress(), protocol);
|
kMetadataId, remote_device_->GetMacAddress(), protocol);
|
||||||
device_->SetVersion(version);
|
|
||||||
if (version == DeviceFastPairVersion::kV1) {
|
if (version == DeviceFastPairVersion::kV1) {
|
||||||
device_->SetPublicAddress(remote_device_->GetMacAddress());
|
device_->SetPublicAddress(remote_device_->GetMacAddress());
|
||||||
}
|
}
|
||||||
if (protocol == Protocol::kFastPairSubsequentPairing) {
|
if (protocol == Protocol::kFastPairSubsequentPairing) {
|
||||||
device_->SetAccountKey(AccountKey(account_key_));
|
device_->SetAccountKey(AccountKey(account_key_));
|
||||||
}
|
}
|
||||||
|
CountDownLatch latch(1);
|
||||||
|
repository_->GetDeviceMetadata(kMetadataId, [&](DeviceMetadata& metadata) {
|
||||||
|
device_->SetMetadata(std::move(metadata));
|
||||||
|
latch.CountDown();
|
||||||
|
});
|
||||||
|
latch.Await();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigurePairingContext() {
|
void ConfigurePairingContext() {
|
||||||
@@ -190,8 +197,11 @@ class FastPairPairerImplTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Sets up provider's metadata information.
|
// Sets up provider's metadata information.
|
||||||
void SetUpFastPairRepository() {
|
void SetUpFastPairRepository(DeviceFastPairVersion version) {
|
||||||
repository_ = FakeFastPairRepository::Create(kMetadataId, kPublicAntiSpoof);
|
repository_ = FakeFastPairRepository::Create(
|
||||||
|
kMetadataId, version == DeviceFastPairVersion::kHigherThanV1
|
||||||
|
? kPublicAntiSpoof
|
||||||
|
: "");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets upprovider's gatt_server.
|
// Sets upprovider's gatt_server.
|
||||||
@@ -352,12 +362,12 @@ class FastPairPairerImplTest : public testing::Test {
|
|||||||
TEST_F(FastPairPairerImplTest,
|
TEST_F(FastPairPairerImplTest,
|
||||||
SuccessInitialPairingWithDeviceVersionHigherThanV1) {
|
SuccessInitialPairingWithDeviceVersionHigherThanV1) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -403,11 +413,11 @@ TEST_F(FastPairPairerImplTest,
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, SuccessInitialPairingWithDeviceV1) {
|
TEST_F(FastPairPairerImplTest, SuccessInitialPairingWithDeviceV1) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -451,11 +461,11 @@ TEST_F(FastPairPairerImplTest, SuccessInitialPairingWithDeviceV1) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, SuccessSubsequentPairingWithDevice) {
|
TEST_F(FastPairPairerImplTest, SuccessSubsequentPairingWithDevice) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairSubsequentPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairSubsequentPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -498,11 +508,11 @@ TEST_F(FastPairPairerImplTest, SuccessSubsequentPairingWithDevice) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, SuccessRetroactivePairingWithDevice) {
|
TEST_F(FastPairPairerImplTest, SuccessRetroactivePairingWithDevice) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairRetroactivePairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairRetroactivePairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -546,11 +556,11 @@ TEST_F(FastPairPairerImplTest, SuccessRetroactivePairingWithDevice) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, FailedToUnPair) {
|
TEST_F(FastPairPairerImplTest, FailedToUnPair) {
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -595,11 +605,11 @@ TEST_F(FastPairPairerImplTest, FailedToUnPair) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, FailedToPairingWithAuthTimeout) {
|
TEST_F(FastPairPairerImplTest, FailedToPairingWithAuthTimeout) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -645,11 +655,11 @@ TEST_F(FastPairPairerImplTest, FailedToPairingWithAuthTimeout) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, NoPasskeyResponse) {
|
TEST_F(FastPairPairerImplTest, NoPasskeyResponse) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -692,11 +702,11 @@ TEST_F(FastPairPairerImplTest, NoPasskeyResponse) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, PasskeyMismatch) {
|
TEST_F(FastPairPairerImplTest, PasskeyMismatch) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -742,11 +752,11 @@ TEST_F(FastPairPairerImplTest, PasskeyMismatch) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyResponse) {
|
TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyResponse) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -792,11 +802,11 @@ TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyResponse) {
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyMessageType) {
|
TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyMessageType) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -843,11 +853,11 @@ TEST_F(FastPairPairerImplTest, ReceiveWithWrongPasskeyMessageType) {
|
|||||||
TEST_F(FastPairPairerImplTest,
|
TEST_F(FastPairPairerImplTest,
|
||||||
SuccessPairingWithDeviceButFailedToWriteAccountkey) {
|
SuccessPairingWithDeviceButFailedToWriteAccountkey) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -893,11 +903,11 @@ TEST_F(FastPairPairerImplTest,
|
|||||||
|
|
||||||
TEST_F(FastPairPairerImplTest, TestCancelPairing) {
|
TEST_F(FastPairPairerImplTest, TestCancelPairing) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
|
|||||||
@@ -179,13 +179,18 @@ class PairerBrokerImplTest : public testing::Test {
|
|||||||
void CreateMockDevice(DeviceFastPairVersion version, Protocol protocol) {
|
void CreateMockDevice(DeviceFastPairVersion version, Protocol protocol) {
|
||||||
device_ = std::make_unique<FastPairDevice>(
|
device_ = std::make_unique<FastPairDevice>(
|
||||||
kMetadataId, remote_device_->GetMacAddress(), protocol);
|
kMetadataId, remote_device_->GetMacAddress(), protocol);
|
||||||
device_->SetVersion(version);
|
|
||||||
if (version == DeviceFastPairVersion::kV1) {
|
if (version == DeviceFastPairVersion::kV1) {
|
||||||
device_->SetPublicAddress(remote_device_->GetMacAddress());
|
device_->SetPublicAddress(remote_device_->GetMacAddress());
|
||||||
}
|
}
|
||||||
if (protocol == Protocol::kFastPairSubsequentPairing) {
|
if (protocol == Protocol::kFastPairSubsequentPairing) {
|
||||||
device_->SetAccountKey(AccountKey(account_key_));
|
device_->SetAccountKey(AccountKey(account_key_));
|
||||||
}
|
}
|
||||||
|
CountDownLatch latch(1);
|
||||||
|
repository_->GetDeviceMetadata(kMetadataId, [&](DeviceMetadata& metadata) {
|
||||||
|
device_->SetMetadata(std::move(metadata));
|
||||||
|
latch.CountDown();
|
||||||
|
});
|
||||||
|
latch.Await();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigurePairingContext() {
|
void ConfigurePairingContext() {
|
||||||
@@ -236,8 +241,11 @@ class PairerBrokerImplTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Sets up provider's metadata information.
|
// Sets up provider's metadata information.
|
||||||
void SetUpFastPairRepository() {
|
void SetUpFastPairRepository(DeviceFastPairVersion version) {
|
||||||
repository_ = FakeFastPairRepository::Create(kMetadataId, kPublicAntiSpoof);
|
repository_ = FakeFastPairRepository::Create(
|
||||||
|
kMetadataId, version == DeviceFastPairVersion::kHigherThanV1
|
||||||
|
? kPublicAntiSpoof
|
||||||
|
: "");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets upprovider's gatt_server.
|
// Sets upprovider's gatt_server.
|
||||||
@@ -411,11 +419,11 @@ class PairerBrokerImplTest : public testing::Test {
|
|||||||
|
|
||||||
TEST_F(PairerBrokerImplTest, SuccessInitialPairingWithDeviceV1) {
|
TEST_F(PairerBrokerImplTest, SuccessInitialPairingWithDeviceV1) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kV1,
|
|
||||||
Protocol::kFastPairInitialPairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kV1,
|
||||||
|
Protocol::kFastPairInitialPairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -455,9 +463,9 @@ TEST_F(PairerBrokerImplTest, SuccessInitialPairingWithDevice) {
|
|||||||
CountDownLatch pairing_completed_latch(1);
|
CountDownLatch pairing_completed_latch(1);
|
||||||
CountDownLatch pairing_failure_latch(1);
|
CountDownLatch pairing_failure_latch(1);
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
Protocol::kFastPairInitialPairing);
|
Protocol::kFastPairInitialPairing);
|
||||||
SetUpFastPairRepository();
|
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -498,9 +506,9 @@ TEST_F(PairerBrokerImplTest, SuccessSubsequentPairingWithDevice) {
|
|||||||
CountDownLatch pairing_completed_latch(1);
|
CountDownLatch pairing_completed_latch(1);
|
||||||
CountDownLatch pairing_failure_latch(1);
|
CountDownLatch pairing_failure_latch(1);
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
Protocol::kFastPairSubsequentPairing);
|
Protocol::kFastPairSubsequentPairing);
|
||||||
SetUpFastPairRepository();
|
|
||||||
pairer_broker_ = std::make_unique<PairerBrokerImpl>(*mediums_, &executor_);
|
pairer_broker_ = std::make_unique<PairerBrokerImpl>(*mediums_, &executor_);
|
||||||
PairerBrokerObserver pairer_broker_observer(
|
PairerBrokerObserver pairer_broker_observer(
|
||||||
pairer_broker_.get(), &device_paired_latch, &account_key_writed_latch,
|
pairer_broker_.get(), &device_paired_latch, &account_key_writed_latch,
|
||||||
@@ -535,11 +543,11 @@ TEST_F(PairerBrokerImplTest, SuccessSubsequentPairingWithDevice) {
|
|||||||
|
|
||||||
TEST_F(PairerBrokerImplTest, SuccessRetroactivePairingWithDevice) {
|
TEST_F(PairerBrokerImplTest, SuccessRetroactivePairingWithDevice) {
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
|
||||||
Protocol::kFastPairRetroactivePairing);
|
|
||||||
bool triggered_keybase_value_change = false;
|
bool triggered_keybase_value_change = false;
|
||||||
bool triggered_passkey_value_change = false;
|
bool triggered_passkey_value_change = false;
|
||||||
SetUpFastPairRepository();
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
|
Protocol::kFastPairRetroactivePairing);
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -579,9 +587,9 @@ TEST_F(PairerBrokerImplTest, FaileToCreateHandshakeRetryThreeTimes) {
|
|||||||
CountDownLatch pairing_completed_latch(1);
|
CountDownLatch pairing_completed_latch(1);
|
||||||
CountDownLatch pairing_failure_latch(1);
|
CountDownLatch pairing_failure_latch(1);
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
Protocol::kFastPairSubsequentPairing);
|
Protocol::kFastPairSubsequentPairing);
|
||||||
SetUpFastPairRepository();
|
|
||||||
pairer_broker_ = std::make_unique<PairerBrokerImpl>(*mediums_, &executor_);
|
pairer_broker_ = std::make_unique<PairerBrokerImpl>(*mediums_, &executor_);
|
||||||
PairerBrokerObserver pairer_broker_observer(
|
PairerBrokerObserver pairer_broker_observer(
|
||||||
pairer_broker_.get(), &device_paired_latch, &account_key_writed_latch,
|
pairer_broker_.get(), &device_paired_latch, &account_key_writed_latch,
|
||||||
@@ -614,9 +622,9 @@ TEST_F(PairerBrokerImplTest, FaileToWriteAccountkey) {
|
|||||||
CountDownLatch pairing_completed_latch(1);
|
CountDownLatch pairing_completed_latch(1);
|
||||||
CountDownLatch pairing_failure_latch(1);
|
CountDownLatch pairing_failure_latch(1);
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
Protocol::kFastPairInitialPairing);
|
Protocol::kFastPairInitialPairing);
|
||||||
SetUpFastPairRepository();
|
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
@@ -657,9 +665,9 @@ TEST_F(PairerBrokerImplTest, FailToPairRetryThreeTimes) {
|
|||||||
CountDownLatch pairing_completed_latch(1);
|
CountDownLatch pairing_completed_latch(1);
|
||||||
CountDownLatch pairing_failure_latch(1);
|
CountDownLatch pairing_failure_latch(1);
|
||||||
ConfigurePairingContext();
|
ConfigurePairingContext();
|
||||||
|
SetUpFastPairRepository(DeviceFastPairVersion::kHigherThanV1);
|
||||||
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
CreateMockDevice(DeviceFastPairVersion::kHigherThanV1,
|
||||||
Protocol::kFastPairInitialPairing);
|
Protocol::kFastPairInitialPairing);
|
||||||
SetUpFastPairRepository();
|
|
||||||
SetupProviderGattServer(
|
SetupProviderGattServer(
|
||||||
[&]() {
|
[&]() {
|
||||||
triggered_keybase_value_change = true;
|
triggered_keybase_value_change = true;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ cc_library(
|
|||||||
"fast_pair_metadata_repository_impl.cc",
|
"fast_pair_metadata_repository_impl.cc",
|
||||||
],
|
],
|
||||||
hdrs = [
|
hdrs = [
|
||||||
"device_metadata.h",
|
|
||||||
"fast_pair_metadata_fetcher.h",
|
"fast_pair_metadata_fetcher.h",
|
||||||
"fast_pair_metadata_fetcher_impl.h",
|
"fast_pair_metadata_fetcher_impl.h",
|
||||||
"fast_pair_metadata_repository.h",
|
"fast_pair_metadata_repository.h",
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ void FastPairDiscoverableScannerImpl::OnDeviceMetadataRetrieved(
|
|||||||
}
|
}
|
||||||
auto fast_pair_device = std::make_unique<FastPairDevice>(
|
auto fast_pair_device = std::make_unique<FastPairDevice>(
|
||||||
model_id, address, Protocol::kFastPairInitialPairing);
|
model_id, address, Protocol::kFastPairInitialPairing);
|
||||||
fast_pair_device->SetVersion(device_metadata.GetFastPairVersion());
|
fast_pair_device->SetMetadata(device_metadata);
|
||||||
|
|
||||||
executor_->Execute(
|
executor_->Execute(
|
||||||
"add-device",
|
"add-device",
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/repository/fast_pair_device_repository.h"
|
#include "fastpair/repository/fast_pair_device_repository.h"
|
||||||
#include "fastpair/scanning/fastpair/fast_pair_discoverable_scanner.h"
|
#include "fastpair/scanning/fastpair/fast_pair_discoverable_scanner.h"
|
||||||
#include "fastpair/scanning/fastpair/fast_pair_scanner.h"
|
#include "fastpair/scanning/fastpair/fast_pair_scanner.h"
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ cc_library(
|
|||||||
":server_access",
|
":server_access",
|
||||||
"//fastpair/common",
|
"//fastpair/common",
|
||||||
"//fastpair/proto:fastpair_cc_proto",
|
"//fastpair/proto:fastpair_cc_proto",
|
||||||
"//fastpair/repository",
|
|
||||||
"//internal/platform:types",
|
"//internal/platform:types",
|
||||||
"@com_google_absl//absl/container:flat_hash_map",
|
"@com_google_absl//absl/container:flat_hash_map",
|
||||||
"@com_google_absl//absl/strings",
|
"@com_google_absl//absl/strings",
|
||||||
@@ -97,7 +96,6 @@ cc_test(
|
|||||||
":server_access",
|
":server_access",
|
||||||
"//fastpair/common",
|
"//fastpair/common",
|
||||||
"//fastpair/proto:fastpair_cc_proto",
|
"//fastpair/proto:fastpair_cc_proto",
|
||||||
"//fastpair/repository",
|
|
||||||
"//fastpair/repository:fake_fast_pair_metadata_repository",
|
"//fastpair/repository:fake_fast_pair_metadata_repository",
|
||||||
"//internal/platform/implementation/g3",
|
"//internal/platform/implementation/g3",
|
||||||
"@com_github_protobuf_matchers//protobuf-matchers",
|
"@com_github_protobuf_matchers//protobuf-matchers",
|
||||||
|
|||||||
@@ -18,7 +18,9 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "absl/strings/escaping.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
|
#include "fastpair/common/constant.h"
|
||||||
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
@@ -48,7 +50,9 @@ std::unique_ptr<FakeFastPairRepository> FakeFastPairRepository::Create(
|
|||||||
absl::string_view model_id, absl::string_view public_anti_spoof_key) {
|
absl::string_view model_id, absl::string_view public_anti_spoof_key) {
|
||||||
proto::Device metadata;
|
proto::Device metadata;
|
||||||
auto repository = std::make_unique<FakeFastPairRepository>();
|
auto repository = std::make_unique<FakeFastPairRepository>();
|
||||||
if (public_anti_spoof_key.length() == kPublicKeyByteSize) {
|
if (public_anti_spoof_key.empty()) {
|
||||||
|
// Missing ASK is fine for V1 devices.
|
||||||
|
} else if (public_anti_spoof_key.length() == kPublicKeyByteSize) {
|
||||||
metadata.mutable_anti_spoofing_key_pair()->set_public_key(
|
metadata.mutable_anti_spoofing_key_pair()->set_public_key(
|
||||||
public_anti_spoof_key);
|
public_anti_spoof_key);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "absl/container/flat_hash_map.h"
|
#include "absl/container/flat_hash_map.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/server_access/fast_pair_repository.h"
|
#include "fastpair/server_access/fast_pair_repository.h"
|
||||||
#include "internal/platform/single_thread_executor.h"
|
#include "internal/platform/single_thread_executor.h"
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "fastpair/proto/fastpair_rpcs.pb.h"
|
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "internal/platform/logging.h"
|
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
|
#include "fastpair/proto/fastpair_rpcs.pb.h"
|
||||||
|
#include "internal/platform/logging.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include "absl/functional/any_invocable.h"
|
#include "absl/functional/any_invocable.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "absl/strings/numbers.h"
|
#include "absl/strings/numbers.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/repository/fast_pair_metadata_repository.h"
|
#include "fastpair/repository/fast_pair_metadata_repository.h"
|
||||||
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
||||||
#include "internal/platform/logging.h"
|
#include "internal/platform/logging.h"
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_http_result.h"
|
#include "fastpair/common/fast_pair_http_result.h"
|
||||||
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/repository/fake_fast_pair_metadata_repository.h"
|
#include "fastpair/repository/fake_fast_pair_metadata_repository.h"
|
||||||
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include "absl/functional/any_invocable.h"
|
#include "absl/functional/any_invocable.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
|
|
||||||
namespace nearby {
|
namespace nearby {
|
||||||
namespace fastpair {
|
namespace fastpair {
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
#include "gmock/gmock.h"
|
#include "gmock/gmock.h"
|
||||||
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
#include "fastpair/proto/fastpair_rpcs.proto.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/repository/fake_fast_pair_metadata_repository.h"
|
#include "fastpair/repository/fake_fast_pair_metadata_repository.h"
|
||||||
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
#include "fastpair/server_access/fast_pair_metadata_downloader.h"
|
||||||
#include "fastpair/server_access/fast_pair_metadata_downloader_impl.h"
|
#include "fastpair/server_access/fast_pair_metadata_downloader_impl.h"
|
||||||
@@ -53,7 +53,7 @@ class FastPairRepositoryImplTest : public ::testing::Test {
|
|||||||
void GetObservedDataRequestSuccess(
|
void GetObservedDataRequestSuccess(
|
||||||
const proto::GetObservedDeviceResponse& response) {
|
const proto::GetObservedDeviceResponse& response) {
|
||||||
FakeFastPairMetadataRepository* repository =
|
FakeFastPairMetadataRepository* repository =
|
||||||
fake_repository_factory_->fake_repository();
|
fake_repository_factory_->fake_repository();
|
||||||
std::move(repository->get_observed_device_request()->callback)(response);
|
std::move(repository->get_observed_device_request()->callback)(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,8 +64,7 @@ class FastPairRepositoryImplTest : public ::testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::optional<Result> result_;
|
std::optional<Result> result_;
|
||||||
FakeFastPairMetadataRepositoryFactory*
|
FakeFastPairMetadataRepositoryFactory* fake_repository_factory_;
|
||||||
fake_repository_factory_;
|
|
||||||
std::unique_ptr<FastPairRepositoryImpl> repository_;
|
std::unique_ptr<FastPairRepositoryImpl> repository_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -88,7 +88,7 @@ cc_test(
|
|||||||
deps = [
|
deps = [
|
||||||
":fake_fast_pair_ui",
|
":fake_fast_pair_ui",
|
||||||
":fast_pair_ui",
|
":fast_pair_ui",
|
||||||
"//fastpair/repository",
|
"//fastpair/common",
|
||||||
"//internal/platform/implementation/g3", # build_cleaner: keep
|
"//internal/platform/implementation/g3", # build_cleaner: keep
|
||||||
"@com_github_protobuf_matchers//protobuf-matchers",
|
"@com_github_protobuf_matchers//protobuf-matchers",
|
||||||
"@com_google_googletest//:gtest_main",
|
"@com_google_googletest//:gtest_main",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
||||||
#include "internal/platform/count_down_latch.h"
|
#include "internal/platform/count_down_latch.h"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "absl/functional/any_invocable.h"
|
#include "absl/functional/any_invocable.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/ui/actions.h"
|
#include "fastpair/ui/actions.h"
|
||||||
#include "internal/platform/logging.h"
|
#include "internal/platform/logging.h"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#include "absl/functional/any_invocable.h"
|
#include "absl/functional/any_invocable.h"
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/ui/actions.h"
|
#include "fastpair/ui/actions.h"
|
||||||
#include "internal/base/observer_list.h"
|
#include "internal/base/observer_list.h"
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
#include "gmock/gmock.h"
|
#include "gmock/gmock.h"
|
||||||
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/ui/actions.h"
|
#include "fastpair/ui/actions.h"
|
||||||
#include "fastpair/ui/fast_pair/fake_fast_pair_notification_controller_observer.h"
|
#include "fastpair/ui/fast_pair/fake_fast_pair_notification_controller_observer.h"
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
#include <optional>
|
#include <optional>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/server_access/fast_pair_repository.h"
|
#include "fastpair/server_access/fast_pair_repository.h"
|
||||||
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
||||||
#include "internal/platform/logging.h"
|
#include "internal/platform/logging.h"
|
||||||
@@ -64,8 +64,8 @@ void FastPairPresenterImpl::ShowDiscovery(
|
|||||||
void FastPairPresenterImpl::OnDiscoveryMetadataRetrieved(
|
void FastPairPresenterImpl::OnDiscoveryMetadataRetrieved(
|
||||||
FastPairDevice& device, const DeviceMetadata& device_metadata,
|
FastPairDevice& device, const DeviceMetadata& device_metadata,
|
||||||
FastPairNotificationController& notification_controller) {
|
FastPairNotificationController& notification_controller) {
|
||||||
device.SetVersion(device_metadata.GetFastPairVersion());
|
device.SetMetadata(device_metadata);
|
||||||
notification_controller.ShowGuestDiscoveryNotification(device_metadata,
|
notification_controller.ShowGuestDiscoveryNotification(*device.GetMetadata(),
|
||||||
std::move(callback_));
|
std::move(callback_));
|
||||||
}
|
}
|
||||||
} // namespace fastpair
|
} // namespace fastpair
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/common/fast_pair_device.h"
|
#include "fastpair/common/fast_pair_device.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
|
||||||
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
||||||
#include "fastpair/ui/fast_pair/fast_pair_presenter.h"
|
#include "fastpair/ui/fast_pair/fast_pair_presenter.h"
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
#define THIRD_PARTY_NEARBY_FASTPAIR_UI_FAST_PAIR_MOCK_FAST_PAIR_NOTIFICATION_CONTROLLER_H_
|
#define THIRD_PARTY_NEARBY_FASTPAIR_UI_FAST_PAIR_MOCK_FAST_PAIR_NOTIFICATION_CONTROLLER_H_
|
||||||
|
|
||||||
#include "gmock/gmock.h"
|
#include "gmock/gmock.h"
|
||||||
#include "fastpair/repository/device_metadata.h"
|
#include "fastpair/common/device_metadata.h"
|
||||||
#include "fastpair/ui/actions.h"
|
#include "fastpair/ui/actions.h"
|
||||||
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
#include "fastpair/ui/fast_pair/fast_pair_notification_controller.h"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user