diff options
| author | 2021-03-03 20:53:18 +0000 | |
|---|---|---|
| committer | 2021-03-03 20:53:18 +0000 | |
| commit | 0ef492ff125ff0dfedb4543b99e156ab13f8897a (patch) | |
| tree | 8bcefb8f040646931f2e5c36a6d9b909ffbc6985 | |
| parent | 4fa324346471242dc0ad42db315ad86edadecd8e (diff) | |
| parent | 3a62e9ffaad2d81bf176decb7b60266bd6005301 (diff) | |
Merge "Limit maximum allowed size for a status bar icon" into rvc-qpr-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java | 10 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java | 10 | 
2 files changed, 20 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index 8cf8a2299922..25ae5c2dadef 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -83,6 +83,9 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi      public static final int STATE_DOT = 1;      public static final int STATE_HIDDEN = 2; +    /** Maximum allowed width or height for an icon drawable */ +    private static final int MAX_IMAGE_SIZE = 500; +      private static final String TAG = "StatusBarIconView";      private static final Property<StatusBarIconView, Float> ICON_APPEAR_AMOUNT              = new FloatProperty<StatusBarIconView>("iconAppearAmount") { @@ -378,6 +381,13 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi              Log.w(TAG, "No icon for slot " + mSlot + "; " + mIcon.icon);              return false;          } + +        if (drawable.getIntrinsicWidth() > MAX_IMAGE_SIZE +                || drawable.getIntrinsicHeight() > MAX_IMAGE_SIZE) { +            Log.w(TAG, "Drawable is too large " + mIcon); +            return false; +        } +          if (withClear) {              setImageDrawable(null);          } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java index 9971e0cf81a3..daa805a8f6e6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java @@ -35,6 +35,7 @@ import android.content.ContextWrapper;  import android.content.pm.ApplicationInfo;  import android.content.pm.PackageManager;  import android.content.res.Resources; +import android.graphics.Bitmap;  import android.graphics.Color;  import android.graphics.drawable.Icon;  import android.os.UserHandle; @@ -123,4 +124,13 @@ public class StatusBarIconViewTest extends SysuiTestCase {          assertEquals("Transparent backgrounds should fallback to drawable color",                  color, mIconView.getStaticDrawableColor());      } + +    @Test +    public void testGiantImageNotAllowed() { +        Bitmap largeBitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888); +        Icon icon = Icon.createWithBitmap(largeBitmap); +        StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage", +                icon, 0, 0, ""); +        assertFalse(mIconView.set(largeIcon)); +    }  }
\ No newline at end of file  |