From f39ce10e2a6c18e54701c72ce3ac514b0325e259 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 2 May 2018 14:23:44 -0700 Subject: Update views when next slice is null Otherwise invalid content would be presented after switching users Test: manual, switch users, look at smart clock Test: atest tests/src/com/android/keyguard/KeyguardSliceViewTest.java Change-Id: Id3bd5e9cfedd17870d00f7a55386661f5b22ff59 Fixes: 78891765 --- .../com/android/keyguard/KeyguardSliceView.java | 6 +----- .../android/keyguard/KeyguardSliceViewTest.java | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java index c31cea2b5de9..ffe92fd34257 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java @@ -145,17 +145,13 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } private void showSlice() { - if (mPulsing) { + if (mPulsing || mSlice == null) { mTitle.setVisibility(GONE); mRow.setVisibility(GONE); mContentChangeListener.accept(getLayoutTransition() != null); return; } - if (mSlice == null) { - return; - } - ListContent lc = new ListContent(getContext(), mSlice); mHasHeader = lc.hasHeader(); List subItems = lc.getRowItems(); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java index 9a2865785065..210764adb4a6 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java @@ -21,9 +21,6 @@ import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.view.LayoutInflater; -import android.view.View; -import android.view.View.MeasureSpec; -import android.view.ViewGroup; import com.android.systemui.SysuiTestCase; import com.android.systemui.keyguard.KeyguardSliceProvider; @@ -35,6 +32,7 @@ import org.junit.runner.RunWith; import java.util.Collections; import java.util.HashSet; +import java.util.concurrent.atomic.AtomicBoolean; import androidx.slice.SliceProvider; import androidx.slice.SliceSpecs; @@ -58,12 +56,24 @@ public class KeyguardSliceViewTest extends SysuiTestCase { @Test public void showSlice_notifiesListener() { ListBuilder builder = new ListBuilder(getContext(), mSliceUri); - boolean[] notified = {false}; + AtomicBoolean notified = new AtomicBoolean(); mKeyguardSliceView.setContentChangeListener((hasHeader)-> { - notified[0] = true; + notified.set(true); }); mKeyguardSliceView.onChanged(builder.build()); - Assert.assertTrue("Listener should be notified about slice changes.", notified[0]); + Assert.assertTrue("Listener should be notified about slice changes.", + notified.get()); + } + + @Test + public void showSlice_emptySliceNotifiesListener() { + AtomicBoolean notified = new AtomicBoolean(); + mKeyguardSliceView.setContentChangeListener((hasHeader)-> { + notified.set(true); + }); + mKeyguardSliceView.onChanged(null); + Assert.assertTrue("Listener should be notified about slice changes.", + notified.get()); } @Test -- cgit v1.2.3-59-g8ed1b