Use KeyguardVisibilityHelper for CommunalHostView.

This changelist uses KeyguardVisibilityHelper for
CommunalHostView by allowing KeyguardVisibilityHelper
clients to specify at construction that they would
like to be shown on communal.

Test: atest KeyguardVisibilityHelperTest#testVisibleOnCommunal
Bug: 197022459
Change-Id: Idb2c83a8441305a130e2d7e13220410f88a0102e
This commit is contained in:
Bryce Lee
2021-08-17 17:13:45 -07:00
parent 27d3d183bc
commit 36a8144c71
8 changed files with 67 additions and 8 deletions

View File

@@ -80,7 +80,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
mKeyguardStateController = keyguardStateController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, communalStateController,
keyguardStateController, dozeParameters, unlockedScreenOffAnimationController,
/* animateYPos= */ true);
/* animateYPos= */ true, /* visibleOnCommunal= */ false);
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
mSmartspaceTransitionController = smartspaceTransitionController;
}

View File

@@ -43,6 +43,7 @@ public class KeyguardVisibilityHelper {
private final KeyguardStateController mKeyguardStateController;
private final DozeParameters mDozeParameters;
private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
private final boolean mVisibleOnCommunal;
private boolean mAnimateYPos;
private boolean mKeyguardViewVisibilityAnimating;
private boolean mLastOccludedState = false;
@@ -53,13 +54,15 @@ public class KeyguardVisibilityHelper {
KeyguardStateController keyguardStateController,
DozeParameters dozeParameters,
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
boolean animateYPos) {
boolean animateYPos,
boolean visibleOnCommunal) {
mView = view;
mCommunalStateController = communalStateController;
mKeyguardStateController = keyguardStateController;
mDozeParameters = dozeParameters;
mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController;
mAnimateYPos = animateYPos;
mVisibleOnCommunal = visibleOnCommunal;
}
public boolean isVisibilityAnimating() {
@@ -79,7 +82,7 @@ public class KeyguardVisibilityHelper {
mKeyguardViewVisibilityAnimating = false;
// If the communal view is showing, hide immediately
if (mCommunalStateController.getCommunalViewShowing()) {
if (!mVisibleOnCommunal && mCommunalStateController.getCommunalViewShowing()) {
mView.setVisibility(View.GONE);
mView.setAlpha(1f);
return;

View File

@@ -24,8 +24,11 @@ import android.view.ViewGroup;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.KeyguardVisibilityHelper;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.ViewController;
@@ -70,6 +73,8 @@ public class CommunalHostViewController extends ViewController<CommunalHostView>
private static final int SHOW_COMMUNAL_VIEW_INVALID_STATES =
STATE_DOZING | STATE_BOUNCER_SHOWING | STATE_KEYGUARD_OCCLUDED;
private final KeyguardVisibilityHelper mKeyguardVisibilityHelper;
private ViewController<? extends View> mCommunalViewController;
private KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
@@ -123,6 +128,8 @@ public class CommunalHostViewController extends ViewController<CommunalHostView>
CommunalStateController communalStateController,
KeyguardUpdateMonitor keyguardUpdateMonitor,
KeyguardStateController keyguardStateController,
DozeParameters dozeParameters,
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
StatusBarStateController statusBarStateController, CommunalHostView view) {
super(view);
mCommunalStateController = communalStateController;
@@ -130,6 +137,21 @@ public class CommunalHostViewController extends ViewController<CommunalHostView>
mMainExecutor = mainExecutor;
mKeyguardStateController = keyguardStateController;
mStatusBarStateController = statusBarStateController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, communalStateController,
keyguardStateController, dozeParameters, unlockedScreenOffAnimationController,
/* animateYPos= */ false, /* visibleOnCommunal= */ true);
}
/**
* Set the visibility of the keyguard status view based on some new state.
*/
public void setKeyguardStatusViewVisibility(
int statusBarState,
boolean keyguardFadingAway,
boolean goingToFullShade,
int oldStatusBarState) {
mKeyguardVisibilityHelper.setViewVisibility(
statusBarState, keyguardFadingAway, goingToFullShade, oldStatusBarState);
}
@Override

View File

@@ -4583,6 +4583,15 @@ public class NotificationPanelViewController extends PanelViewController {
keyguardFadingAway,
goingToFullShade,
mBarState);
if (mCommunalViewController != null) {
mCommunalViewController.setKeyguardStatusViewVisibility(
statusBarState,
keyguardFadingAway,
goingToFullShade,
mBarState);
}
setKeyguardBottomAreaVisibility(statusBarState, goingToFullShade);
mBarState = statusBarState;

View File

@@ -137,7 +137,8 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
mStatusBarStateController = statusBarStateController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, communalStateController,
keyguardStateController, dozeParameters,
unlockedScreenOffAnimationController, /* animateYPos= */ false);
unlockedScreenOffAnimationController, /* animateYPos= */ false,
/* visibleOnCommunal= */ false);
mUserDetailAdapter = new KeyguardUserDetailAdapter(context, userDetailViewAdapterProvider);
}

View File

@@ -176,7 +176,8 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS
mUserSwitcherController, this);
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, communalStateController,
keyguardStateController, dozeParameters,
unlockedScreenOffAnimationController, /* animateYPos= */ false);
unlockedScreenOffAnimationController, /* animateYPos= */ false,
/* visibleOnCommunal= */ false);
mBackground = new KeyguardUserSwitcherScrim(context);
}

View File

@@ -56,7 +56,7 @@ public class KeyguardVisibilityHelperTest extends SysuiTestCase {
when(mTargetView.animate()).thenReturn(mViewPropertyAnimator);
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mTargetView,
mCommunalStateController, mKeyguardStateController, mDozeParameters,
mUnlockedScreenOffAnimationController, false);
mUnlockedScreenOffAnimationController, false, false);
}
@Test
@@ -74,4 +74,19 @@ public class KeyguardVisibilityHelperTest extends SysuiTestCase {
false, StatusBarState.KEYGUARD);
verify(mTargetView).setVisibility(View.VISIBLE);
}
@Test
public void testVisibleOnCommunal() {
when(mCommunalStateController.getCommunalViewShowing()).thenReturn(true);
when(mKeyguardStateController.isOccluded()).thenReturn(false);
// Verify that helpers constructed with visibility on communal are not hidden when communal
// is present.
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mTargetView,
mCommunalStateController, mKeyguardStateController, mDozeParameters,
mUnlockedScreenOffAnimationController, false, true);
mKeyguardVisibilityHelper.setViewVisibility(StatusBarState.KEYGUARD, false,
false, StatusBarState.KEYGUARD);
verify(mTargetView).setVisibility(View.VISIBLE);
}
}

View File

@@ -29,6 +29,8 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;
@@ -61,6 +63,12 @@ public class CommunalHostViewControllerTest extends SysuiTestCase {
@Mock
private CommunalHostView mCommunalView;
@Mock
private DozeParameters mDozeParameters;
@Mock
private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
private CommunalHostViewController mController;
@@ -76,8 +84,8 @@ public class CommunalHostViewControllerTest extends SysuiTestCase {
when(mCommunalView.isAttachedToWindow()).thenReturn(true);
mController = new CommunalHostViewController(mFakeExecutor, mCommunalStateController,
mKeyguardUpdateMonitor, mKeyguardStateController, mStatusBarStateController,
mCommunalView);
mKeyguardUpdateMonitor, mKeyguardStateController, mDozeParameters,
mUnlockedScreenOffAnimationController, mStatusBarStateController, mCommunalView);
mController.init();
mFakeExecutor.runAllReady();
Mockito.clearInvocations(mCommunalView);