diff options
8 files changed, 136 insertions, 95 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 33985bcb8c49..be21d203411e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -131,6 +131,7 @@ public class KeyguardDisplayManager { Presentation presentation = mPresentations.get(displayId); if (presentation == null) { final Presentation newPresentation = new KeyguardPresentation(mContext, display, + mKeyguardStatusViewComponentFactory, mInjectableInflater.injectable(LayoutInflater.from(mContext))); newPresentation.setOnDismissListener(dialog -> { if (newPresentation.equals(mPresentations.get(displayId))) { @@ -145,9 +146,6 @@ public class KeyguardDisplayManager { presentation = null; } if (presentation != null) { - mKeyguardStatusViewComponentFactory - .build(presentation.findViewById(R.id.clock)) - .getKeyguardClockSwitchController().init(); mPresentations.append(displayId, presentation); return true; } @@ -251,7 +249,9 @@ public class KeyguardDisplayManager { static final class KeyguardPresentation extends Presentation { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s + private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; private final LayoutInflater mInjectableLayoutInflater; + private KeyguardClockSwitchController mKeyguardClockSwitchController; private View mClock; private int mUsableWidth; private int mUsableHeight; @@ -269,8 +269,10 @@ public class KeyguardDisplayManager { }; KeyguardPresentation(Context context, Display display, + KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory, LayoutInflater injectionLayoutInflater) { super(context, display, R.style.Theme_SystemUI_KeyguardPresentation); + mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; mInjectableLayoutInflater = injectionLayoutInflater; getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); setCancelable(false); @@ -312,6 +314,12 @@ public class KeyguardDisplayManager { // Avoid screen burn in mClock.post(mMoveTextRunnable); + + mKeyguardClockSwitchController = mKeyguardStatusViewComponentFactory + .build(findViewById(R.id.clock)) + .getKeyguardClockSwitchController(); + + mKeyguardClockSwitchController.init(); } } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java index 95a048baa332..a479bca56c2a 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java @@ -16,9 +16,6 @@ package com.android.keyguard; -import static android.app.slice.Slice.HINT_LIST_ITEM; -import static android.view.Display.INVALID_DISPLAY; - import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; @@ -41,11 +38,8 @@ import android.view.animation.Animation; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.lifecycle.LiveData; -import androidx.slice.Slice; import androidx.slice.SliceItem; import androidx.slice.core.SliceQuery; -import androidx.slice.widget.ListContent; import androidx.slice.widget.RowContent; import androidx.slice.widget.SliceContent; @@ -55,27 +49,23 @@ import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.keyguard.KeyguardSliceProvider; -import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.wakelock.KeepAwakeAnimationListener; import java.io.FileDescriptor; import java.io.PrintWriter; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * View visible under the clock on the lock screen and AoD. */ -public class KeyguardSliceView extends LinearLayout implements View.OnClickListener { +public class KeyguardSliceView extends LinearLayout { private static final String TAG = "KeyguardSliceView"; public static final int DEFAULT_ANIM_DURATION = 550; - private final HashMap<View, PendingIntent> mClickActions; - private ActivityStarter mActivityStarter; private final LayoutTransition mLayoutTransition; @VisibleForTesting TextView mTitle; @@ -83,8 +73,6 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe private int mTextColor; private float mDarkAmount = 0; - private LiveData<Slice> mLiveData; - private int mDisplayId = INVALID_DISPLAY; private int mIconSize; private int mIconSizeWithHeader; /** @@ -96,13 +84,12 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe private final int mRowPadding; private float mRowTextSize; private float mRowWithHeaderTextSize; - private KeyguardSliceViewController mController; + private View.OnClickListener mOnClickListener; public KeyguardSliceView(Context context, AttributeSet attrs) { super(context, attrs); Resources resources = context.getResources(); - mClickActions = new HashMap<>(); mRowPadding = resources.getDimensionPixelSize(R.dimen.subtitle_clock_padding); mRowWithHeaderPadding = resources.getDimensionPixelSize(R.dimen.header_subtitle_padding); @@ -130,7 +117,6 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe R.dimen.widget_label_font_size); mRowWithHeaderTextSize = mContext.getResources().getDimensionPixelSize( R.dimen.header_row_font_size); - mTitle.setOnClickListener(this); mTitle.setBreakStrategy(LineBreaker.BREAK_STRATEGY_BALANCED); } @@ -147,44 +133,31 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe return mHasHeader; } - void showSlice(Slice slice) { - Trace.beginSection("KeyguardSliceView#showSlice"); - if (slice == null) { - mTitle.setVisibility(GONE); - mRow.setVisibility(GONE); - mHasHeader = false; - if (mContentChangeListener != null) { - mContentChangeListener.run(); - } - Trace.endSection(); - return; - } - mClickActions.clear(); - - ListContent lc = new ListContent(getContext(), slice); - SliceContent headerContent = lc.getHeader(); - mHasHeader = headerContent != null && !headerContent.getSliceItem().hasHint(HINT_LIST_ITEM); - List<SliceContent> subItems = new ArrayList<>(); - for (int i = 0; i < lc.getRowItems().size(); i++) { - SliceContent subItem = lc.getRowItems().get(i); - String itemUri = subItem.getSliceItem().getSlice().getUri().toString(); - // Filter out the action row - if (!KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri)) { - subItems.add(subItem); - } + void hideSlice() { + mTitle.setVisibility(GONE); + mRow.setVisibility(GONE); + mHasHeader = false; + if (mContentChangeListener != null) { + mContentChangeListener.run(); } + } + + Map<View, PendingIntent> showSlice(RowContent header, List<SliceContent> subItems) { + Trace.beginSection("KeyguardSliceView#showSlice"); + mHasHeader = header != null; + Map<View, PendingIntent> clickActions = new HashMap<>(); + if (!mHasHeader) { mTitle.setVisibility(GONE); } else { mTitle.setVisibility(VISIBLE); - RowContent header = lc.getHeader(); SliceItem mainTitle = header.getTitleItem(); CharSequence title = mainTitle != null ? mainTitle.getText() : null; mTitle.setText(title); if (header.getPrimaryAction() != null && header.getPrimaryAction().getAction() != null) { - mClickActions.put(mTitle, header.getPrimaryAction().getAction()); + clickActions.put(mTitle, header.getPrimaryAction().getAction()); } } @@ -214,7 +187,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe if (rc.getPrimaryAction() != null) { pendingIntent = rc.getPrimaryAction().getAction(); } - mClickActions.put(button, pendingIntent); + clickActions.put(button, pendingIntent); final SliceItem titleItem = rc.getTitleItem(); button.setText(titleItem == null ? null : titleItem.getText()); @@ -235,14 +208,14 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } } button.setCompoundDrawables(iconDrawable, null, null, null); - button.setOnClickListener(this); + button.setOnClickListener(mOnClickListener); button.setClickable(pendingIntent != null); } // Removing old views for (int i = 0; i < mRow.getChildCount(); i++) { View child = mRow.getChildAt(i); - if (!mClickActions.containsKey(child)) { + if (!clickActions.containsKey(child)) { mRow.removeView(child); i--; } @@ -252,6 +225,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe mContentChangeListener.run(); } Trace.endSection(); + + return clickActions; } public void setDarkAmount(float darkAmount) { @@ -272,14 +247,6 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } } - @Override - public void onClick(View v) { - final PendingIntent action = mClickActions.get(v); - if (action != null && mActivityStarter != null) { - mActivityStarter.startPendingIntentDismissingKeyguard(action); - } - } - /** * Runnable that gets invoked every time the title or the row visibility changes. * @param contentChangeListener The listener. @@ -308,13 +275,8 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe R.dimen.header_row_font_size); } - public void refresh() { - mController.refresh(); - } - public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("KeyguardSliceView:"); - pw.println(" mClickActions: " + mClickActions); pw.println(" mTitle: " + (mTitle == null ? "null" : mTitle.getVisibility() == VISIBLE)); pw.println(" mRow: " + (mRow == null ? "null" : mRow.getVisibility() == VISIBLE)); pw.println(" mTextColor: " + Integer.toHexString(mTextColor)); @@ -322,13 +284,10 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe pw.println(" mHasHeader: " + mHasHeader); } - public void setActivityStarter(ActivityStarter activityStarter) { - mActivityStarter = activityStarter; - } - - public void setController(KeyguardSliceViewController keyguardSliceViewController) { - // TODO: remove this method. - mController = keyguardSliceViewController; + @Override + public void setOnClickListener(View.OnClickListener onClickListener) { + mOnClickListener = onClickListener; + mTitle.setOnClickListener(onClickListener); } public static class Row extends LinearLayout { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java index 68fa0b010a3e..35a2392ba1cf 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java @@ -16,8 +16,10 @@ package com.android.keyguard; +import static android.app.slice.Slice.HINT_LIST_ITEM; import static android.view.Display.DEFAULT_DISPLAY; +import android.app.PendingIntent; import android.net.Uri; import android.os.Trace; import android.provider.Settings; @@ -30,6 +32,9 @@ import androidx.lifecycle.LiveData; import androidx.lifecycle.Observer; import androidx.slice.Slice; import androidx.slice.SliceViewManager; +import androidx.slice.widget.ListContent; +import androidx.slice.widget.RowContent; +import androidx.slice.widget.SliceContent; import androidx.slice.widget.SliceLiveData; import com.android.keyguard.dagger.KeyguardStatusViewScope; @@ -42,15 +47,19 @@ import com.android.systemui.tuner.TunerService; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import javax.inject.Inject; /** Controller for a {@link KeyguardSliceView}. */ @KeyguardStatusViewScope public class KeyguardSliceViewController implements Dumpable { - private static final String TAG = "KeyguardSliceViewController"; + private static final String TAG = "KeyguardSliceViewCtrl"; private final KeyguardSliceView mView; + private final KeyguardStatusView mKeyguardStatusView; private final ActivityStarter mActivityStarter; private final ConfigurationController mConfigurationController; private final TunerService mTunerService; @@ -59,6 +68,7 @@ public class KeyguardSliceViewController implements Dumpable { private LiveData<Slice> mLiveData; private Uri mKeyguardSliceUri; private Slice mSlice; + private Map<View, PendingIntent> mClickActions; private final View.OnAttachStateChangeListener mOnAttachStateChangeListener = new View.OnAttachStateChangeListener() { @@ -106,15 +116,27 @@ public class KeyguardSliceViewController implements Dumpable { @Override public void onChanged(Slice slice) { mSlice = slice; - mView.showSlice(slice); + showSlice(slice); + } + }; + + private View.OnClickListener mOnClickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + final PendingIntent action = mClickActions.get(v); + if (action != null && mActivityStarter != null) { + mActivityStarter.startPendingIntentDismissingKeyguard(action); + } } }; @Inject public KeyguardSliceViewController(KeyguardSliceView keyguardSliceView, - ActivityStarter activityStarter, ConfigurationController configurationController, - TunerService tunerService, DumpManager dumpManager) { + KeyguardStatusView keyguardStatusView, ActivityStarter activityStarter, + ConfigurationController configurationController, TunerService tunerService, + DumpManager dumpManager) { mView = keyguardSliceView; + mKeyguardStatusView = keyguardStatusView; mActivityStarter = activityStarter; mConfigurationController = configurationController; mTunerService = tunerService; @@ -127,8 +149,9 @@ public class KeyguardSliceViewController implements Dumpable { mOnAttachStateChangeListener.onViewAttachedToWindow(mView); } mView.addOnAttachStateChangeListener(mOnAttachStateChangeListener); - mView.setActivityStarter(mActivityStarter); - mView.setController(this); // TODO: remove this. + mView.setOnClickListener(mOnClickListener); + // TODO: remove the line below. + mKeyguardStatusView.setKeyguardSliceViewController(this); } /** @@ -177,8 +200,35 @@ public class KeyguardSliceViewController implements Dumpable { Trace.endSection(); } + void showSlice(Slice slice) { + Trace.beginSection("KeyguardSliceViewController#showSlice"); + if (slice == null) { + mView.hideSlice(); + Trace.endSection(); + return; + } + + ListContent lc = new ListContent(slice); + RowContent headerContent = lc.getHeader(); + boolean hasHeader = + headerContent != null && !headerContent.getSliceItem().hasHint(HINT_LIST_ITEM); + + List<SliceContent> subItems = lc.getRowItems().stream().filter(sliceContent -> { + String itemUri = sliceContent.getSliceItem().getSlice().getUri().toString(); + // Filter out the action row + return !KeyguardSliceProvider.KEYGUARD_ACTION_URI.equals(itemUri); + }).collect(Collectors.toList()); + + + mClickActions = mView.showSlice(hasHeader ? headerContent : null, subItems); + + Trace.endSection(); + } + + @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.println(" mSlice: " + mSlice); + pw.println(" mClickActions: " + mClickActions); } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java index 4c6aafb0058a..6e111745627f 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java @@ -32,7 +32,6 @@ import android.util.Slog; import android.util.TypedValue; import android.view.View; import android.widget.GridLayout; -import android.widget.LinearLayout; import android.widget.TextView; import androidx.core.graphics.ColorUtils; @@ -56,7 +55,6 @@ public class KeyguardStatusView extends GridLayout implements private final LockPatternUtils mLockPatternUtils; private final IActivityManager mIActivityManager; - private LinearLayout mStatusViewContainer; private TextView mLogoutView; private KeyguardClockSwitch mClockView; private TextView mOwnerInfo; @@ -64,6 +62,7 @@ public class KeyguardStatusView extends GridLayout implements private View mNotificationIcons; private Runnable mPendingMarqueeStart; private Handler mHandler; + private KeyguardSliceViewController mKeyguardSliceViewController; private boolean mPulsing; private float mDarkAmount = 0; @@ -179,7 +178,6 @@ public class KeyguardStatusView extends GridLayout implements @Override protected void onFinishInflate() { super.onFinishInflate(); - mStatusViewContainer = findViewById(R.id.status_view_container); mLogoutView = findViewById(R.id.logout); mNotificationIcons = findViewById(R.id.clock_notification_icon_container); if (mLogoutView != null) { @@ -250,7 +248,7 @@ public class KeyguardStatusView extends GridLayout implements public void dozeTimeTick() { refreshTime(); - mKeyguardSlice.refresh(); + mKeyguardSliceViewController.refresh(); } private void refreshTime() { @@ -456,4 +454,9 @@ public class KeyguardStatusView extends GridLayout implements Log.e(TAG, "Failed to logout user", re); } } + + // TODO: remove this method when a controller is available. + void setKeyguardSliceViewController(KeyguardSliceViewController keyguardSliceViewController) { + mKeyguardSliceViewController = keyguardSliceViewController; + } } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java index 446b1228f1bb..559284ac0672 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java @@ -16,6 +16,7 @@ package com.android.keyguard; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import android.content.Context; @@ -28,6 +29,7 @@ import android.view.View; import androidx.test.filters.SmallTest; import com.android.keyguard.KeyguardDisplayManager.KeyguardPresentation; +import com.android.keyguard.dagger.KeyguardStatusViewComponent; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiTestCase; @@ -51,6 +53,12 @@ public class KeyguardPresentationTest extends SysuiTestCase { KeyguardSliceView mMockKeyguardSliceView; @Mock KeyguardStatusView mMockKeyguardStatusView; + @Mock + private KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; + @Mock + private KeyguardStatusViewComponent mKeyguardStatusViewComponent; + @Mock + private KeyguardClockSwitchController mKeyguardClockSwitchController; LayoutInflater mLayoutInflater; @@ -62,6 +70,11 @@ public class KeyguardPresentationTest extends SysuiTestCase { when(mMockKeyguardSliceView.getContext()).thenReturn(mContext); when(mMockKeyguardStatusView.getContext()).thenReturn(mContext); when(mMockKeyguardStatusView.findViewById(R.id.clock)).thenReturn(mMockKeyguardStatusView); + when(mKeyguardStatusViewComponentFactory.build(any(KeyguardStatusView.class))) + .thenReturn(mKeyguardStatusViewComponent); + when(mKeyguardStatusViewComponent.getKeyguardClockSwitchController()) + .thenReturn(mKeyguardClockSwitchController); + allowTestableLooperAsMainThread(); InjectionInflationController inflationController = new InjectionInflationController( @@ -99,7 +112,8 @@ public class KeyguardPresentationTest extends SysuiTestCase { @Test public void testInflation_doesntCrash() { KeyguardPresentation keyguardPresentation = new KeyguardPresentation(mContext, - mContext.getDisplayNoVerify(), mLayoutInflater); + mContext.getDisplayNoVerify(), mKeyguardStatusViewComponentFactory, + mLayoutInflater); keyguardPresentation.onCreate(null /*savedInstanceState */); } } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewControllerTest.java index 991d99588127..b7bcaa3c3566 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewControllerTest.java @@ -44,7 +44,9 @@ import org.mockito.MockitoAnnotations; @RunWithLooper(setAsMainLooper = true) public class KeyguardSliceViewControllerTest extends SysuiTestCase { @Mock - private KeyguardSliceView mView; + private KeyguardSliceView mView;; + @Mock + private KeyguardStatusView mKeyguardStatusView; @Mock private TunerService mTunerService; @Mock @@ -61,15 +63,15 @@ public class KeyguardSliceViewControllerTest extends SysuiTestCase { when(mView.isAttachedToWindow()).thenReturn(true); when(mView.getContext()).thenReturn(mContext); mController = new KeyguardSliceViewController( - mView, mActivityStarter, mConfigurationController, mTunerService, mDumpManager); + mView, mKeyguardStatusView, mActivityStarter, mConfigurationController, + mTunerService, mDumpManager); mController.setupUri(KeyguardSliceProvider.KEYGUARD_SLICE_URI); } - @Test public void refresh_replacesSliceContentAndNotifiesListener() { mController.refresh(); - verify(mView).showSlice(null); + verify(mView).hideSlice(); } @Test diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java index f388ad02647d..1ab08c27088a 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java @@ -22,9 +22,11 @@ import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.view.LayoutInflater; +import androidx.slice.Slice; import androidx.slice.SliceProvider; import androidx.slice.SliceSpecs; import androidx.slice.builders.ListBuilder; +import androidx.slice.widget.RowContent; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; @@ -34,7 +36,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Collections; @@ -47,8 +48,6 @@ import java.util.concurrent.atomic.AtomicBoolean; public class KeyguardSliceViewTest extends SysuiTestCase { private KeyguardSliceView mKeyguardSliceView; private Uri mSliceUri; - @Mock - private KeyguardSliceViewController mKeyguardSliceViewController; @Before public void setUp() throws Exception { @@ -56,7 +55,6 @@ public class KeyguardSliceViewTest extends SysuiTestCase { LayoutInflater layoutInflater = LayoutInflater.from(getContext()); mKeyguardSliceView = (KeyguardSliceView) layoutInflater .inflate(R.layout.keyguard_status_area, null); - mKeyguardSliceView.setController(mKeyguardSliceViewController); mSliceUri = Uri.parse(KeyguardSliceProvider.KEYGUARD_SLICE_URI); SliceProvider.setSpecs(new HashSet<>(Collections.singletonList(SliceSpecs.LIST))); } @@ -64,9 +62,13 @@ public class KeyguardSliceViewTest extends SysuiTestCase { @Test public void showSlice_notifiesListener() { ListBuilder builder = new ListBuilder(getContext(), mSliceUri, ListBuilder.INFINITY); + builder.setHeader(new ListBuilder.HeaderBuilder().setTitle("header title!")); + Slice slice = builder.build(); + RowContent rowContent = new RowContent(slice.getItemArray()[0], 0); + AtomicBoolean notified = new AtomicBoolean(); mKeyguardSliceView.setContentChangeListener(()-> notified.set(true)); - mKeyguardSliceView.showSlice(builder.build()); + mKeyguardSliceView.showSlice(rowContent, Collections.EMPTY_LIST); Assert.assertTrue("Listener should be notified about slice changes.", notified.get()); } @@ -75,7 +77,7 @@ public class KeyguardSliceViewTest extends SysuiTestCase { public void showSlice_emptySliceNotifiesListener() { AtomicBoolean notified = new AtomicBoolean(); mKeyguardSliceView.setContentChangeListener(()-> notified.set(true)); - mKeyguardSliceView.showSlice(null); + mKeyguardSliceView.showSlice(null, Collections.EMPTY_LIST); Assert.assertTrue("Listener should be notified about slice changes.", notified.get()); } @@ -83,11 +85,13 @@ public class KeyguardSliceViewTest extends SysuiTestCase { @Test public void hasHeader_readsSliceData() { ListBuilder builder = new ListBuilder(getContext(), mSliceUri, ListBuilder.INFINITY); - mKeyguardSliceView.showSlice(builder.build()); + mKeyguardSliceView.showSlice(null, Collections.EMPTY_LIST); Assert.assertFalse("View should not have a header", mKeyguardSliceView.hasHeader()); builder.setHeader(new ListBuilder.HeaderBuilder().setTitle("header title!")); - mKeyguardSliceView.showSlice(builder.build()); + Slice slice = builder.build(); + RowContent rowContent = new RowContent(slice.getItemArray()[0], 0); + mKeyguardSliceView.showSlice(rowContent, Collections.EMPTY_LIST); Assert.assertTrue("View should have a header", mKeyguardSliceView.hasHeader()); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java index 0bf137689aa1..0431704778c3 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java @@ -40,7 +40,8 @@ import org.mockito.Mock; public class KeyguardStatusViewTest extends SysuiTestCase { @Mock - KeyguardSliceView mKeyguardSlice; + KeyguardSliceViewController mKeyguardSliceViewController; + @Mock KeyguardClockSwitch mClockView; @InjectMocks @@ -64,7 +65,7 @@ public class KeyguardStatusViewTest extends SysuiTestCase { @Test public void dozeTimeTick_updatesSlice() { mKeyguardStatusView.dozeTimeTick(); - verify(mKeyguardSlice).refresh(); + verify(mKeyguardSliceViewController).refresh(); } @Test |