Fix NPE in toBundle if reference time is not set
Test: ./gradlew textclassifier:connectedCheck --info --daemon
BUG: 72307474
Change-Id: I43e41f2075632b075901ffc8539307c75b76179d
diff --git a/textclassifier/src/androidTest/java/androidx/textclassifier/TextClassificationTest.java b/textclassifier/src/androidTest/java/androidx/textclassifier/TextClassificationTest.java
index 2e7c612..83cca22 100644
--- a/textclassifier/src/androidTest/java/androidx/textclassifier/TextClassificationTest.java
+++ b/textclassifier/src/androidTest/java/androidx/textclassifier/TextClassificationTest.java
@@ -105,6 +105,20 @@
}
@Test
+ public void testMinimalBundleRequest() {
+ TextClassification.Request reference =
+ new TextClassification.Request.Builder(TEXT, START_INDEX, END_INDEX).build();
+ // Serialize/deserialize.
+ TextClassification.Request result = TextClassification.Request.createFromBundle(
+ reference.toBundle());
+
+ assertEquals(TEXT, result.getText());
+ assertEquals(START_INDEX, result.getStartIndex());
+ assertEquals(END_INDEX, result.getEndIndex());
+ assertEquals(null, result.getReferenceTime());
+ }
+
+ @Test
@SdkSuppress(minSdkVersion = 28)
public void testToPlatformRequest() {
TextClassification.Request request = createTextClassificationRequest();
diff --git a/textclassifier/src/main/java/androidx/textclassifier/BundleUtils.java b/textclassifier/src/main/java/androidx/textclassifier/BundleUtils.java
index 72e0908..b55e708 100644
--- a/textclassifier/src/main/java/androidx/textclassifier/BundleUtils.java
+++ b/textclassifier/src/main/java/androidx/textclassifier/BundleUtils.java
@@ -140,4 +140,20 @@
}
return LocaleListCompat.forLanguageTags(localeTags);
}
+
+ static void putLong(@NonNull Bundle bundle, @NonNull String key, @Nullable Long value) {
+ if (value == null) {
+ bundle.remove(key);
+ return;
+ }
+ bundle.putLong(key, value);
+ }
+
+ @Nullable
+ static Long getLong(@NonNull Bundle bundle, @NonNull String key) {
+ if (!bundle.containsKey(key)) {
+ return null;
+ }
+ return bundle.getLong(key);
+ }
}
diff --git a/textclassifier/src/main/java/androidx/textclassifier/TextClassification.java b/textclassifier/src/main/java/androidx/textclassifier/TextClassification.java
index ee99614..aac53ff 100644
--- a/textclassifier/src/main/java/androidx/textclassifier/TextClassification.java
+++ b/textclassifier/src/main/java/androidx/textclassifier/TextClassification.java
@@ -538,7 +538,7 @@
bundle.putInt(EXTRA_START_INDEX, mStartIndex);
bundle.putInt(EXTRA_END_INDEX, mEndIndex);
BundleUtils.putLocaleList(bundle, EXTRA_DEFAULT_LOCALES, mDefaultLocales);
- bundle.putLong(EXTRA_REFERENCE_TIME, mReferenceTime);
+ BundleUtils.putLong(bundle, EXTRA_REFERENCE_TIME, mReferenceTime);
return bundle;
}
@@ -551,9 +551,8 @@
bundle.getInt(EXTRA_START_INDEX),
bundle.getInt(EXTRA_END_INDEX))
.setDefaultLocales(BundleUtils.getLocaleList(bundle, EXTRA_DEFAULT_LOCALES))
- .setReferenceTime(bundle.getLong(EXTRA_REFERENCE_TIME));
- final Request request = builder.build();
- return request;
+ .setReferenceTime(BundleUtils.getLong(bundle, EXTRA_REFERENCE_TIME));
+ return builder.build();
}
}
}