diff options
author | 2025-02-25 06:20:08 +0000 | |
---|---|---|
committer | 2025-02-25 19:50:03 -0800 | |
commit | 88ec13f3b1a4e2dbcce87e368ae347a8ee267a0d (patch) | |
tree | 5f5b448d2929612425b7504db54edccbda571aae | |
parent | ffe24b26fa178edbc1dd7ce33af1bce1a87ebf17 (diff) |
Convert AdvtFilterOnFoundOnLostInfo.java class to a record
Bug: 394958283
Test: atest AdvtFilterOnFoundOnLostInfoTest
Flag: Exempt refactor no-op
Change-Id: If4453a18e0241f9609dad5a7588c67ed9ef4bec9
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, |