From 1194b0bdfed798cae594c6e80c13855ea6618f3b Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Fri, 23 Mar 2018 13:36:24 -0700 Subject: [PATCH] Remove incorrect @NonNull annotations on getDrawable() and variants. For compatibility, had to continue returning null when drawables could not be decoded. Fix annotation to match pre-P behavior (the behavior was reverted separately). Fixes: 69543526 Test: make Partial revert of Ib01eca970c5c9969998ce5b265b120aa7048b41a Change-Id: I5f612f47793c3f04cf9874e13efdc13397ddd4e8 --- core/java/android/content/Context.java | 2 +- core/java/android/content/res/Resources.java | 8 +++++--- core/java/android/content/res/ResourcesImpl.java | 7 +++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index e1a00b1465767..920056a805b16 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -621,7 +621,7 @@ public abstract class Context { * @throws android.content.res.Resources.NotFoundException if the given ID * does not exist. */ - @NonNull + @Nullable public final Drawable getDrawable(@DrawableRes int id) { return getResources().getDrawable(id, getTheme()); } diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index d8133824f757b..c58cde006759f 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -847,6 +847,7 @@ public class Resources { * @see #getDrawableForDensity(int, int, Theme) * @deprecated Use {@link #getDrawableForDensity(int, int, Theme)} instead. */ + @Nullable @Deprecated public Drawable getDrawableForDensity(@DrawableRes int id, int density) throws NotFoundException { @@ -864,12 +865,13 @@ public class Resources { * found in {@link DisplayMetrics}. A value of 0 means to use the * density returned from {@link #getConfiguration()}. * This is equivalent to calling {@link #getDrawable(int, Theme)}. - * @param theme The theme used to style the drawable attributes, may be {@code null}. + * @param theme The theme used to style the drawable attributes, may be {@code null} if the + * drawable cannot be decoded. * @return Drawable An object that can be used to draw this resource. * @throws NotFoundException Throws NotFoundException if the given ID does - * not exist, or cannot be decoded. + * not exist. */ - @NonNull + @Nullable public Drawable getDrawableForDensity(@DrawableRes int id, int density, @Nullable Theme theme) { final TypedValue value = obtainTempTypedValue(); try { diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index 157910a043e90..8c980677fdd0d 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -544,7 +544,7 @@ public class ResourcesImpl { } } - @NonNull + @Nullable Drawable loadDrawable(@NonNull Resources wrapper, @NonNull TypedValue value, int id, int density, @Nullable Resources.Theme theme) throws NotFoundException { @@ -757,6 +757,7 @@ public class ResourcesImpl { * * This call will handle closing ais. */ + @Nullable private Drawable decodeImageDrawable(@NonNull AssetInputStream ais, @NonNull Resources wrapper, @NonNull TypedValue value) { ImageDecoder.Source src = new ImageDecoder.AssetInputStreamSource(ais, @@ -774,8 +775,10 @@ public class ResourcesImpl { /** * Loads a drawable from XML or resources stream. + * + * @return Drawable, or null if Drawable cannot be decoded. */ - @NonNull + @Nullable private Drawable loadDrawableForCookie(@NonNull Resources wrapper, @NonNull TypedValue value, int id, int density) { if (value.string == null) {