Updated DisplayHash APIs

Updated the DisplayHash APIs and docs based on API review

Test: Builds
Bug: 183547053
Bug: 185274179
Change-Id: I23e6491341a3f9cac96c704aa0a93d7d3e8dfebb
diff --git a/core/api/current.txt b/core/api/current.txt
index 4b12d54..07dacd7 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -48567,7 +48567,7 @@
     method public android.view.View focusSearch(int);
     method public void forceHasOverlappingRendering(boolean);
     method public void forceLayout();
-    method @Nullable public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback);
+    method public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback);
     method public static int generateViewId();
     method public CharSequence getAccessibilityClassName();
     method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 37bc44f..847a5c4 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -40,6 +40,7 @@
     field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
     field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE";
     field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
+    field public static final String BIND_DISPLAY_HASHING_SERVICE = "android.permission.BIND_DISPLAY_HASHING_SERVICE";
     field public static final String BIND_DOMAIN_VERIFICATION_AGENT = "android.permission.BIND_DOMAIN_VERIFICATION_AGENT";
     field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
     field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
@@ -9822,7 +9823,7 @@
   public final class DisplayHashParams implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public android.util.Size getBufferSize();
-    method public boolean isGrayscaleBuffer();
+    method public boolean isUseGrayscale();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.service.displayhash.DisplayHashParams> CREATOR;
   }
@@ -9831,17 +9832,17 @@
     ctor public DisplayHashParams.Builder();
     method @NonNull public android.service.displayhash.DisplayHashParams build();
     method @NonNull public android.service.displayhash.DisplayHashParams.Builder setBufferSize(int, int);
-    method @NonNull public android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean);
+    method @NonNull public android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean);
   }
 
-  public abstract class DisplayHasherService extends android.app.Service {
-    ctor public DisplayHasherService();
+  public abstract class DisplayHashingService extends android.app.Service {
+    ctor public DisplayHashingService();
     method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @Nullable public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback);
+    method public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback);
     method @NonNull public abstract java.util.Map<java.lang.String,android.service.displayhash.DisplayHashParams> onGetDisplayHashAlgorithms();
     method @Nullable public abstract android.view.displayhash.VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[], @NonNull android.view.displayhash.DisplayHash);
-    field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHasherService";
-    field public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service";
+    field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHashingService";
+    field public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service";
   }
 
 }
diff --git a/core/java/android/service/displayhash/DisplayHashParams.java b/core/java/android/service/displayhash/DisplayHashParams.java
index fcce91a..2ec9d5d 100644
--- a/core/java/android/service/displayhash/DisplayHashParams.java
+++ b/core/java/android/service/displayhash/DisplayHashParams.java
@@ -28,7 +28,7 @@
 import com.android.internal.util.DataClass;
 
 /**
- * Information passed from the {@link DisplayHasherService} to system server about how to get the
+ * Information passed from the {@link DisplayHashingService} to system server about how to get the
  * display data that will be used to generate the {@link android.view.displayhash.DisplayHash}
  *
  * @hide
@@ -38,9 +38,9 @@
 public final class DisplayHashParams implements Parcelable {
     /**
      * The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     * If {@code null}, the buffer size will not be changed.
+     * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     * value set here. If {@code null}, the buffer size will not be changed.
      */
     @Nullable
     private final Size mBufferSize;
@@ -48,7 +48,7 @@
     /**
      * Whether the content will be captured in grayscale or color.
      */
-    private final boolean mGrayscaleBuffer;
+    private final boolean mUseGrayscale;
 
     /**
      * A builder for {@link DisplayHashParams}
@@ -56,7 +56,7 @@
     public static final class Builder {
         @Nullable
         private Size mBufferSize;
-        private boolean mGrayscaleBuffer;
+        private boolean mUseGrayscale;
 
         /**
          * Creates a new Builder.
@@ -68,8 +68,8 @@
          * The size to scale the buffer to so the hash algorithm can properly generate the hash.
          */
         @NonNull
-        public Builder setBufferSize(int w, int h) {
-            mBufferSize = new Size(w, h);
+        public Builder setBufferSize(int width, int height) {
+            mBufferSize = new Size(width, height);
             return this;
         }
 
@@ -77,15 +77,15 @@
          * Whether the content will be captured in grayscale or color.
          */
         @NonNull
-        public Builder setGrayscaleBuffer(boolean value) {
-            mGrayscaleBuffer = value;
+        public Builder setUseGrayscale(boolean useGrayscale) {
+            mUseGrayscale = useGrayscale;
             return this;
         }
 
         /** Builds the instance. This builder should not be touched after calling this! */
         @NonNull
         public DisplayHashParams build() {
-            return new DisplayHashParams(mBufferSize, mGrayscaleBuffer);
+            return new DisplayHashParams(mBufferSize, mUseGrayscale);
         }
     }
 
@@ -109,28 +109,28 @@
      *
      * @param bufferSize
      *   The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     *   buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     *   Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     *   If {@code null}, the buffer size will not be changed.
-     * @param grayscaleBuffer
+     *   buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     *   HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     *   value set here. If {@code null}, the buffer size will not be changed.
+     * @param useGrayscale
      *   Whether the content will be captured in grayscale or color.
      * @hide
      */
     @DataClass.Generated.Member
     public DisplayHashParams(
             @Nullable Size bufferSize,
-            boolean grayscaleBuffer) {
+            boolean useGrayscale) {
         this.mBufferSize = bufferSize;
-        this.mGrayscaleBuffer = grayscaleBuffer;
+        this.mUseGrayscale = useGrayscale;
 
         // onConstructed(); // You can define this method to get a callback
     }
 
     /**
      * The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     * If {@code null}, the buffer size will not be changed.
+     * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     * value set here. If {@code null}, the buffer size will not be changed.
      */
     @DataClass.Generated.Member
     public @Nullable Size getBufferSize() {
@@ -141,8 +141,8 @@
      * Whether the content will be captured in grayscale or color.
      */
     @DataClass.Generated.Member
-    public boolean isGrayscaleBuffer() {
-        return mGrayscaleBuffer;
+    public boolean isUseGrayscale() {
+        return mUseGrayscale;
     }
 
     @Override
@@ -153,7 +153,7 @@
 
         return "DisplayHashParams { " +
                 "bufferSize = " + mBufferSize + ", " +
-                "grayscaleBuffer = " + mGrayscaleBuffer +
+                "useGrayscale = " + mUseGrayscale +
         " }";
     }
 
@@ -164,7 +164,7 @@
         // void parcelFieldName(Parcel dest, int flags) { ... }
 
         byte flg = 0;
-        if (mGrayscaleBuffer) flg |= 0x2;
+        if (mUseGrayscale) flg |= 0x2;
         if (mBufferSize != null) flg |= 0x1;
         dest.writeByte(flg);
         if (mBufferSize != null) dest.writeSize(mBufferSize);
@@ -182,11 +182,11 @@
         // static FieldType unparcelFieldName(Parcel in) { ... }
 
         byte flg = in.readByte();
-        boolean grayscaleBuffer = (flg & 0x2) != 0;
+        boolean useGrayscale = (flg & 0x2) != 0;
         Size bufferSize = (flg & 0x1) == 0 ? null : (Size) in.readSize();
 
         this.mBufferSize = bufferSize;
-        this.mGrayscaleBuffer = grayscaleBuffer;
+        this.mUseGrayscale = useGrayscale;
 
         // onConstructed(); // You can define this method to get a callback
     }
@@ -206,10 +206,10 @@
     };
 
     @DataClass.Generated(
-            time = 1617735166254L,
+            time = 1618436855096L,
             codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/service/displayhash/DisplayHashParams.java",
-            inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final  boolean mGrayscaleBuffer\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate  boolean mGrayscaleBuffer\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)")
+            inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final  boolean mUseGrayscale\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate  boolean mUseGrayscale\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/service/displayhash/DisplayHasherService.java b/core/java/android/service/displayhash/DisplayHashingService.java
similarity index 84%
rename from core/java/android/service/displayhash/DisplayHasherService.java
rename to core/java/android/service/displayhash/DisplayHashingService.java
index d300cf1..e8bb485 100644
--- a/core/java/android/service/displayhash/DisplayHasherService.java
+++ b/core/java/android/service/displayhash/DisplayHashingService.java
@@ -45,21 +45,21 @@
  * @hide
  */
 @SystemApi
-public abstract class DisplayHasherService extends Service {
+public abstract class DisplayHashingService extends Service {
 
     /** @hide **/
     public static final String EXTRA_VERIFIED_DISPLAY_HASH =
             "android.service.displayhash.extra.VERIFIED_DISPLAY_HASH";
 
     /**
-     * Name under which a DisplayHasherService component publishes information
+     * Name under which a DisplayHashingService component publishes information
      * about itself.  This meta-data must reference an XML resource containing a
-     * {@link com.android.internal.R.styleable#DisplayHasherService} tag.
+     * {@link com.android.internal.R.styleable#DisplayHashingService} tag.
      *
      * @hide
      */
     @SystemApi
-    public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service";
+    public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service";
 
     /**
      * The {@link Intent} action that must be declared as handled by a service in its manifest
@@ -69,18 +69,18 @@
      */
     @SystemApi
     public static final String SERVICE_INTERFACE =
-            "android.service.displayhash.DisplayHasherService";
+            "android.service.displayhash.DisplayHashingService";
 
-    private DisplayHasherServiceWrapper mWrapper;
+    private DisplayHashingServiceWrapper mWrapper;
     private Handler mHandler;
 
-    public DisplayHasherService() {
+    public DisplayHashingService() {
     }
 
     @Override
     public void onCreate() {
         super.onCreate();
-        mWrapper = new DisplayHasherServiceWrapper();
+        mWrapper = new DisplayHashingServiceWrapper();
         mHandler = new Handler(Looper.getMainLooper(), null, true);
     }
 
@@ -105,7 +105,6 @@
      *                      if successfully generated a DisplayHash or {@link
      *                      DisplayHashResultCallback#onDisplayHashError(int)} if failed.
      */
-    @Nullable
     public abstract void onGenerateDisplayHash(@NonNull byte[] salt,
             @NonNull HardwareBuffer buffer, @NonNull Rect bounds,
             @NonNull String hashAlgorithm, @NonNull DisplayHashResultCallback callback);
@@ -125,8 +124,8 @@
      *                    HardwareBuffer, Rect, String, DisplayHashResultCallback)} to
      *                    generate the token.
      * @param displayHash The token to verify that it was generated by the system.
-     * @return a {@link VerifiedDisplayHash} if the token was generated by the system or null
-     * if the token cannot be verified.
+     * @return a {@link VerifiedDisplayHash} if the provided display hash was originally generated
+     * by the system or null if the system did not generate the display hash.
      */
     @Nullable
     public abstract VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[] salt,
@@ -150,13 +149,13 @@
         callback.sendResult(data);
     }
 
-    private final class DisplayHasherServiceWrapper extends IDisplayHasherService.Stub {
+    private final class DisplayHashingServiceWrapper extends IDisplayHashingService.Stub {
         @Override
         public void generateDisplayHash(byte[] salt, HardwareBuffer buffer, Rect bounds,
                 String hashAlgorithm, RemoteCallback callback) {
             mHandler.sendMessage(
-                    obtainMessage(DisplayHasherService::onGenerateDisplayHash,
-                            DisplayHasherService.this, salt, buffer, bounds,
+                    obtainMessage(DisplayHashingService::onGenerateDisplayHash,
+                            DisplayHashingService.this, salt, buffer, bounds,
                             hashAlgorithm, new DisplayHashResultCallback() {
                                 @Override
                                 public void onDisplayHashResult(
@@ -179,14 +178,14 @@
         public void verifyDisplayHash(byte[] salt, DisplayHash displayHash,
                 RemoteCallback callback) {
             mHandler.sendMessage(
-                    obtainMessage(DisplayHasherService::verifyDisplayHash,
-                            DisplayHasherService.this, salt, displayHash, callback));
+                    obtainMessage(DisplayHashingService::verifyDisplayHash,
+                            DisplayHashingService.this, salt, displayHash, callback));
         }
 
         @Override
         public void getDisplayHashAlgorithms(RemoteCallback callback) {
-            mHandler.sendMessage(obtainMessage(DisplayHasherService::getDisplayHashAlgorithms,
-                    DisplayHasherService.this, callback));
+            mHandler.sendMessage(obtainMessage(DisplayHashingService::getDisplayHashAlgorithms,
+                    DisplayHashingService.this, callback));
         }
     }
 }
diff --git a/core/java/android/service/displayhash/IDisplayHasherService.aidl b/core/java/android/service/displayhash/IDisplayHashingService.aidl
similarity index 98%
rename from core/java/android/service/displayhash/IDisplayHasherService.aidl
rename to core/java/android/service/displayhash/IDisplayHashingService.aidl
index d9dcdca..56e1e0a 100644
--- a/core/java/android/service/displayhash/IDisplayHasherService.aidl
+++ b/core/java/android/service/displayhash/IDisplayHashingService.aidl
@@ -26,7 +26,7 @@
  *
  * @hide
  */
-oneway interface IDisplayHasherService {
+oneway interface IDisplayHashingService {
     /**
      * Generates the DisplayHash that can be used to validate that the system generated the token.
      *
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d6b5a2c..a757295 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -30927,7 +30927,6 @@
      * @param executor The executor that the callback should be invoked on.
      * @param callback The callback to handle the results of generating the display hash
      */
-    @Nullable
     public void generateDisplayHash(@NonNull String hashAlgorithm,
             @Nullable Rect bounds, @NonNull Executor executor,
             @NonNull DisplayHashResultCallback callback) {
diff --git a/core/java/android/view/displayhash/DisplayHash.java b/core/java/android/view/displayhash/DisplayHash.java
index 4148486..4ec0a59 100644
--- a/core/java/android/view/displayhash/DisplayHash.java
+++ b/core/java/android/view/displayhash/DisplayHash.java
@@ -16,6 +16,7 @@
 
 package android.view.displayhash;
 
+import android.annotation.CurrentTimeMillisLong;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.graphics.Rect;
@@ -31,6 +32,7 @@
     /**
      * The timestamp when the hash was generated.
      */
+    @CurrentTimeMillisLong
     private final long mTimeMillis;
 
     /**
@@ -73,7 +75,7 @@
      * @hide
      */
     @SystemApi
-    public DisplayHash(long timeMillis, @NonNull Rect boundsInWindow,
+    public DisplayHash(@CurrentTimeMillisLong long timeMillis, @NonNull Rect boundsInWindow,
             @NonNull String hashAlgorithm, @NonNull byte[] imageHash, @NonNull byte[] hmac) {
         mTimeMillis = timeMillis;
         mBoundsInWindow = boundsInWindow;
@@ -92,6 +94,7 @@
      * @hide
      */
     @SystemApi
+    @CurrentTimeMillisLong
     public long getTimeMillis() {
         return mTimeMillis;
     }
diff --git a/core/java/android/view/displayhash/DisplayHashManager.java b/core/java/android/view/displayhash/DisplayHashManager.java
index 69dfc38..4f5fef6 100644
--- a/core/java/android/view/displayhash/DisplayHashManager.java
+++ b/core/java/android/view/displayhash/DisplayHashManager.java
@@ -35,7 +35,8 @@
 import java.util.Set;
 
 /**
- * Utility class for DisplayHash requests.
+ * Manages DisplayHash requests. The manager object can be retrieved by calling
+ * {@code Context.getSystemService(Context.DISPLAY_HASH_SERVICE)}
  */
 @SystemService(DISPLAY_HASH_SERVICE)
 public final class DisplayHashManager {
@@ -75,7 +76,7 @@
                 return sSupportedHashAlgorithms;
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to send request getSupportedHashingAlgorithms", e);
-                return Collections.emptySet();
+                throw e.rethrowFromSystemServer();
             }
         }
     }
@@ -93,7 +94,7 @@
             return WindowManagerGlobal.getWindowManagerService().verifyDisplayHash(displayHash);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to send request verifyImpressionToken", e);
-            return null;
+            throw e.rethrowFromSystemServer();
         }
     }
 
diff --git a/core/java/android/view/displayhash/VerifiedDisplayHash.java b/core/java/android/view/displayhash/VerifiedDisplayHash.java
index 16a428e..b17c068 100644
--- a/core/java/android/view/displayhash/VerifiedDisplayHash.java
+++ b/core/java/android/view/displayhash/VerifiedDisplayHash.java
@@ -16,6 +16,7 @@
 
 package android.view.displayhash;
 
+import android.annotation.CurrentTimeMillisLong;
 import android.annotation.NonNull;
 import android.graphics.Rect;
 import android.os.Parcelable;
@@ -30,6 +31,7 @@
     /**
      * The timestamp when the hash was generated.
      */
+    @CurrentTimeMillisLong
     private final long mTimeMillis;
 
     /**
@@ -78,7 +80,7 @@
 
 
 
-    // Code below generated by codegen v1.0.22.
+    // Code below generated by codegen v1.0.23.
     //
     // DO NOT MODIFY!
     // CHECKSTYLE:OFF Generated code
@@ -106,11 +108,13 @@
      */
     @DataClass.Generated.Member
     public VerifiedDisplayHash(
-            long timeMillis,
+            @CurrentTimeMillisLong long timeMillis,
             @NonNull Rect boundsInWindow,
             @NonNull String hashAlgorithm,
             @NonNull byte[] imageHash) {
         this.mTimeMillis = timeMillis;
+        com.android.internal.util.AnnotationValidations.validate(
+                CurrentTimeMillisLong.class, null, mTimeMillis);
         this.mBoundsInWindow = boundsInWindow;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mBoundsInWindow);
@@ -128,7 +132,7 @@
      * The timestamp when the hash was generated.
      */
     @DataClass.Generated.Member
-    public long getTimeMillis() {
+    public @CurrentTimeMillisLong long getTimeMillis() {
         return mTimeMillis;
     }
 
@@ -200,6 +204,8 @@
         byte[] imageHash = in.createByteArray();
 
         this.mTimeMillis = timeMillis;
+        com.android.internal.util.AnnotationValidations.validate(
+                CurrentTimeMillisLong.class, null, mTimeMillis);
         this.mBoundsInWindow = boundsInWindow;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mBoundsInWindow);
@@ -228,10 +234,10 @@
     };
 
     @DataClass.Generated(
-            time = 1613168749684L,
-            codegenVersion = "1.0.22",
+            time = 1617747271440L,
+            codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/view/displayhash/VerifiedDisplayHash.java",
-            inputSignatures = "private final  long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate  java.lang.String imageHashToString()\nprivate  java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)")
+            inputSignatures = "private final @android.annotation.CurrentTimeMillisLong long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate  java.lang.String imageHashToString()\nprivate  java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 925a212..3d624a6 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -5673,12 +5673,12 @@
     <permission android:name="android.permission.CONTROL_DEVICE_STATE"
                 android:protectionLevel="signature" />
 
-    <!-- Must be required by a
-        {@link android.service.displayhash.DisplayHasherService}
+    <!-- @hide @SystemApi Must be required by a
+        {@link android.service.displayhash.DisplayHashingService}
         to ensure that only the system can bind to it.
-        @hide This is not a third-party API (intended for OEMs and system apps).
+        This is not a third-party API (intended for OEMs and system apps).
     -->
-    <permission android:name="android.permission.BIND_DISPLAY_HASHER_SERVICE"
+    <permission android:name="android.permission.BIND_DISPLAY_HASHING_SERVICE"
         android:protectionLevel="signature" />
 
     <!-- @hide @TestApi Allows an application to enable/disable toast rate limiting.
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index bd1d848..1d532fc 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -9577,7 +9577,7 @@
     <!-- Perceptual luminance of a color, in accessibility friendly color space. From 0 to 100. -->
     <attr name="lStar" format="float"/>
 
-    <declare-styleable name="DisplayHasherService">
+    <declare-styleable name="DisplayHashingService">
         <!-- The throttle duration for display hash requests
              @hide @SystemApi -->
         <attr name="throttleDurationMillis" format="integer" />
diff --git a/services/core/java/com/android/server/wm/DisplayHashController.java b/services/core/java/com/android/server/wm/DisplayHashController.java
index 5a8af45..af0c3e3 100644
--- a/services/core/java/com/android/server/wm/DisplayHashController.java
+++ b/services/core/java/com/android/server/wm/DisplayHashController.java
@@ -16,8 +16,8 @@
 
 package com.android.server.wm;
 
-import static android.service.displayhash.DisplayHasherService.EXTRA_VERIFIED_DISPLAY_HASH;
-import static android.service.displayhash.DisplayHasherService.SERVICE_META_DATA;
+import static android.service.displayhash.DisplayHashingService.EXTRA_VERIFIED_DISPLAY_HASH;
+import static android.service.displayhash.DisplayHashingService.SERVICE_META_DATA;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_INVALID_HASH_ALGORITHM;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_TOO_MANY_REQUESTS;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_UNKNOWN;
@@ -52,8 +52,8 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.service.displayhash.DisplayHashParams;
-import android.service.displayhash.DisplayHasherService;
-import android.service.displayhash.IDisplayHasherService;
+import android.service.displayhash.DisplayHashingService;
+import android.service.displayhash.IDisplayHashingService;
 import android.util.AttributeSet;
 import android.util.Size;
 import android.util.Slog;
@@ -79,7 +79,7 @@
 import java.util.function.BiConsumer;
 
 /**
- * Handles requests into {@link android.service.displayhash.DisplayHasherService}
+ * Handles requests into {@link DisplayHashingService}
  *
  * Do not hold the {@link WindowManagerService#mGlobalLock} when calling methods since they are
  * blocking calls into another service.
@@ -91,7 +91,7 @@
     private final Object mServiceConnectionLock = new Object();
 
     @GuardedBy("mServiceConnectionLock")
-    private DisplayHasherServiceConnection mServiceConnection;
+    private DisplayHashingServiceConnection mServiceConnection;
 
     private final Context mContext;
 
@@ -150,7 +150,7 @@
     private boolean mDisplayHashThrottlingEnabled = true;
 
     private interface Command {
-        void run(IDisplayHasherService service) throws RemoteException;
+        void run(IDisplayHashingService service) throws RemoteException;
     }
 
     DisplayHashController(Context context) {
@@ -233,7 +233,7 @@
                     (float) size.getHeight() / boundsInWindow.height());
         }
 
-        args.setGrayscale(displayHashParams.isGrayscaleBuffer());
+        args.setGrayscale(displayHashParams.isUseGrayscale());
 
         SurfaceControl.ScreenshotHardwareBuffer screenshotHardwareBuffer =
                 SurfaceControl.captureLayers(args.build());
@@ -405,9 +405,9 @@
                 }
             }
 
-            TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHasherService);
+            TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHashingService);
             mThrottleDurationMillis = sa.getInt(
-                    R.styleable.DisplayHasherService_throttleDurationMillis, 0);
+                    R.styleable.DisplayHashingService_throttleDurationMillis, 0);
             sa.recycle();
             mParsedXml = true;
             return true;
@@ -424,7 +424,7 @@
                 if (DEBUG) Slog.v(TAG, "creating connection");
 
                 // Create the connection
-                mServiceConnection = new DisplayHasherServiceConnection();
+                mServiceConnection = new DisplayHashingServiceConnection();
 
                 final ComponentName component = getServiceComponentName();
                 if (DEBUG) Slog.v(TAG, "binding to: " + component);
@@ -455,7 +455,7 @@
             return null;
         }
 
-        final Intent intent = new Intent(DisplayHasherService.SERVICE_INTERFACE);
+        final Intent intent = new Intent(DisplayHashingService.SERVICE_INTERFACE);
         intent.setPackage(packageName);
         final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent,
                 PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
@@ -472,10 +472,10 @@
         if (serviceInfo == null) return null;
 
         final ComponentName name = new ComponentName(serviceInfo.packageName, serviceInfo.name);
-        if (!Manifest.permission.BIND_DISPLAY_HASHER_SERVICE
+        if (!Manifest.permission.BIND_DISPLAY_HASHING_SERVICE
                 .equals(serviceInfo.permission)) {
             Slog.w(TAG, name.flattenToShortString() + " requires permission "
-                    + Manifest.permission.BIND_DISPLAY_HASHER_SERVICE);
+                    + Manifest.permission.BIND_DISPLAY_HASHING_SERVICE);
             return null;
         }
 
@@ -488,7 +488,7 @@
         private Bundle mResult;
         private final CountDownLatch mCountDownLatch = new CountDownLatch(1);
 
-        public Bundle run(BiConsumer<IDisplayHasherService, RemoteCallback> func) {
+        public Bundle run(BiConsumer<IDisplayHashingService, RemoteCallback> func) {
             connectAndRun(service -> {
                 RemoteCallback callback = new RemoteCallback(result -> {
                     mResult = result;
@@ -507,9 +507,9 @@
         }
     }
 
-    private class DisplayHasherServiceConnection implements ServiceConnection {
+    private class DisplayHashingServiceConnection implements ServiceConnection {
         @GuardedBy("mServiceConnectionLock")
-        private IDisplayHasherService mRemoteService;
+        private IDisplayHashingService mRemoteService;
 
         @GuardedBy("mServiceConnectionLock")
         private ArrayList<Command> mQueuedCommands;
@@ -518,7 +518,7 @@
         public void onServiceConnected(ComponentName name, IBinder service) {
             if (DEBUG) Slog.v(TAG, "onServiceConnected(): " + name);
             synchronized (mServiceConnectionLock) {
-                mRemoteService = IDisplayHasherService.Stub.asInterface(service);
+                mRemoteService = IDisplayHashingService.Stub.asInterface(service);
                 if (mQueuedCommands != null) {
                     final int size = mQueuedCommands.size();
                     if (DEBUG) Slog.d(TAG, "running " + size + " queued commands");