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

Commit bd0db7b1 authored by Christoph Studer's avatar Christoph Studer Committed by Android (Google) Code Review
Browse files

Merge "SysUI: Log lockscreen state to eventlog" into lmp-mr1-dev

parents 42ebaa43 2231c6e1
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -9,7 +9,14 @@ option java_package com.android.systemui;
36001 sysui_heads_up_status (key|3),(visible|1)
36002 sysui_fullscreen_notification (key|3)
36003 sysui_heads_up_escalation (key|3)
36004 sysui_status_bar_state (state|1)
# sysui_status_bar_state: Logged whenever the status bar / keyguard state changes
## state: 0: SHADE, 1: KEYGUARD, 2: SHADE_LOCKED
## keyguardShowing: 1: Keyguard shown to the user (or keyguardOccluded)
## keyguardOccluded: 1: Keyguard active, but another activity is occluding it
## bouncerShowing: 1: Bouncer currently shown to the user
## secure: 1: The user has set up a secure unlock method (PIN, password, etc.)
## currentlyInsecure: 1: No secure unlock method set up (!secure), or trusted environment (TrustManager)
36004 sysui_status_bar_state (state|1),(keyguardShowing|1),(keyguardOccluded|1),(bouncerShowing|1),(secure|1),(currentlyInsecure|1)

# ---------------------------
# PhoneStatusBarView.java
+2 −2
Original line number Diff line number Diff line
@@ -388,7 +388,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
        // TODO: Real icon for facelock.
        int iconRes = mUnlockMethodCache.isFaceUnlockRunning()
                ? com.android.internal.R.drawable.ic_account_circle
                : mUnlockMethodCache.isMethodInsecure() ? R.drawable.ic_lock_open_24dp
                : mUnlockMethodCache.isCurrentlyInsecure() ? R.drawable.ic_lock_open_24dp
                : R.drawable.ic_lock_24dp;
        if (mLastUnlockIconRes != iconRes) {
            Drawable icon = mContext.getDrawable(iconRes);
@@ -438,7 +438,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    }

    @Override
    public void onMethodSecureChanged(boolean methodSecure) {
    public void onUnlockMethodStateChanged() {
        updateLockIcon();
        updateCameraVisibility();
    }
+3 −0
Original line number Diff line number Diff line
@@ -212,6 +212,9 @@ public class KeyguardBouncer {
        return false;
    }

    /**
     * WARNING: This method might cause Binder calls.
     */
    public boolean isSecure() {
        return mKeyguardView == null || mKeyguardView.getSecurityMode() != SecurityMode.None;
    }
+71 −17
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.SpeedBumpView;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.UnlockMethodCache.OnUnlockMethodChangedListener;
import com.android.systemui.statusbar.policy.AccessibilityController;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
@@ -183,7 +184,7 @@ import java.util.List;
import java.util.Map;

public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        DragDownHelper.DragDownCallback, ActivityStarter {
        DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener {
    static final String TAG = "PhoneStatusBar";
    public static final boolean DEBUG = BaseStatusBar.DEBUG;
    public static final boolean SPEW = false;
@@ -493,6 +494,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
    private boolean mLaunchTransitionFadingAway;
    private ExpandableNotificationRow mDraggedDownRow;

    // Fingerprint (as computed by getLoggingFingerprint() of the last logged state.
    private int mLastLoggedStateFingerprint;

    private static final int VISIBLE_LOCATIONS = ViewState.LOCATION_FIRST_CARD
            | ViewState.LOCATION_TOP_STACK_PEEKING
            | ViewState.LOCATION_MAIN_AREA
@@ -603,6 +607,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                    mHeadsUpObserver);
        }
        mUnlockMethodCache = UnlockMethodCache.getInstance(mContext);
        mUnlockMethodCache.addListener(this);
        startKeyguard();

        mDozeServiceHost = new DozeServiceHost();
@@ -2159,8 +2164,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

    public boolean isFalsingThresholdNeeded() {
        boolean onKeyguard = getBarState() == StatusBarState.KEYGUARD;
        boolean isMethodInsecure = mUnlockMethodCache.isMethodInsecure();
        return onKeyguard && (isMethodInsecure || mDozing || mScreenOnComingFromTouch);
        boolean isCurrentlyInsecure = mUnlockMethodCache.isCurrentlyInsecure();
        return onKeyguard && (isCurrentlyInsecure || mDozing || mScreenOnComingFromTouch);
    }

    public boolean isDozing() {
@@ -2176,6 +2181,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        return mScrimSrcModeEnabled;
    }

    /**
     * To be called when there's a state change in StatusBarKeyguardViewManager.
     */
    public void onKeyguardViewManagerStatesUpdated() {
        logStateToEventlog();
    }

    @Override  // UnlockMethodCache.OnUnlockMethodChangedListener
    public void onUnlockMethodStateChanged() {
        logStateToEventlog();
    }

    /**
     * All changes to the status bar and notifications funnel through here and are batched.
     */
@@ -3348,6 +3365,47 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
    }

    // State logging

    private void logStateToEventlog() {
        boolean isShowing = mStatusBarKeyguardViewManager.isShowing();
        boolean isOccluded = mStatusBarKeyguardViewManager.isOccluded();
        boolean isBouncerShowing = mStatusBarKeyguardViewManager.isBouncerShowing();
        boolean isSecure = mUnlockMethodCache.isMethodSecure();
        boolean isCurrentlyInsecure = mUnlockMethodCache.isCurrentlyInsecure();
        int stateFingerprint = getLoggingFingerprint(mState,
                isShowing,
                isOccluded,
                isBouncerShowing,
                isSecure,
                isCurrentlyInsecure);
        if (stateFingerprint != mLastLoggedStateFingerprint) {
            EventLogTags.writeSysuiStatusBarState(mState,
                    isShowing ? 1 : 0,
                    isOccluded ? 1 : 0,
                    isBouncerShowing ? 1 : 0,
                    isSecure ? 1 : 0,
                    isCurrentlyInsecure ? 1 : 0);
            mLastLoggedStateFingerprint = stateFingerprint;
        }
    }

    /**
     * Returns a fingerprint of fields logged to eventlog
     */
    private static int getLoggingFingerprint(int statusBarState, boolean keyguardShowing,
            boolean keyguardOccluded, boolean bouncerShowing, boolean secure,
            boolean currentlyInsecure) {
        // Reserve 8 bits for statusBarState. We'll never go higher than
        // that, right? Riiiight.
        return (statusBarState & 0xFF)
                | ((keyguardShowing   ? 1 : 0) <<  8)
                | ((keyguardOccluded  ? 1 : 0) <<  9)
                | ((bouncerShowing    ? 1 : 0) << 10)
                | ((secure            ? 1 : 0) << 11)
                | ((currentlyInsecure ? 1 : 0) << 12);
    }

    //
    // tracing
    //
@@ -3836,21 +3894,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
     * @param state The {@link StatusBarState} to set.
     */
    public void setBarState(int state) {
        if (state != mState) {
            EventLogTags.writeSysuiStatusBarState(state);

        // If we're visible and switched to SHADE_LOCKED (the user dragged
        // down on the lockscreen), clear notification LED, vibration,
        // ringing.
        // Other transitions are covered in handleVisibleToUserChanged().
            if (mVisible && state == StatusBarState.SHADE_LOCKED) {
        if (state != mState && mVisible && state == StatusBarState.SHADE_LOCKED) {
            try {
                mBarService.clearNotificationEffects();
            } catch (RemoteException e) {
                // Ignore.
            }
        }
        }
        mState = state;
        mStatusBarWindowManager.setStatusBarState(state);
    }
@@ -3890,7 +3944,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

    public void onTrackingStopped(boolean expand) {
        if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
            if (!expand && !mUnlockMethodCache.isMethodInsecure()) {
            if (!expand && !mUnlockMethodCache.isCurrentlyInsecure()) {
                showBouncer();
            }
        }
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener {

    public void onTrackingStarted() {
        mExpanding = true;
        mDarkenWhileDragging = !mUnlockMethodCache.isMethodInsecure();
        mDarkenWhileDragging = !mUnlockMethodCache.isCurrentlyInsecure();
    }

    public void onExpandingFinished() {
Loading