Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 900d7785 authored by Beverly Tai's avatar Beverly Tai Committed by Android (Google) Code Review
Browse files

Merge "Update all persistent kg messages when kg is shown"

parents 63f272c4 21f78c2d
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -119,14 +119,13 @@ public class KeyguardIndicationRotateTextViewController extends
            return;
        }
        long minShowDuration = getMinVisibilityMillis(mIndicationMessages.get(mCurrIndicationType));
        final boolean hasPreviousIndication = mIndicationMessages.get(type) != null
                && !TextUtils.isEmpty(mIndicationMessages.get(type).getMessage());
        final boolean hasNewIndication = newIndication != null;
        final boolean hasNewIndication = newIndication != null
                && !TextUtils.isEmpty(newIndication.getMessage());
        if (!hasNewIndication) {
            mIndicationMessages.remove(type);
            mIndicationQueue.removeIf(x -> x == type);
        } else {
            if (!hasPreviousIndication) {
            if (!mIndicationQueue.contains(type)) {
                mIndicationQueue.add(type);
            }

@@ -230,6 +229,7 @@ public class KeyguardIndicationRotateTextViewController extends
    public void clearMessages() {
        mCurrIndicationType = INDICATION_TYPE_NONE;
        mIndicationQueue.clear();
        mIndicationMessages.clear();
        mView.clearMessages();
    }

@@ -310,7 +310,7 @@ public class KeyguardIndicationRotateTextViewController extends
                    if (mIsDozing) {
                        showIndication(INDICATION_TYPE_NONE);
                    } else if (mIndicationQueue.size() > 0) {
                        showIndication(mIndicationQueue.remove(0));
                        showIndication(mIndicationQueue.get(0));
                    }
                }
            };
@@ -327,7 +327,7 @@ public class KeyguardIndicationRotateTextViewController extends
        ShowNextIndication(long delay) {
            mShowIndicationRunnable = () -> {
                int type = mIndicationQueue.size() == 0
                        ? INDICATION_TYPE_NONE : mIndicationQueue.remove(0);
                        ? INDICATION_TYPE_NONE : mIndicationQueue.get(0);
                showIndication(type);
            };
            mCancelDelayedRunnable = mExecutor.executeDelayed(mShowIndicationRunnable, delay);
+14 −65
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont
import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_ON;
import static com.android.systemui.plugins.FalsingManager.LOW_PENALTY;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.app.IActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
@@ -72,7 +70,6 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.Utils;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
@@ -149,6 +146,7 @@ public class KeyguardIndicationController {
    private CharSequence mBiometricMessage;
    protected ColorStateList mInitialTextColorState;
    private boolean mVisible;
    private boolean mOrganizationOwnedDevice;

    private boolean mPowerPluggedIn;
    private boolean mPowerPluggedInWired;
@@ -256,13 +254,13 @@ public class KeyguardIndicationController {
            mExecutor,
            mStatusBarStateController);
        updateIndication(false /* animate */);
        updateDisclosure();
        updateOrganizedOwnedDevice();
        if (mBroadcastReceiver == null) {
            // Update the disclosure proactively to avoid IPC on the critical path.
            mBroadcastReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    updateDisclosure();
                    updateOrganizedOwnedDevice();
                }
            };
            IntentFilter intentFilter = new IntentFilter();
@@ -305,12 +303,11 @@ public class KeyguardIndicationController {
    }

    /**
     * Doesn't include disclosure (also a persistent indication) which gets triggered separately.
     *
     * This method also doesn't update transient messages like biometrics since those messages
     * are also updated separately.
     */
    private void updatePersistentIndications(boolean animate, int userId) {
        updateDisclosure();
        updateOwnerInfo();
        updateBattery(animate);
        updateUserLocked(userId);
@@ -320,9 +317,14 @@ public class KeyguardIndicationController {
        updateResting();
    }

    private void updateDisclosure() {
    private void updateOrganizedOwnedDevice() {
        // avoid calling this method since it has an IPC
        if (whitelistIpcs(this::isOrganizationOwnedDevice)) {
        mOrganizationOwnedDevice = whitelistIpcs(this::isOrganizationOwnedDevice);
        updatePersistentIndications(false, KeyguardUpdateMonitor.getCurrentUser());
    }

    private void updateDisclosure() {
        if (mOrganizationOwnedDevice) {
            final CharSequence organizationName = getOrganizationOwnedDeviceOrganizationName();
            final CharSequence disclosure = getDisclosureText(organizationName);
            mRotateTextViewController.updateIndication(
@@ -335,8 +337,6 @@ public class KeyguardIndicationController {
        } else {
            mRotateTextViewController.hideIndication(INDICATION_TYPE_DISCLOSURE);
        }

        updateResting();
    }

    private CharSequence getDisclosureText(@Nullable CharSequence organizationName) {
@@ -753,60 +753,6 @@ public class KeyguardIndicationController {
        updatePersistentIndications(animate, KeyguardUpdateMonitor.getCurrentUser());
    }

    // animates textView - textView moves up and bounces down
    private void animateText(KeyguardIndicationTextView textView, String indication) {
        int yTranslation = mContext.getResources().getInteger(
                R.integer.wired_charging_keyguard_text_animation_distance);
        int animateUpDuration = mContext.getResources().getInteger(
                R.integer.wired_charging_keyguard_text_animation_duration_up);
        int animateDownDuration = mContext.getResources().getInteger(
                R.integer.wired_charging_keyguard_text_animation_duration_down);
        textView.animate().cancel();
        ViewClippingUtil.setClippingDeactivated(textView, true, mClippingParams);
        textView.animate()
                .translationYBy(yTranslation)
                .setInterpolator(Interpolators.LINEAR)
                .setDuration(animateUpDuration)
                .setListener(new AnimatorListenerAdapter() {
                    private boolean mCancelled;

                    @Override
                    public void onAnimationStart(Animator animation) {
                        textView.switchIndication(indication, null);
                    }

                    @Override
                    public void onAnimationCancel(Animator animation) {
                        textView.setTranslationY(BOUNCE_ANIMATION_FINAL_Y);
                        mCancelled = true;
                    }

                    @Override
                    public void onAnimationEnd(Animator animation) {
                        if (mCancelled) {
                            ViewClippingUtil.setClippingDeactivated(textView, false,
                                    mClippingParams);
                            return;
                        }
                        textView.animate()
                                .setDuration(animateDownDuration)
                                .setInterpolator(Interpolators.BOUNCE)
                                .translationY(BOUNCE_ANIMATION_FINAL_Y)
                                .setListener(new AnimatorListenerAdapter() {
                                    @Override
                                    public void onAnimationEnd(Animator animation) {
                                        textView.setTranslationY(BOUNCE_ANIMATION_FINAL_Y);
                                        ViewClippingUtil.setClippingDeactivated(textView, false,
                                                mClippingParams);
                                        // Unset the listener, otherwise this may persist for
                                        // another view property animation
                                        textView.animate().setListener(null);
                                    }
                                });
                    }
                });
    }

    protected String computePowerIndication() {
        int chargingId;
        if (mBatteryOverheated) {
@@ -1182,9 +1128,12 @@ public class KeyguardIndicationController {

        @Override
        public void onKeyguardShowingChanged() {
            // All transient messages are gone the next time keyguard is shown
            if (!mKeyguardStateController.isShowing()) {
                mTopIndicationView.clearMessages();
                mRotateTextViewController.clearMessages();
            } else {
                updatePersistentIndications(false, KeyguardUpdateMonitor.getCurrentUser());
            }
        }
    };
+36 −3
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_BATTERY;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_BIOMETRIC_MESSAGE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_DISCLOSURE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_LOGOUT;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_OWNER_INFO;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_RESTING;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_TRANSIENT;
@@ -86,7 +87,6 @@ import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardIndicationTextView;
import com.android.systemui.statusbar.phone.LockIcon;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -132,8 +132,6 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    @Mock
    private BroadcastDispatcher mBroadcastDispatcher;
    @Mock
    private LockIcon mLockIcon;
    @Mock
    private StatusBarStateController mStatusBarStateController;
    @Mock
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@@ -738,6 +736,41 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
        verifyHideIndication(INDICATION_TYPE_OWNER_INFO);
    }

    @Test
    public void testOnKeyguardShowingChanged_notShowing_resetsMessages() {
        createController();

        // GIVEN keyguard isn't showing
        when(mKeyguardStateController.isShowing()).thenReturn(false);

        // WHEN keyguard showing changed called
        mKeyguardStateControllerCallback.onKeyguardShowingChanged();

        // THEN messages are reset
        verify(mRotateTextViewController).clearMessages();
        assertThat(mTextView.getText()).isEqualTo("");
    }

    @Test
    public void testOnKeyguardShowingChanged_showing_updatesPersistentMessages() {
        createController();

        // GIVEN keyguard is showing
        when(mKeyguardStateController.isShowing()).thenReturn(true);

        // WHEN keyguard showing changed called
        mKeyguardStateControllerCallback.onKeyguardShowingChanged();

        // THEN persistent messages are updated (in this case, most messages are hidden since
        // no info is provided) - verify that this happens
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_DISCLOSURE);
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_OWNER_INFO);
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_BATTERY);
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_TRUST);
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_ALIGNMENT);
        verify(mRotateTextViewController).hideIndication(INDICATION_TYPE_LOGOUT);
    }

    private void sendUpdateDisclosureBroadcast() {
        mBroadcastReceiver.onReceive(mContext, new Intent());
    }