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

Commit aff38adc authored by Charles He's avatar Charles He Committed by Android (Google) Code Review
Browse files

Merge "StatusBar: add DISABLE2_NOTIFICATION_SHADE flag."

parents 35d35ab4 2eda242f
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -72,13 +72,16 @@ public class StatusBarManager {
     */
     */
    public static final int DISABLE2_QUICK_SETTINGS = 1;
    public static final int DISABLE2_QUICK_SETTINGS = 1;
    public static final int DISABLE2_SYSTEM_ICONS = 1 << 1;
    public static final int DISABLE2_SYSTEM_ICONS = 1 << 1;
    public static final int DISABLE2_NOTIFICATION_SHADE = 1 << 2;


    public static final int DISABLE2_NONE = 0x00000000;
    public static final int DISABLE2_NONE = 0x00000000;


    public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS | DISABLE2_SYSTEM_ICONS;
    public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS | DISABLE2_SYSTEM_ICONS
            | DISABLE2_NOTIFICATION_SHADE;


    @IntDef(flag = true,
    @IntDef(flag = true,
            value = {DISABLE2_NONE, DISABLE2_MASK, DISABLE2_QUICK_SETTINGS, DISABLE2_SYSTEM_ICONS})
            value = {DISABLE2_NONE, DISABLE2_MASK, DISABLE2_QUICK_SETTINGS, DISABLE2_SYSTEM_ICONS,
                    DISABLE2_NOTIFICATION_SHADE})
    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Disable2Flags {}
    public @interface Disable2Flags {}


+1 −1
Original line number Original line Diff line number Diff line
@@ -667,7 +667,7 @@ public class NotificationPanelView extends PanelView implements
            return false;
            return false;
        }
        }
        initDownStates(event);
        initDownStates(event);
        if (mHeadsUpTouchHelper.onInterceptTouchEvent(event)) {
        if (mBar.panelEnabled() && mHeadsUpTouchHelper.onInterceptTouchEvent(event)) {
            mIsExpansionFromHeadsUp = true;
            mIsExpansionFromHeadsUp = true;
            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
+24 −2
Original line number Original line Diff line number Diff line
@@ -479,7 +479,8 @@ public class StatusBar extends SystemUI implements DemoMode,
    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);


    // ensure quick settings is disabled until the current user makes it through the setup wizard
    // ensure quick settings is disabled until the current user makes it through the setup wizard
    private boolean mUserSetup = false;
    @VisibleForTesting
    protected boolean mUserSetup = false;
    private final DeviceProvisionedListener mUserSetupObserver = new DeviceProvisionedListener() {
    private final DeviceProvisionedListener mUserSetupObserver = new DeviceProvisionedListener() {
        @Override
        @Override
        public void onUserSetupChanged() {
        public void onUserSetupChanged() {
@@ -1978,6 +1979,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        mNotificationPanel.setQsExpansionEnabled(isDeviceProvisioned()
        mNotificationPanel.setQsExpansionEnabled(isDeviceProvisioned()
                && (mUserSetup || mUserSwitcherController == null
                && (mUserSetup || mUserSwitcherController == null
                        || !mUserSwitcherController.isSimpleUserSwitcher())
                        || !mUserSwitcherController.isSimpleUserSwitcher())
                && ((mDisabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0)
                && ((mDisabled2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) == 0)
                && ((mDisabled2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) == 0)
                && !mDozing
                && !mDozing
                && !ONLY_CORE_APPS);
                && !ONLY_CORE_APPS);
@@ -2533,6 +2535,8 @@ public class StatusBar extends SystemUI implements DemoMode,
        flagdbg.append(0 != ((diff2  & StatusBarManager.DISABLE2_QUICK_SETTINGS))       ? '!' : ' ');
        flagdbg.append(0 != ((diff2  & StatusBarManager.DISABLE2_QUICK_SETTINGS))       ? '!' : ' ');
        flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_SYSTEM_ICONS))         ? 'I' : 'i');
        flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_SYSTEM_ICONS))         ? 'I' : 'i');
        flagdbg.append(0 != ((diff2  & StatusBarManager.DISABLE2_SYSTEM_ICONS))         ? '!' : ' ');
        flagdbg.append(0 != ((diff2  & StatusBarManager.DISABLE2_SYSTEM_ICONS))         ? '!' : ' ');
        flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE))   ? 'N' : 'n');
        flagdbg.append(0 != ((diff2  & StatusBarManager.DISABLE2_NOTIFICATION_SHADE))   ? '!' : ' ');
        flagdbg.append('>');
        flagdbg.append('>');
        Log.d(TAG, flagdbg.toString());
        Log.d(TAG, flagdbg.toString());


@@ -2559,6 +2563,13 @@ public class StatusBar extends SystemUI implements DemoMode,
        if ((diff2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) != 0) {
        if ((diff2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) != 0) {
            updateQsExpansionEnabled();
            updateQsExpansionEnabled();
        }
        }

        if ((diff2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
            updateQsExpansionEnabled();
            if ((state1 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
                animateCollapsePanels();
            }
        }
    }
    }


    /**
    /**
@@ -2915,7 +2926,9 @@ public class StatusBar extends SystemUI implements DemoMode,
    }
    }


    boolean panelsEnabled() {
    boolean panelsEnabled() {
        return (mDisabled1 & StatusBarManager.DISABLE_EXPAND) == 0 && !ONLY_CORE_APPS;
        return (mDisabled1 & StatusBarManager.DISABLE_EXPAND) == 0
                && (mDisabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0
                && !ONLY_CORE_APPS;
    }
    }


    void makeExpandedVisible(boolean force) {
    void makeExpandedVisible(boolean force) {
@@ -4844,6 +4857,10 @@ public class StatusBar extends SystemUI implements DemoMode,
     * @param expandView The view to expand after going to the shade.
     * @param expandView The view to expand after going to the shade.
     */
     */
    public void goToLockedShade(View expandView) {
    public void goToLockedShade(View expandView) {
        if ((mDisabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
            return;
        }

        int userId = mCurrentUserId;
        int userId = mCurrentUserId;
        ExpandableNotificationRow row = null;
        ExpandableNotificationRow row = null;
        if (expandView instanceof ExpandableNotificationRow) {
        if (expandView instanceof ExpandableNotificationRow) {
@@ -5732,6 +5749,11 @@ public class StatusBar extends SystemUI implements DemoMode,
        }
        }


        private boolean handleRemoteInput(View view, PendingIntent pendingIntent) {
        private boolean handleRemoteInput(View view, PendingIntent pendingIntent) {
            if ((mDisabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
                // Skip remote input as doing so will expand the notification shade.
                return true;
            }

            Object tag = view.getTag(com.android.internal.R.id.remote_input_tag);
            Object tag = view.getTag(com.android.internal.R.id.remote_input_tag);
            RemoteInput[] inputs = null;
            RemoteInput[] inputs = null;
            if (tag instanceof RemoteInput[]) {
            if (tag instanceof RemoteInput[]) {
+27 −6
Original line number Original line Diff line number Diff line
@@ -34,8 +34,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.app.Notification;
import android.app.Notification;
import android.app.StatusBarManager;
import android.app.trust.TrustManager;
import android.app.trust.TrustManager;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintManager;
import android.metrics.LogMaker;
import android.metrics.LogMaker;
import android.os.Binder;
import android.os.Binder;
@@ -50,21 +50,17 @@ import android.service.notification.StatusBarNotification;
import android.support.test.filters.SmallTest;
import android.support.test.filters.SmallTest;
import android.support.test.metricshelper.MetricsAsserts;
import android.support.test.metricshelper.MetricsAsserts;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.testing.LayoutInflaterBuilder;
import android.testing.TestableLooper;
import android.testing.TestableLooper;
import android.testing.TestableLooper.MessageHandler;
import android.testing.TestableLooper.MessageHandler;
import android.testing.TestableLooper.RunWithLooper;
import android.testing.TestableLooper.RunWithLooper;
import android.util.DisplayMetrics;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;


import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.testing.FakeMetricsLogger;
import com.android.internal.logging.testing.FakeMetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.keyguard.KeyguardHostView.OnDismissAction;
import com.android.keyguard.KeyguardHostView.OnDismissAction;
import com.android.keyguard.KeyguardStatusView;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.assist.AssistManager;
@@ -76,7 +72,6 @@ import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
@@ -495,6 +490,28 @@ public class StatusBarTest extends SysuiTestCase {
        TestableLooper.get(this).processAllMessages();
        TestableLooper.get(this).processAllMessages();
    }
    }


    @Test
    public void testDisableExpandStatusBar() {
        mStatusBar.setBarStateForTest(StatusBarState.SHADE);
        mStatusBar.setUserSetupForTest(true);
        when(mStatusBar.isDeviceProvisioned()).thenReturn(true);

        mStatusBar.disable(StatusBarManager.DISABLE_NONE,
                StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
        verify(mNotificationPanelView).setQsExpansionEnabled(false);
        mStatusBar.animateExpandNotificationsPanel();
        verify(mNotificationPanelView, never()).expand(anyBoolean());
        mStatusBar.animateExpandSettingsPanel(null);
        verify(mNotificationPanelView, never()).expand(anyBoolean());

        mStatusBar.disable(StatusBarManager.DISABLE_NONE, StatusBarManager.DISABLE2_NONE, false);
        verify(mNotificationPanelView).setQsExpansionEnabled(true);
        mStatusBar.animateExpandNotificationsPanel();
        verify(mNotificationPanelView).expand(anyBoolean());
        mStatusBar.animateExpandSettingsPanel(null);
        verify(mNotificationPanelView).expand(anyBoolean());
    }

    @Test
    @Test
    public void testDump_DoesNotCrash() {
    public void testDump_DoesNotCrash() {
        mStatusBar.dump(null, new PrintWriter(new ByteArrayOutputStream()), null);
        mStatusBar.dump(null, new PrintWriter(new ByteArrayOutputStream()), null);
@@ -546,5 +563,9 @@ public class StatusBarTest extends SysuiTestCase {
        public void setBarStateForTest(int state) {
        public void setBarStateForTest(int state) {
            mState = state;
            mState = state;
        }
        }

        public void setUserSetupForTest(boolean userSetup) {
            mUserSetup = userSetup;
        }
    }
    }
}
}
 No newline at end of file
+1 −1
Original line number Original line Diff line number Diff line
@@ -529,7 +529,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
     */
     */
    @Override
    @Override
    public void disable2ForUser(int what, IBinder token, String pkg, int userId) {
    public void disable2ForUser(int what, IBinder token, String pkg, int userId) {
        enforceStatusBar();
        enforceStatusBarService();


        synchronized (mLock) {
        synchronized (mLock) {
            disableLocked(userId, what, token, pkg, 2);
            disableLocked(userId, what, token, pkg, 2);