summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ömer Faruk Yılmaz <ofy@google.com> 2025-02-25 06:20:08 +0000
committer Ömer Faruk Yılmaz <ofy@google.com> 2025-02-25 19:50:03 -0800
commit88ec13f3b1a4e2dbcce87e368ae347a8ee267a0d (patch)
tree5f5b448d2929612425b7504db54edccbda571aae
parentffe24b26fa178edbc1dd7ce33af1bce1a87ebf17 (diff)
Convert AdvtFilterOnFoundOnLostInfo.java class to a record
Bug: 394958283 Test: atest AdvtFilterOnFoundOnLostInfoTest Flag: Exempt refactor no-op Change-Id: If4453a18e0241f9609dad5a7588c67ed9ef4bec9
-rw-r--r--Android.bp1
-rw-r--r--android/app/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfo.java128
-rw-r--r--android/app/src/com/android/bluetooth/le_scan/ScanController.java39
-rw-r--r--android/app/src/com/android/bluetooth/le_scan/ScanNativeInterface.java16
-rw-r--r--android/app/tests/unit/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfoTest.java61
-rw-r--r--android/app/tests/unit/src/com/android/bluetooth/le_scan/ScanControllerTest.java17
6 files changed, 88 insertions, 174 deletions
diff --git a/Android.bp b/Android.bp
index e1e9a5041d..93d31a7b63 100644
--- a/Android.bp
+++ b/Android.bp
@@ -121,6 +121,7 @@ java_defaults {
javacflags: [
"-Xep:AlmostJavadoc:ERROR",
"-Xep:AlreadyChecked:ERROR",
+ "-Xep:ArrayRecordComponent:ERROR",
"-Xep:BadImport:ERROR",
"-Xep:CatchAndPrintStackTrace:ERROR",
"-Xep:CatchFail:ERROR",
diff --git a/android/app/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfo.java b/android/app/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfo.java
index 9f4c910432..6d38a07d93 100644
--- a/android/app/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfo.java
+++ b/android/app/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfo.java
@@ -16,119 +16,29 @@
package com.android.bluetooth.le_scan;
-import android.annotation.Nullable;
import android.bluetooth.BluetoothDevice;
-class AdvtFilterOnFoundOnLostInfo {
- private int mClientIf;
-
- private int mAdvPktLen;
- @Nullable private byte[] mAdvPkt;
-
- private int mScanRspLen;
-
- @Nullable private byte[] mScanRsp;
-
- private int mFiltIndex;
- private int mAdvState;
- private int mAdvInfoPresent;
- private String mAddress;
-
- private int mAddrType;
- private int mTxPower;
- private int mRssiValue;
- private int mTimeStamp;
-
- AdvtFilterOnFoundOnLostInfo(
- int clientIf,
- int advPktLen,
- byte[] advPkt,
- int scanRspLen,
- byte[] scanRsp,
- int filtIndex,
- int advState,
- int advInfoPresent,
- String address,
- int addrType,
- int txPower,
- int rssiValue,
- int timeStamp) {
-
- mClientIf = clientIf;
- mAdvPktLen = advPktLen;
- mAdvPkt = advPkt;
- mScanRspLen = scanRspLen;
- mScanRsp = scanRsp;
- mFiltIndex = filtIndex;
- mAdvState = advState;
- mAdvInfoPresent = advInfoPresent;
- mAddress = address;
- mAddrType = addrType;
- mTxPower = txPower;
- mRssiValue = rssiValue;
- mTimeStamp = timeStamp;
- }
-
- public int getClientIf() {
- return mClientIf;
- }
-
- public int getFiltIndex() {
- return mFiltIndex;
- }
-
- public int getAdvState() {
- return mAdvState;
- }
-
- public int getTxPower() {
- return mTxPower;
- }
-
- public int getTimeStamp() {
- return mTimeStamp;
- }
-
- public int getRSSIValue() {
- return mRssiValue;
- }
-
- public int getAdvInfoPresent() {
- return mAdvInfoPresent;
- }
-
- public String getAddress() {
- return mAddress;
- }
-
- @BluetoothDevice.AddressType
- public int getAddressType() {
- return mAddrType;
- }
-
- public byte[] getAdvPacketData() {
- return mAdvPkt;
- }
-
- public int getAdvPacketLen() {
- return mAdvPktLen;
- }
-
- public byte[] getScanRspData() {
- return mScanRsp;
- }
-
- public int getScanRspLen() {
- return mScanRspLen;
- }
+import com.google.protobuf.ByteString;
+
+record AdvtFilterOnFoundOnLostInfo(
+ int clientIf,
+ int advPacketLen,
+ ByteString advPacket,
+ int scanResponseLen,
+ ByteString scanResponse,
+ int filtIndex,
+ int advState,
+ int advInfoPresent,
+ String address,
+ @BluetoothDevice.AddressType int addressType,
+ int txPower,
+ int rssiValue,
+ int timeStamp) {
public byte[] getResult() {
- int resultLength = mAdvPkt.length + ((mScanRsp != null) ? mScanRsp.length : 0);
- byte[] result = new byte[resultLength];
- System.arraycopy(mAdvPkt, 0, result, 0, mAdvPkt.length);
- if (mScanRsp != null) {
- System.arraycopy(mScanRsp, 0, result, mAdvPkt.length, mScanRsp.length);
+ if (scanResponse == null) {
+ return advPacket.toByteArray();
}
- return result;
+ return advPacket.concat(scanResponse).toByteArray();
}
}
diff --git a/android/app/src/com/android/bluetooth/le_scan/ScanController.java b/android/app/src/com/android/bluetooth/le_scan/ScanController.java
index 35f38d90d6..6dc3073178 100644
--- a/android/app/src/com/android/bluetooth/le_scan/ScanController.java
+++ b/android/app/src/com/android/bluetooth/le_scan/ScanController.java
@@ -71,6 +71,8 @@ import com.android.internal.annotations.VisibleForTesting;
import libcore.util.HexEncoding;
+import com.google.protobuf.ByteString;
+
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
@@ -966,10 +968,10 @@ public class ScanController {
AdvtFilterOnFoundOnLostInfo createOnTrackAdvFoundLostObject(
int clientIf,
- int advPktLen,
- byte[] advPkt,
- int scanRspLen,
- byte[] scanRsp,
+ int advPacketLen,
+ byte[] advPacket,
+ int scanResponseLen,
+ byte[] scanResponse,
int filtIndex,
int advState,
int advInfoPresent,
@@ -978,13 +980,12 @@ public class ScanController {
int txPower,
int rssiValue,
int timeStamp) {
-
return new AdvtFilterOnFoundOnLostInfo(
clientIf,
- advPktLen,
- advPkt,
- scanRspLen,
- scanRsp,
+ advPacketLen,
+ ByteString.copyFrom(advPacket),
+ scanResponseLen,
+ ByteString.copyFrom(scanResponse),
filtIndex,
advState,
advInfoPresent,
@@ -999,15 +1000,15 @@ public class ScanController {
Log.d(
TAG,
"onTrackAdvFoundLost() - scannerId= "
- + trackingInfo.getClientIf()
+ + trackingInfo.clientIf()
+ " address = "
- + trackingInfo.getAddress()
+ + trackingInfo.address()
+ " addressType = "
- + trackingInfo.getAddressType()
+ + trackingInfo.addressType()
+ " adv_state = "
- + trackingInfo.getAdvState());
+ + trackingInfo.advState());
- ScannerMap.ScannerApp app = mScannerMap.getById(trackingInfo.getClientIf());
+ ScannerMap.ScannerApp app = mScannerMap.getById(trackingInfo.clientIf());
if (app == null) {
Log.e(TAG, "app is null");
return;
@@ -1015,18 +1016,17 @@ public class ScanController {
BluetoothDevice device =
BluetoothAdapter.getDefaultAdapter()
- .getRemoteLeDevice(
- trackingInfo.getAddress(), trackingInfo.getAddressType());
- int advertiserState = trackingInfo.getAdvState();
+ .getRemoteLeDevice(trackingInfo.address(), trackingInfo.addressType());
+ int advertiserState = trackingInfo.advState();
ScanResult result =
new ScanResult(
device,
ScanRecord.parseFromBytes(trackingInfo.getResult()),
- trackingInfo.getRSSIValue(),
+ trackingInfo.rssiValue(),
SystemClock.elapsedRealtimeNanos());
for (ScanClient client : mScanManager.getRegularScanQueue()) {
- if (client.scannerId == trackingInfo.getClientIf()) {
+ if (client.scannerId == trackingInfo.clientIf()) {
ScanSettings settings = client.settings;
if ((advertiserState == ADVT_STATE_ONFOUND)
&& ((settings.getCallbackType() & ScanSettings.CALLBACK_TYPE_FIRST_MATCH)
@@ -1733,5 +1733,4 @@ public class ScanController {
builder.addAllScanEvent(mScanEvents);
}
}
-
}
diff --git a/android/app/src/com/android/bluetooth/le_scan/ScanNativeInterface.java b/android/app/src/com/android/bluetooth/le_scan/ScanNativeInterface.java
index c317c86cc8..2973dc5e56 100644
--- a/android/app/src/com/android/bluetooth/le_scan/ScanNativeInterface.java
+++ b/android/app/src/com/android/bluetooth/le_scan/ScanNativeInterface.java
@@ -387,10 +387,10 @@ public class ScanNativeInterface {
@Nullable
AdvtFilterOnFoundOnLostInfo createOnTrackAdvFoundLostObject(
int clientIf,
- int advPktLen,
- byte[] advPkt,
- int scanRspLen,
- byte[] scanRsp,
+ int advPacketLen,
+ byte[] advPacket,
+ int scanResponseLen,
+ byte[] scanResponse,
int filtIndex,
int advState,
int advInfoPresent,
@@ -405,10 +405,10 @@ public class ScanNativeInterface {
}
return mScanController.createOnTrackAdvFoundLostObject(
clientIf,
- advPktLen,
- advPkt,
- scanRspLen,
- scanRsp,
+ advPacketLen,
+ advPacket,
+ scanResponseLen,
+ scanResponse,
filtIndex,
advState,
advInfoPresent,
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfoTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfoTest.java
index c56769fa96..aec90ecf29 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfoTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_scan/AdvtFilterOnFoundOnLostInfoTest.java
@@ -16,66 +16,69 @@
package com.android.bluetooth.le_scan;
-import static com.google.common.truth.Truth.assertThat;
-
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.google.common.truth.Expect;
+import com.google.protobuf.ByteString;
+
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-/** Test cases for {@link AdvtFilterOnFoundOnLostInfoTest}. */
+/** Test cases for {@link AdvtFilterOnFoundOnLostInfo}. */
@SmallTest
@RunWith(AndroidJUnit4.class)
public class AdvtFilterOnFoundOnLostInfoTest {
+ @Rule public Expect expect = Expect.create();
+
@Test
public void advtFilterOnFoundOnLostInfoParams() {
int clientIf = 0;
- int advPktLen = 1;
- byte[] advPkt = new byte[] {0x02};
- int scanRspLen = 3;
- byte[] scanRsp = new byte[] {0x04};
+ int advPacketLen = 1;
+ ByteString advPacket = ByteString.copyFrom(new byte[] {0x02});
+ int scanResponseLen = 3;
+ ByteString scanResponse = ByteString.copyFrom(new byte[] {0x04});
int filtIndex = 5;
int advState = 6;
int advInfoPresent = 7;
String address = "00:11:22:33:FF:EE";
- int addrType = 8;
+ int addressType = 8;
int txPower = 9;
int rssiValue = 10;
int timeStamp = 11;
+ byte[] resultByteArray = new byte[] {2, 4};
AdvtFilterOnFoundOnLostInfo advtFilterOnFoundOnLostInfo =
new AdvtFilterOnFoundOnLostInfo(
clientIf,
- advPktLen,
- advPkt,
- scanRspLen,
- scanRsp,
+ advPacketLen,
+ advPacket,
+ scanResponseLen,
+ scanResponse,
filtIndex,
advState,
advInfoPresent,
address,
- addrType,
+ addressType,
txPower,
rssiValue,
timeStamp);
- assertThat(advtFilterOnFoundOnLostInfo.getClientIf()).isEqualTo(clientIf);
- assertThat(advtFilterOnFoundOnLostInfo.getFiltIndex()).isEqualTo(filtIndex);
- assertThat(advtFilterOnFoundOnLostInfo.getAdvState()).isEqualTo(advState);
- assertThat(advtFilterOnFoundOnLostInfo.getTxPower()).isEqualTo(txPower);
- assertThat(advtFilterOnFoundOnLostInfo.getTimeStamp()).isEqualTo(timeStamp);
- assertThat(advtFilterOnFoundOnLostInfo.getRSSIValue()).isEqualTo(rssiValue);
- assertThat(advtFilterOnFoundOnLostInfo.getAdvInfoPresent()).isEqualTo(advInfoPresent);
- assertThat(advtFilterOnFoundOnLostInfo.getAddress()).isEqualTo(address);
- assertThat(advtFilterOnFoundOnLostInfo.getAddressType()).isEqualTo(addrType);
- assertThat(advtFilterOnFoundOnLostInfo.getAdvPacketData()).isEqualTo(advPkt);
- assertThat(advtFilterOnFoundOnLostInfo.getAdvPacketLen()).isEqualTo(advPktLen);
- assertThat(advtFilterOnFoundOnLostInfo.getScanRspData()).isEqualTo(scanRsp);
- assertThat(advtFilterOnFoundOnLostInfo.getScanRspLen()).isEqualTo(scanRspLen);
-
- byte[] resultByteArray = new byte[] {2, 4};
- assertThat(advtFilterOnFoundOnLostInfo.getResult()).isEqualTo(resultByteArray);
+ expect.that(advtFilterOnFoundOnLostInfo.clientIf()).isEqualTo(clientIf);
+ expect.that(advtFilterOnFoundOnLostInfo.advPacketLen()).isEqualTo(advPacketLen);
+ expect.that(advtFilterOnFoundOnLostInfo.advPacket()).isEqualTo(advPacket);
+ expect.that(advtFilterOnFoundOnLostInfo.scanResponseLen()).isEqualTo(scanResponseLen);
+ expect.that(advtFilterOnFoundOnLostInfo.scanResponse()).isEqualTo(scanResponse);
+ expect.that(advtFilterOnFoundOnLostInfo.filtIndex()).isEqualTo(filtIndex);
+ expect.that(advtFilterOnFoundOnLostInfo.advState()).isEqualTo(advState);
+ expect.that(advtFilterOnFoundOnLostInfo.advInfoPresent()).isEqualTo(advInfoPresent);
+ expect.that(advtFilterOnFoundOnLostInfo.address()).isEqualTo(address);
+ expect.that(advtFilterOnFoundOnLostInfo.addressType()).isEqualTo(addressType);
+ expect.that(advtFilterOnFoundOnLostInfo.txPower()).isEqualTo(txPower);
+ expect.that(advtFilterOnFoundOnLostInfo.rssiValue()).isEqualTo(rssiValue);
+ expect.that(advtFilterOnFoundOnLostInfo.timeStamp()).isEqualTo(timeStamp);
+ expect.that(advtFilterOnFoundOnLostInfo.getResult()).isEqualTo(resultByteArray);
}
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_scan/ScanControllerTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_scan/ScanControllerTest.java
index d25f67b2d8..69af019b45 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_scan/ScanControllerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_scan/ScanControllerTest.java
@@ -59,6 +59,7 @@ import com.android.bluetooth.btservice.CompanionManager;
import com.android.bluetooth.gatt.GattNativeInterface;
import com.android.bluetooth.gatt.GattObjectsFactory;
+import com.google.protobuf.ByteString;
import com.google.testing.junit.testparameterinjector.TestParameter;
import com.google.testing.junit.testparameterinjector.TestParameterInjector;
@@ -426,10 +427,10 @@ public class ScanControllerTest {
@Test
public void onTrackAdvFoundLost() throws Exception {
int scannerId = 1;
- int advPktLen = 1;
- byte[] advPkt = new byte[] {0x02};
- int scanRspLen = 3;
- byte[] scanRsp = new byte[] {0x04};
+ int advPacketLen = 1;
+ byte[] advPacket = new byte[] {0x02};
+ int scanResponseLen = 3;
+ byte[] scanResponse = new byte[] {0x04};
int filtIndex = 5;
int advState = ScanController.ADVT_STATE_ONFOUND;
@@ -461,10 +462,10 @@ public class ScanControllerTest {
AdvtFilterOnFoundOnLostInfo advtFilterOnFoundOnLostInfo =
new AdvtFilterOnFoundOnLostInfo(
scannerId,
- advPktLen,
- advPkt,
- scanRspLen,
- scanRsp,
+ advPacketLen,
+ ByteString.copyFrom(advPacket),
+ scanResponseLen,
+ ByteString.copyFrom(scanResponse),
filtIndex,
advState,
advInfoPresent,