Migrate compose ui to use JSpecify annotations
CL created by running `development/jspecify_update.py compose/ui/ui`
We are updating all AndroidX libraries to use the Jspecify nullness annotations (https://docs.google.com/document/d/1XjainD032hUdCfgXIzRThHvP9FJANYuocKaTDXWuLXo/edit?usp=sharing)
Bug: 326456246
Test: `checkApi`, `lint`, `runErrorProne`
Relnote: "This library now uses [JSpecify nullness annotations](https://jspecify.dev/), which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode"
Change-Id: Idfef8002dd13e94de525c5e53d018437e2cc050b
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index a2623dd..74982c0 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -73,6 +73,7 @@
jvmMain {
dependsOn(commonMain)
dependencies {
+ api(libs.jspecify)
}
}
diff --git a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/AutofillIdCompat.java b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/AutofillIdCompat.java
index 53360b6..76a6dcc 100644
--- a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/AutofillIdCompat.java
+++ b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/AutofillIdCompat.java
@@ -18,10 +18,11 @@
import android.view.autofill.AutofillId;
-import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
+import org.jspecify.annotations.NonNull;
+
/**
* Helper for accessing features in {@link AutofillId}.
*/
@@ -45,8 +46,7 @@
* @return wrapped class
*/
@RequiresApi(26)
- @NonNull
- public static AutofillIdCompat toAutofillIdCompat(@NonNull AutofillId autofillId) {
+ public static @NonNull AutofillIdCompat toAutofillIdCompat(@NonNull AutofillId autofillId) {
return new AutofillIdCompat(autofillId);
}
@@ -60,8 +60,7 @@
* @see AutofillIdCompat#toAutofillIdCompat(AutofillId)
*/
@RequiresApi(26)
- @NonNull
- public AutofillId toAutofillId() {
+ public @NonNull AutofillId toAutofillId() {
return (AutofillId) mWrappedObj;
}
}
diff --git a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat.java b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat.java
index a62dd2a..476a580 100644
--- a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat.java
+++ b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat.java
@@ -24,11 +24,12 @@
import android.view.autofill.AutofillId;
import android.view.contentcapture.ContentCaptureSession;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
import java.util.List;
import java.util.Objects;
@@ -55,8 +56,7 @@
* @return wrapped class
*/
@RequiresApi(29)
- @NonNull
- public static ContentCaptureSessionCompat toContentCaptureSessionCompat(
+ public static @NonNull ContentCaptureSessionCompat toContentCaptureSessionCompat(
@NonNull ContentCaptureSession contentCaptureSession, @NonNull View host) {
return new ContentCaptureSessionCompat(contentCaptureSession, host);
}
@@ -71,8 +71,7 @@
* @see ContentCaptureSessionCompat#toContentCaptureSessionCompat(ContentCaptureSession, View)
*/
@RequiresApi(29)
- @NonNull
- public ContentCaptureSession toContentCaptureSession() {
+ public @NonNull ContentCaptureSession toContentCaptureSession() {
return (ContentCaptureSession) mWrappedObj;
}
@@ -103,8 +102,7 @@
*
* @return {@link AutofillId} for the virtual child
*/
- @Nullable
- public AutofillId newAutofillId(long virtualChildId) {
+ public @Nullable AutofillId newAutofillId(long virtualChildId) {
if (SDK_INT >= 29) {
return Api29Impl.newAutofillId(
(ContentCaptureSession) mWrappedObj,
@@ -130,8 +128,7 @@
*
* @return a new {@link ViewStructure} that can be used for Content Capture purposes.
*/
- @Nullable
- public ViewStructureCompat newVirtualViewStructure(
+ public @Nullable ViewStructureCompat newVirtualViewStructure(
@NonNull AutofillId parentId, long virtualId) {
if (SDK_INT >= 29) {
return ViewStructureCompat.toViewStructureCompat(
@@ -194,7 +191,7 @@
*
* @param virtualIds ids of the virtual children.
*/
- public void notifyViewsDisappeared(@NonNull long[] virtualIds) {
+ public void notifyViewsDisappeared(long @NonNull [] virtualIds) {
if (SDK_INT >= 34) {
Api29Impl.notifyViewsDisappeared(
(ContentCaptureSession) mWrappedObj,
diff --git a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewCompatShims.java b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewCompatShims.java
index e6cc549..0a87f79d 100644
--- a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewCompatShims.java
+++ b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewCompatShims.java
@@ -22,11 +22,12 @@
import android.view.contentcapture.ContentCaptureSession;
import androidx.annotation.IntDef;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -117,8 +118,7 @@
* inherited by ancestors, default session or {@code null} if content capture is disabled for
* this view.
*/
- @Nullable
- public static ContentCaptureSessionCompat getContentCaptureSession(@NonNull View v) {
+ public static @Nullable ContentCaptureSessionCompat getContentCaptureSession(@NonNull View v) {
if (Build.VERSION.SDK_INT >= 29) {
ContentCaptureSession session = Api29Impl.getContentCaptureSession(v);
if (session == null) {
@@ -146,8 +146,7 @@
* @param v The View against which to invoke the method.
* @return The View's autofill id.
*/
- @Nullable
- public static AutofillIdCompat getAutofillId(@NonNull View v) {
+ public static @Nullable AutofillIdCompat getAutofillId(@NonNull View v) {
if (Build.VERSION.SDK_INT >= 26) {
return AutofillIdCompat.toAutofillIdCompat(Api26Impl.getAutofillId(v));
}
diff --git a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewStructureCompat.java b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewStructureCompat.java
index 8bc0994..71f2d7f 100644
--- a/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewStructureCompat.java
+++ b/compose/ui/ui/src/main/java/androidx/compose/ui/platform/coreshims/ViewStructureCompat.java
@@ -21,11 +21,12 @@
import android.os.Bundle;
import android.view.ViewStructure;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
/**
* Helper for accessing features in {@link ViewStructure}.
* <p>
@@ -48,8 +49,7 @@
* @return wrapped class
*/
@RequiresApi(23)
- @NonNull
- public static ViewStructureCompat toViewStructureCompat(
+ public static @NonNull ViewStructureCompat toViewStructureCompat(
@NonNull ViewStructure contentCaptureSession) {
return new ViewStructureCompat(contentCaptureSession);
}
@@ -64,8 +64,7 @@
* @see ViewStructureCompat#toViewStructureCompat(ViewStructure)
*/
@RequiresApi(23)
- @NonNull
- public ViewStructure toViewStructure() {
+ public @NonNull ViewStructure toViewStructure() {
return (ViewStructure) mWrappedObj;
}
@@ -200,8 +199,7 @@
* <li>SDK 22 and below, this method returns null.
* </ul>
*/
- @Nullable
- public Bundle getExtras() {
+ public @Nullable Bundle getExtras() {
if (SDK_INT >= 23) {
return Api23Impl.getExtras((ViewStructure) mWrappedObj);
}