Update Drawable API to expose getOpticalBounds method as well as
the Insets class

Updated all Drawable implementations to remove the @hide annotation

Fixes: 78942648
Test: Re-run CtsGraphicsTestCases and updated Drawable CTS tests to
verify getOpticalBounds implementations

Change-Id: Id9b6bbbe15173e310bbf44184b4678fb29ef1cd8
diff --git a/api/current.txt b/api/current.txt
index ac151fa..4424d76 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -966,6 +966,10 @@
     field public static final int onClick = 16843375; // 0x101026f
     field public static final int oneshot = 16843159; // 0x1010197
     field public static final int opacity = 16843550; // 0x101031e
+    field public static final int opticalInsetBottom = 16844170; // 0x101058a
+    field public static final int opticalInsetLeft = 16844167; // 0x1010587
+    field public static final int opticalInsetRight = 16844169; // 0x1010589
+    field public static final int opticalInsetTop = 16844168; // 0x1010588
     field public static final int order = 16843242; // 0x10101ea
     field public static final int orderInCategory = 16843231; // 0x10101df
     field public static final int ordering = 16843490; // 0x10102e2
@@ -13748,6 +13752,16 @@
     field public static final int YV12 = 842094169; // 0x32315659
   }
 
+  public class Insets {
+    method public static android.graphics.Insets of(int, int, int, int);
+    method public static android.graphics.Insets of(android.graphics.Rect);
+    field public static final android.graphics.Insets NONE;
+    field public final int bottom;
+    field public final int left;
+    field public final int right;
+    field public final int top;
+  }
+
   public class Interpolator {
     ctor public Interpolator(int);
     ctor public Interpolator(int, int);
@@ -14714,6 +14728,7 @@
     method public int getMinimumHeight();
     method public int getMinimumWidth();
     method public abstract int getOpacity();
+    method public android.graphics.Insets getOpticalInsets();
     method public void getOutline(android.graphics.Outline);
     method public boolean getPadding(android.graphics.Rect);
     method public int[] getState();
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt
index 3a28bdf..6e72785 100644
--- a/config/hiddenapi-light-greylist.txt
+++ b/config/hiddenapi-light-greylist.txt
@@ -1095,19 +1095,16 @@
 Landroid/graphics/drawable/AnimatedStateListDrawable;->mState:Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;
 Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->callOnFinished(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V
 Landroid/graphics/drawable/AnimationDrawable;->mCurFrame:I
-Landroid/graphics/drawable/BitmapDrawable;->getOpticalInsets()Landroid/graphics/Insets;
 Landroid/graphics/drawable/BitmapDrawable;->getTint()Landroid/content/res/ColorStateList;
 Landroid/graphics/drawable/BitmapDrawable;->getTintMode()Landroid/graphics/PorterDuff$Mode;
 Landroid/graphics/drawable/BitmapDrawable;->mTargetDensity:I
 Landroid/graphics/drawable/BitmapDrawable;->setBitmap(Landroid/graphics/Bitmap;)V
 Landroid/graphics/drawable/ColorDrawable$ColorState;->mUseColor:I
-Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets;
 Landroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V
 Landroid/graphics/drawable/Drawable;->mCallback:Ljava/lang/ref/WeakReference;
 Landroid/graphics/drawable/Drawable;->parseTintMode(ILandroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuff$Mode;
 Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mConstantPadding:Landroid/graphics/Rect;
 Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mDrawables:[Landroid/graphics/drawable/Drawable;
-Landroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;
 Landroid/graphics/drawable/DrawableContainer;->mDrawableContainerState:Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;
 Landroid/graphics/drawable/DrawableInflater;->mClassLoader:Ljava/lang/ClassLoader;
 Landroid/graphics/drawable/GradientDrawable$GradientState;->mAngle:I
@@ -1129,7 +1126,6 @@
 Landroid/graphics/drawable/GradientDrawable$GradientState;->mThickness:I
 Landroid/graphics/drawable/GradientDrawable$GradientState;->mThicknessRatio:F
 Landroid/graphics/drawable/GradientDrawable$GradientState;->mWidth:I
-Landroid/graphics/drawable/GradientDrawable;->getOpticalInsets()Landroid/graphics/Insets;
 Landroid/graphics/drawable/GradientDrawable;->mFillPaint:Landroid/graphics/Paint;
 Landroid/graphics/drawable/GradientDrawable;->mGradientState:Landroid/graphics/drawable/GradientDrawable$GradientState;
 Landroid/graphics/drawable/GradientDrawable;->mPadding:Landroid/graphics/Rect;
@@ -1170,10 +1166,6 @@
 Landroid/graphics/GraphicBuffer;->CREATOR:Landroid/os/Parcelable$Creator;
 Landroid/graphics/GraphicBuffer;->mNativeObject:J
 Landroid/graphics/ImageDecoder;->postProcessAndRelease(Landroid/graphics/Canvas;)I
-Landroid/graphics/Insets;->bottom:I
-Landroid/graphics/Insets;->left:I
-Landroid/graphics/Insets;->right:I
-Landroid/graphics/Insets;->top:I
 Landroid/graphics/LinearGradient;->mColors:[I
 Landroid/graphics/Matrix;->native_instance:J
 Landroid/graphics/Movie;-><init>(J)V
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index a83878b..3ea95ed 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -5734,17 +5734,13 @@
         <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
              default value is src_in, which treats the drawable as an alpha mask. -->
         <attr name="tintMode" />
-        <!-- Left optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Left optical inset. -->
         <attr name="opticalInsetLeft" />
-        <!-- Top optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Top optical inset. -->
         <attr name="opticalInsetTop" />
-        <!-- Right optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Right optical inset. -->
         <attr name="opticalInsetRight" />
-        <!-- Bottom optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Bottom optical inset. -->
         <attr name="opticalInsetBottom" />
     </declare-styleable>
 
@@ -6243,17 +6239,13 @@
         <!-- The opacity of the whole vector drawable, as a value between 0
              (completely transparent) and 1 (completely opaque). -->
         <attr name="alpha" />
-        <!-- Left optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Left optical inset. -->
         <attr name="opticalInsetLeft" format="dimension" />
-        <!-- Top optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Top optical inset. -->
         <attr name="opticalInsetTop" format="dimension" />
-        <!-- Right optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Right optical inset. -->
         <attr name="opticalInsetRight" format="dimension" />
-        <!-- Bottom optical inset.
-             @hide Until optical insets are fully supported. -->
+        <!-- Bottom optical inset. -->
         <attr name="opticalInsetBottom" format="dimension" />
     </declare-styleable>
 
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 997575f..6189971 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2903,6 +2903,10 @@
   <eat-comment />
 
     <public-group type="attr" first-id="0x01010587">
+        <public name="opticalInsetLeft" />
+        <public name="opticalInsetTop" />
+        <public name="opticalInsetRight" />
+        <public name="opticalInsetBottom" />
     </public-group>
 
     <public-group type="style" first-id="0x010302e2">
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index de9f3b0..3e60d24 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3379,4 +3379,9 @@
   <java-symbol type="id" name="user_loading" />
 
   <java-symbol type="string" name="battery_saver_description_with_learn_more" />
+
+  <java-symbol type="attr" name="opticalInsetLeft" />
+  <java-symbol type="attr" name="opticalInsetTop" />
+  <java-symbol type="attr" name="opticalInsetRight" />
+  <java-symbol type="attr" name="opticalInsetBottom" />
 </resources>
diff --git a/graphics/java/android/graphics/Insets.java b/graphics/java/android/graphics/Insets.java
index 156f990..5a78530 100644
--- a/graphics/java/android/graphics/Insets.java
+++ b/graphics/java/android/graphics/Insets.java
@@ -23,7 +23,6 @@
  * <p>
  * Insets are immutable so may be treated as values.
  *
- * @hide
  */
 public class Insets {
     public static final Insets NONE = new Insets(0, 0, 0, 0);
diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
index 54358e3..34eac56 100644
--- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
@@ -57,6 +57,8 @@
 import com.android.internal.R;
 import com.android.internal.util.VirtualRefBasePtr;
 
+import dalvik.annotation.optimization.FastNative;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -64,7 +66,6 @@
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
-import dalvik.annotation.optimization.FastNative;
 
 /**
  * This class animates properties of a {@link android.graphics.drawable.VectorDrawable} with
@@ -515,7 +516,6 @@
         mAnimatedVectorState.mVectorDrawable.getOutline(outline);
     }
 
-    /** @hide */
     @Override
     public Insets getOpticalInsets() {
         return mAnimatedVectorState.mVectorDrawable.getOpticalInsets();
diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java
index 44b783b..99bed60 100644
--- a/graphics/java/android/graphics/drawable/BitmapDrawable.java
+++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java
@@ -23,7 +23,6 @@
 import android.content.res.Resources.Theme;
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.graphics.BitmapShader;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
@@ -627,9 +626,6 @@
         mDstRectAndInsetsDirty = false;
     }
 
-    /**
-     * @hide
-     */
     @Override
     public Insets getOpticalInsets() {
         updateDstRectAndInsetsIfDirty();
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index b77d74a..986d0c1 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -1088,7 +1088,6 @@
      * Return in insets the layout insets suggested by this Drawable for use with alignment
      * operations during layout.
      *
-     * @hide
      */
     public @NonNull Insets getOpticalInsets() {
         return Insets.NONE;
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index aa4cd9c..e7b383a 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -120,9 +120,6 @@
         return result;
     }
 
-    /**
-     * @hide
-     */
     @Override
     public Insets getOpticalInsets() {
         if (mCurrDrawable != null) {
diff --git a/graphics/java/android/graphics/drawable/DrawableWrapper.java b/graphics/java/android/graphics/drawable/DrawableWrapper.java
index 4ce3b10..a907ca5 100644
--- a/graphics/java/android/graphics/drawable/DrawableWrapper.java
+++ b/graphics/java/android/graphics/drawable/DrawableWrapper.java
@@ -251,7 +251,6 @@
         return mDrawable != null && mDrawable.getPadding(padding);
     }
 
-    /** @hide */
     @Override
     public Insets getOpticalInsets() {
         return mDrawable != null ? mDrawable.getOpticalInsets() : Insets.NONE;
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index a448379..5629389 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -1698,7 +1698,6 @@
         return mGradientState.mHeight;
     }
 
-    /** @hide */
     @Override
     public Insets getOpticalInsets() {
         return mGradientState.mOpticalInsets;
diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java
index 443aa49..ade4294 100644
--- a/graphics/java/android/graphics/drawable/InsetDrawable.java
+++ b/graphics/java/android/graphics/drawable/InsetDrawable.java
@@ -16,11 +16,6 @@
 
 package android.graphics.drawable;
 
-import com.android.internal.R;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.res.Resources;
@@ -35,6 +30,11 @@
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
 
+import com.android.internal.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 
 /**
@@ -240,7 +240,6 @@
                 | mTmpInsetRect.top | mTmpInsetRect.bottom) != 0;
     }
 
-    /** @hide */
     @Override
     public Insets getOpticalInsets() {
         final Insets contentInsets = super.getOpticalInsets();
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index 5ff49ab..7f23cea 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -299,9 +299,6 @@
         super.getOutline(outline);
     }
 
-    /**
-     * @hide
-     */
     @Override
     public Insets getOpticalInsets() {
         final Insets opticalInsets = mOpticalInsets;
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index c71585f..b5bd97f 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -46,6 +46,9 @@
 import com.android.internal.R;
 import com.android.internal.util.VirtualRefBasePtr;
 
+import dalvik.annotation.optimization.FastNative;
+import dalvik.system.VMRuntime;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -56,9 +59,6 @@
 import java.util.HashMap;
 import java.util.Stack;
 
-import dalvik.annotation.optimization.FastNative;
-import dalvik.system.VMRuntime;
-
 /**
  * This lets you create a drawable based on an XML vector graphic.
  * <p/>
@@ -543,7 +543,6 @@
         return mDpiScaledHeight;
     }
 
-    /** @hide */
     @Override
     public Insets getOpticalInsets() {
         if (mDpiScaledDirty) {