From 27ad774fd695efef67b273630b6ef86145563555 Mon Sep 17 00:00:00 2001 From: Pat Plunkett Date: Wed, 10 Apr 2019 12:49:33 -0700 Subject: [PATCH] Fix VR-related system APIs This adds necessary nullness conditions on method arguments, and makes a Builder class final. Bug: 126700268 Bug: 126701891 Bug: 126701662 Test: Compiles Change-Id: I4e825057b413fe22d1c2ebd228a5b76641b04868 --- api/system-current.txt | 22 +++++++++---------- .../android/app/Vr2dDisplayProperties.java | 10 +++++++-- core/java/android/app/VrManager.java | 9 ++++---- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 9e730dbebc0fb..387d276fb5df7 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -604,7 +604,7 @@ package android.app { public final class Vr2dDisplayProperties implements android.os.Parcelable { ctor public Vr2dDisplayProperties(int, int, int); method public int describeContents(); - method public void dump(java.io.PrintWriter, String); + method public void dump(@NonNull java.io.PrintWriter, @NonNull String); method public int getAddedFlags(); method public int getDpi(); method public int getHeight(); @@ -615,26 +615,26 @@ package android.app { field public static final int FLAG_VIRTUAL_DISPLAY_ENABLED = 1; // 0x1 } - public static class Vr2dDisplayProperties.Builder { + public static final class Vr2dDisplayProperties.Builder { ctor public Vr2dDisplayProperties.Builder(); - method public android.app.Vr2dDisplayProperties.Builder addFlags(int); - method public android.app.Vr2dDisplayProperties build(); - method public android.app.Vr2dDisplayProperties.Builder removeFlags(int); - method public android.app.Vr2dDisplayProperties.Builder setDimensions(int, int, int); - method public android.app.Vr2dDisplayProperties.Builder setEnabled(boolean); + method @NonNull public android.app.Vr2dDisplayProperties.Builder addFlags(int); + method @NonNull public android.app.Vr2dDisplayProperties build(); + method @NonNull public android.app.Vr2dDisplayProperties.Builder removeFlags(int); + method @NonNull public android.app.Vr2dDisplayProperties.Builder setDimensions(int, int, int); + method @NonNull public android.app.Vr2dDisplayProperties.Builder setEnabled(boolean); } public class VrManager { method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public int getVr2dDisplayId(); method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isPersistentVrModeEnabled(); method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isVrModeEnabled(); - method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, android.app.VrStateCallback); + method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.app.VrStateCallback); method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setAndBindVrCompositor(android.content.ComponentName); method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setPersistentVrModeEnabled(boolean); method @RequiresPermission("android.permission.ACCESS_VR_MANAGER") public void setStandbyEnabled(boolean); - method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(android.app.Vr2dDisplayProperties); - method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(android.content.ComponentName); - method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(android.app.VrStateCallback); + method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(@NonNull android.app.Vr2dDisplayProperties); + method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(@Nullable android.content.ComponentName); + method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(@NonNull android.app.VrStateCallback); } public abstract class VrStateCallback { diff --git a/core/java/android/app/Vr2dDisplayProperties.java b/core/java/android/app/Vr2dDisplayProperties.java index bcb8592183e9c..fc200bf052530 100644 --- a/core/java/android/app/Vr2dDisplayProperties.java +++ b/core/java/android/app/Vr2dDisplayProperties.java @@ -17,6 +17,7 @@ package android.app; import android.annotation.IntDef; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -136,7 +137,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Prints out dump info. */ - public void dump(PrintWriter pw, String prefix) { + public void dump(@NonNull PrintWriter pw, @NonNull String prefix) { pw.println(prefix + toString()); } @@ -188,7 +189,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Convenience class for creating Vr2dDisplayProperties. */ - public static class Builder { + public static final class Builder { private int mAddedFlags = 0; private int mRemovedFlags = 0; @@ -203,6 +204,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Sets the dimensions to use for the virtual display. */ + @NonNull public Builder setDimensions(int width, int height, int dpi) { mWidth = width; mHeight = height; @@ -213,6 +215,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Toggles the virtual display functionality for 2D activities in VR. */ + @NonNull public Builder setEnabled(boolean enabled) { if (enabled) { addFlags(FLAG_VIRTUAL_DISPLAY_ENABLED); @@ -225,6 +228,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Adds property flags. */ + @NonNull public Builder addFlags(@Vr2dDisplayFlag int flags) { mAddedFlags |= flags; mRemovedFlags &= ~flags; @@ -234,6 +238,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Removes property flags. */ + @NonNull public Builder removeFlags(@Vr2dDisplayFlag int flags) { mRemovedFlags |= flags; mAddedFlags &= ~flags; @@ -243,6 +248,7 @@ public final class Vr2dDisplayProperties implements Parcelable { /** * Builds the Vr2dDisplayProperty instance. */ + @NonNull public Vr2dDisplayProperties build() { return new Vr2dDisplayProperties(mWidth, mHeight, mDpi, mAddedFlags, mRemovedFlags); } diff --git a/core/java/android/app/VrManager.java b/core/java/android/app/VrManager.java index 5f1a94c835c3a..c74f8c389c207 100644 --- a/core/java/android/app/VrManager.java +++ b/core/java/android/app/VrManager.java @@ -2,6 +2,7 @@ package android.app; import android.annotation.CallbackExecutor; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; @@ -71,7 +72,7 @@ public class VrManager { android.Manifest.permission.ACCESS_VR_STATE }) public void registerVrStateCallback(@NonNull @CallbackExecutor Executor executor, - VrStateCallback callback) { + @NonNull VrStateCallback callback) { if (callback == null || mCallbackMap.containsKey(callback)) { return; } @@ -99,7 +100,7 @@ public class VrManager { android.Manifest.permission.RESTRICTED_VR_ACCESS, android.Manifest.permission.ACCESS_VR_STATE }) - public void unregisterVrStateCallback(VrStateCallback callback) { + public void unregisterVrStateCallback(@NonNull VrStateCallback callback) { CallbackEntry entry = mCallbackMap.remove(callback); if (entry != null) { try { @@ -175,7 +176,7 @@ public class VrManager { */ @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties( - Vr2dDisplayProperties vr2dDisplayProp) { + @NonNull Vr2dDisplayProperties vr2dDisplayProp) { try { mService.setVr2dDisplayProperties(vr2dDisplayProp); } catch (RemoteException e) { @@ -220,7 +221,7 @@ public class VrManager { * @param componentName not used */ @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) - public void setVrInputMethod(ComponentName componentName) { + public void setVrInputMethod(@Nullable ComponentName componentName) { } /**