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

Commit f5afb9d9 authored by Josh's avatar Josh
Browse files

updated status bar click response

Before now users could click anywhere on the status bar to invoke shade,
this was implemented in this CL: ag/726403.
Now, However, shade should only be invoked if users click on system icons on the
right end of the status bar which has a hover state to indicate a
clickable area.

Test: atest PhoneStatusBarViewControllerTest
Flag: NA
Fixes: 299087379

Change-Id: I5f8e2940467123e3ebb60792987447db21c1d97a
parent 58404632
Loading
Loading
Loading
Loading
+4 −14
Original line number Diff line number Diff line
@@ -71,7 +71,6 @@ import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.MathUtils;
import android.view.HapticFeedbackConstants;
import android.view.InputDevice;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.VelocityTracker;
@@ -5057,19 +5056,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
                return false;
            }

            final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(
                    mTrackpadGestureFeaturesEnabled, event) || isTrackpadThreeFingerSwipe(
                    mTrackpadGestureFeaturesEnabled, event);

            // On expanding, single mouse click expands the panel instead of dragging.
            if (isFullyCollapsed() && (event.isFromSource(InputDevice.SOURCE_MOUSE)
                    && !isTrackpadTwoOrThreeFingerSwipe)) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    expand(true /* animate */);
                }
                return true;
            }

            /*
             * We capture touch events here and update the expand height here in case according to
             * the users fingers. This also handles multi-touch.
@@ -5090,6 +5076,10 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
                mIgnoreXTouchSlop = true;
            }

            final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(
                    mTrackpadGestureFeaturesEnabled, event) || isTrackpadThreeFingerSwipe(
                    mTrackpadGestureFeaturesEnabled, event);

            switch (event.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                    if (QuickStepContract.ALLOW_BACK_GESTURE_IN_SHADE && mAnimateBack) {
+1 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ private constructor(
        statusContainer.setOnHoverListener(
            statusOverlayHoverListenerFactory.createDarkAwareListener(statusContainer)
        )
        statusContainer.setOnClickListener { shadeViewController.expand(/* animate= */true) }

        progressProvider?.setReadyToHandleTransition(true)
        configurationController.addCallback(configurationListener)
+26 −4
Original line number Diff line number Diff line
@@ -22,15 +22,16 @@ import android.app.StatusBarManager.WINDOW_STATE_SHOWING
import android.app.StatusBarManager.WINDOW_STATUS_BAR
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewTreeObserver
import android.view.ViewTreeObserver.OnPreDrawListener
import android.widget.FrameLayout
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.systemui.res.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.FakeSceneContainerFlags
import com.android.systemui.scene.ui.view.WindowRootView
import com.android.systemui.shade.ShadeControllerImpl
@@ -48,8 +49,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.view.ViewUtil
import com.google.common.truth.Truth.assertThat
import java.util.Optional
import javax.inject.Provider
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentCaptor
@@ -60,6 +59,8 @@ import org.mockito.Mockito.spy
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import java.util.Optional
import javax.inject.Provider

@SmallTest
class PhoneStatusBarViewControllerTest : SysuiTestCase() {
@@ -231,6 +232,27 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
        verify(centralSurfacesImpl).setInteracting(any(), any())
    }

    @Test
    fun shadeIsExpandedOnStatusIconClick() {
        val view = createViewMock()
        InstrumentationRegistry.getInstrumentation().runOnMainSync {
            controller = createAndInitController(view)
        }
        val statusContainer = view.requireViewById<View>(R.id.system_icons)
        statusContainer.performClick()
        verify(shadeViewController).expand(any())
    }

    @Test
    fun shadeIsNotExpandedOnStatusBarGeneralClick() {
        val view = createViewMock()
        InstrumentationRegistry.getInstrumentation().runOnMainSync {
            controller = createAndInitController(view)
        }
        view.performClick()
        verify(shadeViewController, never()).expand(any())
    }

    private fun getCommandQueueCallback(): CommandQueue.Callbacks {
        val captor = argumentCaptor<CommandQueue.Callbacks>()
        verify(commandQueue).addCallback(captor.capture())