Fix crash issue due to null value.
Test: manually tested.
Bug: 204780849
Change-Id: I493dff914b18e9ee677bc0d3933485625e0e28af
diff --git a/nearby/service/java/com/android/server/nearby/provider/Utils.java b/nearby/service/java/com/android/server/nearby/provider/Utils.java
index ddb01fa..3aceb7d 100644
--- a/nearby/service/java/com/android/server/nearby/provider/Utils.java
+++ b/nearby/service/java/com/android/server/nearby/provider/Utils.java
@@ -291,30 +291,42 @@
if (metadata == null) {
return null;
}
+
+ Rpcs.Device.Builder deviceBuilder = Rpcs.Device.newBuilder();
+ if (metadata.antiSpoofPublicKey != null) {
+ deviceBuilder.setAntiSpoofingKeyPair(Rpcs.AntiSpoofingKeyPair.newBuilder()
+ .setPublicKey(ByteString.copyFrom(metadata.antiSpoofPublicKey))
+ .build());
+ }
+ if (metadata.deviceMetadata != null) {
+ Rpcs.TrueWirelessHeadsetImages.Builder imagesBuilder =
+ Rpcs.TrueWirelessHeadsetImages.newBuilder();
+ if (metadata.deviceMetadata.trueWirelessImageUrlLeftBud != null) {
+ imagesBuilder.setLeftBudUrl(metadata.deviceMetadata.trueWirelessImageUrlLeftBud);
+ }
+ if (metadata.deviceMetadata.trueWirelessImageUrlRightBud != null) {
+ imagesBuilder.setRightBudUrl(metadata.deviceMetadata.trueWirelessImageUrlRightBud);
+ }
+ if (metadata.deviceMetadata.trueWirelessImageUrlCase != null) {
+ imagesBuilder.setCaseUrl(metadata.deviceMetadata.trueWirelessImageUrlCase);
+ }
+ deviceBuilder.setTrueWirelessImages(imagesBuilder.build());
+ if (metadata.deviceMetadata.imageUrl != null) {
+ deviceBuilder.setImageUrl(metadata.deviceMetadata.imageUrl);
+ }
+ if (metadata.deviceMetadata.intentUri != null) {
+ deviceBuilder.setIntentUri(metadata.deviceMetadata.intentUri);
+ }
+ if (metadata.deviceMetadata.name != null) {
+ deviceBuilder.setName(metadata.deviceMetadata.name);
+ }
+ deviceBuilder.setBleTxPower(metadata.deviceMetadata.bleTxPower)
+ .setTriggerDistance(metadata.deviceMetadata.triggerDistance)
+ .setDeviceType(Rpcs.DeviceType.forNumber(metadata.deviceMetadata.deviceType));
+ }
+
return Rpcs.GetObservedDeviceResponse.newBuilder()
- .setDevice(Rpcs.Device.newBuilder()
- .setAntiSpoofingKeyPair(Rpcs.AntiSpoofingKeyPair.newBuilder()
- .setPublicKey(ByteString.copyFrom(metadata.antiSpoofPublicKey))
- .build())
- .setTrueWirelessImages(Rpcs.TrueWirelessHeadsetImages.newBuilder()
- .setLeftBudUrl(
- metadata.deviceMetadata.trueWirelessImageUrlLeftBud)
- .setRightBudUrl(
- metadata.deviceMetadata
- .trueWirelessImageUrlRightBud)
- .setCaseUrl(
- metadata.deviceMetadata
- .trueWirelessImageUrlCase
- )
- .build())
- .setImageUrl(metadata.deviceMetadata.imageUrl)
- .setIntentUri(metadata.deviceMetadata.intentUri)
- .setName(metadata.deviceMetadata.name)
- .setBleTxPower(metadata.deviceMetadata.bleTxPower)
- .setTriggerDistance(metadata.deviceMetadata.triggerDistance)
- .setDeviceType(
- Rpcs.DeviceType.forNumber(metadata.deviceMetadata.deviceType))
- .build())
+ .setDevice(deviceBuilder.build())
.setImage(ByteString.copyFrom(metadata.deviceMetadata.image))
.setStrings(Rpcs.ObservedDeviceStrings.newBuilder()
.setAssistantSetupHalfSheet(metadata.deviceMetadata.assistantSetupHalfSheet)