From d2963f3d9a2c6c28438ce8d8c14803bda2f04d48 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Fri, 26 May 2017 15:27:36 -0700 Subject: [PATCH] Fix bug where scrim would be transparent Test: runtest -x tests/src/com/android/systemui/statusbar/ScrimViewTest.java Change-Id: I61a810430530c70edcc6a534e5380f7f78448aec --- .../colorextraction/drawable/GradientDrawable.java | 11 ++++++ .../com/android/systemui/statusbar/ScrimView.java | 6 ++++ .../android/systemui/statusbar/ScrimViewTest.java | 39 +++++++++++----------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java b/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java index c58dd5d97979..2b212c11b732 100644 --- a/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java +++ b/packages/SystemUI/colorextraction/src/com/google/android/colorextraction/drawable/GradientDrawable.java @@ -31,6 +31,7 @@ import android.graphics.Xfermode; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.support.v4.graphics.ColorUtils; import android.view.animation.DecelerateInterpolator; @@ -196,6 +197,16 @@ public class GradientDrawable extends Drawable { canvas.drawRect(x - radius, y - radius, x + radius, y + radius, mPaint); } + @VisibleForTesting + public int getMainColor() { + return mMainColor; + } + + @VisibleForTesting + public int getSecondaryColor() { + return mSecondaryColor; + } + static final class Splat { final float x; final float y; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java index a6c0cd16bd4e..4e28c95525a8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ScrimView.java @@ -93,6 +93,7 @@ public class ScrimView extends View implements ConfigurationController.Configura mDrawable.setCallback(this); mColors = new ColorExtractor.GradientColors(); updateScreenSize(); + updateColorWithTint(false); // We need to know about configuration changes to update the gradient size // since it's independent from view bounds. @@ -189,6 +190,11 @@ public class ScrimView extends View implements ConfigurationController.Configura return mDrawable; } + @VisibleForTesting + ColorExtractor.GradientColors getColors() { + return mColors; + } + public void setTint(int color) { setTint(color, false); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java index 2a051e67ce01..08867806f933 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ScrimViewTest.java @@ -16,39 +16,30 @@ package com.android.systemui.statusbar; +import static junit.framework.Assert.assertEquals; + +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; -import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; - -import android.graphics.drawable.VectorDrawable; -import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; +import android.support.test.filters.SmallTest; import android.view.View; import com.android.systemui.SysuiTestCase; -import com.android.systemui.statusbar.ScrimView; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyFloat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.mock; +import com.google.android.colorextraction.ColorExtractor; +import com.google.android.colorextraction.drawable.GradientDrawable; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import static junit.framework.Assert.assertEquals; @RunWith(AndroidTestingRunner.class) @SmallTest @@ -71,6 +62,16 @@ public class ScrimViewTest extends SysuiTestCase { } @Test + public void testCreation_initialColor() { + GradientDrawable drawable = (GradientDrawable) mView.getDrawable(); + ColorExtractor.GradientColors colors = mView.getColors(); + assertEquals("Main color should be set upon creation", + drawable.getMainColor(), colors.getMainColor()); + assertEquals("Secondary color should be set upon creation", + drawable.getSecondaryColor(), colors.getSecondaryColor()); + } + + @Test public void testSetViewAlpha_propagatesToDrawable() { float alpha = 0.5f; mView.setViewAlpha(alpha); -- 2.11.0