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

Commit f44b13ad authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Remove view inflation when getting the running KeyguardBouncer.needsFullscreenBouncer.

The view is just proxying to an underyling object. Query the object directly.
Bug: 140059518
Test: atest SystemUITests.

Change-Id: I797f7c6a3d8734795d8a34a3709eaeed2e571dfa
parent 32724383
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe

    public KeyguardSecurityContainer(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mSecurityModel = new KeyguardSecurityModel(context);
        mSecurityModel = Dependency.get(KeyguardSecurityModel.class);
        mLockPatternUtils = new LockPatternUtils(context);
        mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
        mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y);
+6 −1
Original line number Diff line number Diff line
@@ -25,6 +25,10 @@ import com.android.internal.telephony.IccCardConstants;
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;

import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class KeyguardSecurityModel {

    /**
@@ -46,6 +50,7 @@ public class KeyguardSecurityModel {

    private LockPatternUtils mLockPatternUtils;

    @Inject
    KeyguardSecurityModel(Context context) {
        mContext = context;
        mLockPatternUtils = new LockPatternUtils(context);
@@ -57,7 +62,7 @@ public class KeyguardSecurityModel {
        mLockPatternUtils = utils;
    }

    SecurityMode getSecurityMode(int userId) {
    public SecurityMode getSecurityMode(int userId) {
        KeyguardUpdateMonitor monitor = Dependency.get(KeyguardUpdateMonitor.class);

        if (mIsPukScreenAvailable && SubscriptionManager.isValidSubscriptionId(
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.Preconditions;
import com.android.keyguard.KeyguardSecurityModel;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.clock.ClockManager;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -316,6 +317,7 @@ public class Dependency {
    @Inject Lazy<FalsingManager> mFalsingManager;
    @Inject Lazy<SysUiState> mSysUiStateFlagsContainer;
    @Inject Lazy<AlarmManager> mAlarmManager;
    @Inject Lazy<KeyguardSecurityModel> mKeyguardSecurityModel;

    @Inject
    public Dependency() {
@@ -501,6 +503,7 @@ public class Dependency {
        mProviders.put(FalsingManager.class, mFalsingManager::get);
        mProviders.put(SysUiState.class, mSysUiStateFlagsContainer::get);
        mProviders.put(AlarmManager.class, mAlarmManager::get);
        mProviders.put(KeyguardSecurityModel.class, mKeyguardSecurityModel::get);

        // TODO(b/118592525): to support multi-display , we start to add something which is
        //                    per-display, while others may be global. I think it's time to add
+5 −10
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.phone;

import static com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.plugins.ActivityStarter.OnDismissAction;

import android.content.Context;
@@ -38,11 +37,13 @@ import android.view.WindowInsets;

import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardHostView;
import com.android.keyguard.KeyguardSecurityModel;
import com.android.keyguard.KeyguardSecurityView;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.DejankUtils;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.plugins.FalsingManager;
@@ -461,16 +462,10 @@ public class KeyguardBouncer {
     * notifications on Keyguard, like SIM PIN/PUK.
     */
    public boolean needsFullscreenBouncer() {
        // TODO(b/140059518)
        return whitelistIpcs(() -> {
            ensureView();
            if (mKeyguardView != null) {
                SecurityMode mode = mKeyguardView.getSecurityMode();
        SecurityMode mode = Dependency.get(KeyguardSecurityModel.class).getSecurityMode(
                KeyguardUpdateMonitor.getCurrentUser());
        return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk;
    }
            return false;
        });
    }

    /**
     * Like {@link #needsFullscreenBouncer}, but uses the currently visible security method, which
+5 −8
Original line number Diff line number Diff line
@@ -89,6 +89,8 @@ public class KeyguardBouncerTest extends SysuiTestCase {
    private KeyguardBypassController mKeyguardBypassController;
    @Mock
    private Handler mHandler;
    @Mock
    private KeyguardSecurityModel mKeyguardSecurityModel;

    private KeyguardBouncer mBouncer;

@@ -97,6 +99,9 @@ public class KeyguardBouncerTest extends SysuiTestCase {
        com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper();
        MockitoAnnotations.initMocks(this);
        mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor);
        mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel);
        when(mKeyguardSecurityModel.getSecurityMode(anyInt()))
                .thenReturn(KeyguardSecurityModel.SecurityMode.None);
        DejankUtils.setImmediate(true);
        final ViewGroup container = new FrameLayout(getContext());
        when(mKeyguardHostView.getViewTreeObserver()).thenReturn(mViewTreeObserver);
@@ -305,14 +310,6 @@ public class KeyguardBouncerTest extends SysuiTestCase {
        verify(mKeyguardHostView).setTranslationY(anyFloat());
    }

    @Test
    public void testNeedsFullscreenBouncer_asksKeyguardView() {
        mBouncer.ensureView();
        mBouncer.needsFullscreenBouncer();
        verify(mKeyguardHostView).getSecurityMode();
        verify(mKeyguardHostView, never()).getCurrentSecurityMode();
    }

    @Test
    public void testIsFullscreenBouncer_asksKeyguardView() {
        mBouncer.ensureView();