verify the pairing success info is upload to footprint and bloomfilter
broadcast can verify
Test: pairing with device successfully check the footprint viewer info
is populate and the bloomfilter is detect
Bug: 218232824
Change-Id: I233717a01448d52a93ff56eef1538b1554d4a15d
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
index 3f7ad2a..f8d5a62 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
@@ -86,12 +86,19 @@
} else {
// Start to process bloom filter
- List<Account> accountList =
- FastPairDataProvider.getInstance().loadFastPairEligibleAccounts();
- byte[] bloomFilterByteArray = FastPairDecoder.getBloomFilter(fastPairDevice.getData());
- byte[] bloomFilterSalt = FastPairDecoder.getBloomFilterSalt(fastPairDevice.getData());
- for (Account account : accountList) {
- try {
+ try {
+ List<Account> accountList =
+ FastPairDataProvider.getInstance().loadFastPairEligibleAccounts();
+ Log.d(TAG, "account list size" + accountList.size());
+ byte[] bloomFilterByteArray = FastPairDecoder
+ .getBloomFilter(fastPairDevice.getData());
+ byte[] bloomFilterSalt = FastPairDecoder
+ .getBloomFilterSalt(fastPairDevice.getData());
+ if (bloomFilterByteArray == null || bloomFilterByteArray.length == 0) {
+ Log.d(TAG, "bloom filter byte size is 0");
+ return;
+ }
+ for (Account account : accountList) {
List<Data.FastPairDeviceWithAccountKey> listDevices =
FastPairDataProvider.getInstance().loadFastPairDevicesWithAccountKey(
account);
@@ -100,14 +107,15 @@
new BloomFilter(bloomFilterByteArray,
new FastPairBloomFilterHasher()), bloomFilterSalt);
if (recognizedDevice != null) {
- Log.d(TAG, "find matched device show notification to remind user to pair");
+ Log.d(TAG, "find matched device show notification to remind"
+ + " user to pair");
return;
}
- } catch (IllegalStateException e) {
- Log.e(TAG, "OEM does not construct fast pair data proxy correctly");
}
-
+ } catch (IllegalStateException e) {
+ Log.e(TAG, "OEM does not construct fast pair data proxy correctly");
}
+
}
}
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairController.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairController.java
index cf8cd62..793e126 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairController.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairController.java
@@ -125,10 +125,7 @@
@Override
public void run() {
DiscoveryItem item = null;
- if (itemId != null) {
- // api call to get Fast Pair related info
- item = mFastPairCacheManager.getDiscoveryItem(itemId);
- } else if (discoveryItem != null) {
+ if (discoveryItem != null) {
try {
item = new DiscoveryItem(mContext,
Cache.StoredDiscoveryItem.parseFrom(discoveryItem));
@@ -136,6 +133,7 @@
Log.w(TAG,
"Error parsing serialized discovery item with size "
+ discoveryItem.length);
+ return;
}
}
@@ -196,6 +194,7 @@
Log.d(TAG, "FastPair: fastpairing, skip pair request");
return;
}
+ mIsFastPairing = true;
Log.d(TAG, "FastPair: start pair");
// Hide all "tap to pair" notifications until after the flow completes.
@@ -213,7 +212,7 @@
companionApp,
mFootprintsDeviceManager,
pairingProgressHandlerBase);
- mIsFastPairing = true;
+ mIsFastPairing = false;
}
/** Fixes a companion app package name with extra spaces. */
@@ -247,26 +246,26 @@
FastPairManager.processBackgroundTask(() -> {
Cache.StoredDiscoveryItem storedDiscoveryItem =
prepareStoredDiscoveryItemForFootprints(discoveryItem);
- if (storedDiscoveryItem != null) {
- byte[] hashValue =
- Hashing.sha256()
- .hashBytes(
- concat(accountKey, BluetoothAddress.decode(publicAddress)))
- .asBytes();
- FastPairUploadInfo uploadInfo =
- new FastPairUploadInfo(storedDiscoveryItem, ByteString.copyFrom(accountKey),
- ByteString.copyFrom(hashValue));
- // account data place holder here
- try {
- FastPairDataProvider.getInstance().optIn(new Account("empty", "empty"));
+ byte[] hashValue =
+ Hashing.sha256()
+ .hashBytes(
+ concat(accountKey, BluetoothAddress.decode(publicAddress)))
+ .asBytes();
+ FastPairUploadInfo uploadInfo =
+ new FastPairUploadInfo(storedDiscoveryItem, ByteString.copyFrom(accountKey),
+ ByteString.copyFrom(hashValue));
+ // account data place holder here
+ try {
+ List<Account> accountList =
+ FastPairDataProvider.getInstance().loadFastPairEligibleAccounts();
+ if (accountList.size() > 0) {
+ FastPairDataProvider.getInstance().optIn(accountList.get(0));
FastPairDataProvider.getInstance().upload(
- new Account("empty", "empty"), uploadInfo);
- } catch (IllegalStateException e) {
- Log.e(TAG, "OEM does not construct fast pair data proxy correctly");
+ accountList.get(0), uploadInfo);
}
-
+ } catch (IllegalStateException e) {
+ Log.e(TAG, "OEM does not construct fast pair data proxy correctly");
}
-
});
}
diff --git a/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java b/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
index f8c16a1..f15239e 100644
--- a/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
+++ b/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
@@ -109,6 +109,7 @@
requestParcel.account = account;
requestParcel.requestType = FastPairDataProviderBase.MANAGE_REQUEST_ADD;
mProxyFastPairDataProvider.manageFastPairAccount(requestParcel);
+ return;
}
throw new IllegalStateException("No ProxyFastPairDataProvider yet constructed");
}
@@ -128,6 +129,7 @@
Utils.convertFastPairUploadInfoToFastPairAccountKeyDeviceMetadata(
uploadInfo);
mProxyFastPairDataProvider.manageFastPairAccountDevice(requestParcel);
+ return;
}
throw new IllegalStateException("No ProxyFastPairDataProvider yet constructed");
}