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

Commit c809b034 authored by Olivier St-Onge's avatar Olivier St-Onge Committed by Android (Google) Code Review
Browse files

Merge "Migrate tile click handlers from using View to Expandable." into main

parents ed3993e1 0acf092a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@

package com.android.systemui.qs.pipeline.domain.interactor

import android.view.View
import com.android.internal.logging.InstanceId
import com.android.systemui.animation.Expandable
import com.android.systemui.plugins.qs.QSTile

class FakeQSTile(
@@ -56,11 +56,11 @@ class FakeQSTile(
        callbacks.clear()
    }

    override fun click(view: View?) {}
    override fun click(expandable: Expandable?) {}

    override fun secondaryClick(view: View?) {}
    override fun secondaryClick(expandable: Expandable?) {}

    override fun longClick(view: View?) {}
    override fun longClick(expandable: Expandable?) {}

    override fun userSwitch(currentUser: Int) {
        user = currentUser
+16 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.tiles.impl.fontscaling.domain.interactor

import android.content.Context
import android.provider.Settings
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -23,6 +24,8 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.fontscaling.FontScalingDialogDelegate
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.animation.LaunchableView
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
@@ -36,7 +39,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth
import kotlinx.coroutines.test.runTest
@@ -63,6 +65,8 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
    @Mock private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator
    @Mock private lateinit var dialog: SystemUIDialog
    @Mock private lateinit var activityStarter: ActivityStarter
    @Mock private lateinit var expandable: Expandable
    @Mock private lateinit var controller: DialogTransitionAnimator.Controller

    @Captor private lateinit var argumentCaptor: ArgumentCaptor<Runnable>

@@ -73,6 +77,9 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
        dialog = mock<SystemUIDialog>()
        fontScalingDialogDelegate =
            mock<FontScalingDialogDelegate> { whenever(createDialog()).thenReturn(dialog) }
        controller = mock<DialogTransitionAnimator.Controller>()
        expandable =
            mock<Expandable> { whenever(dialogTransitionController(any())).thenReturn(controller) }
        argumentCaptor = ArgumentCaptor.forClass(Runnable::class.java)

        underTest =
@@ -90,9 +97,8 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
    fun clickTile_screenUnlocked_showDialogAnimationFromView() =
        kosmos.testScope.runTest {
            keyguardStateController.isShowing = false
            val testView = View(context)

            underTest.handleInput(click(FontScalingTileModel, view = testView))
            underTest.handleInput(click(FontScalingTileModel, expandable = expandable))

            verify(activityStarter)
                .executeRunnableDismissingKeyguard(
@@ -103,17 +109,15 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
                    eq(false)
                )
            argumentCaptor.value.run()
            verify(mDialogTransitionAnimator)
                .showFromView(any(), eq(testView), nullable(), anyBoolean())
            verify(mDialogTransitionAnimator).show(any(), any(), anyBoolean())
        }

    @Test
    fun clickTile_onLockScreen_neverShowDialogAnimationFromView_butShowsDialog() =
        kosmos.testScope.runTest {
            keyguardStateController.isShowing = true
            val testView = View(context)

            underTest.handleInput(click(FontScalingTileModel, view = testView))
            underTest.handleInput(click(FontScalingTileModel, expandable = expandable))

            verify(activityStarter)
                .executeRunnableDismissingKeyguard(
@@ -124,8 +128,7 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
                    eq(false)
                )
            argumentCaptor.value.run()
            verify(mDialogTransitionAnimator, never())
                .showFromView(any(), eq(testView), nullable(), anyBoolean())
            verify(mDialogTransitionAnimator, never()).show(any(), any(), anyBoolean())
            verify(dialog).show()
        }

@@ -140,4 +143,8 @@ class FontScalingUserActionInteractorTest : SysuiTestCase() {
            val expectedIntentAction = Settings.ACTION_TEXT_READING_SETTINGS
            Truth.assertThat(actualIntentAction).isEqualTo(expectedIntentAction)
        }

    private class FontScalingTileTestView(context: Context) : View(context), LaunchableView {
        override fun setShouldBlockVisibilityChanges(block: Boolean) {}
    }
}
+9 −5
Original line number Diff line number Diff line
@@ -18,12 +18,11 @@ package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor

import android.app.Dialog
import android.os.UserHandle
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.dialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.flags.featureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
@@ -138,12 +137,17 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() {
     */
    @Test
    fun handleClickFromView_whenDoingNothing_whenKeyguardNotShowing_showDialogFromView() = runTest {
        val view = mock<View>()
        val expandable = mock<Expandable>()
        val controller = mock<DialogTransitionAnimator.Controller>()
        whenever(expandable.dialogTransitionController(any())).thenReturn(controller)

        kosmos.fakeKeyguardRepository.setKeyguardShowing(false)

        val recordingModel = ScreenRecordTileModel.DoingNothing

        underTest.handleInput(QSTileInputTestKtx.click(recordingModel, UserHandle.CURRENT, view))
        underTest.handleInput(
            QSTileInputTestKtx.click(recordingModel, UserHandle.CURRENT, expandable)
        )
        val onStartRecordingClickedCaptor = argumentCaptor<Runnable>()
        verify(recordingController)
            .createScreenRecordDialog(
@@ -158,6 +162,6 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() {
        verify(keyguardDismissUtil)
            .executeWhenUnlocked(onDismissActionCaptor.capture(), eq(false), eq(true))
        onDismissActionCaptor.value.onDismiss()
        verify(dialogTransitionAnimator).showFromView(eq(dialog), eq(view), any(), eq(true))
        verify(dialogTransitionAnimator).show(eq(dialog), eq(controller), eq(true))
    }
}
+7 −7
Original line number Diff line number Diff line
@@ -21,11 +21,11 @@ import android.graphics.drawable.Drawable;
import android.metrics.LogMaker;
import android.service.quicksettings.Tile;
import android.text.TextUtils;
import android.view.View;

import androidx.annotation.Nullable;

import com.android.internal.logging.InstanceId;
import com.android.systemui.animation.Expandable;
import com.android.systemui.plugins.annotations.DependsOn;
import com.android.systemui.plugins.annotations.ProvidesInterface;
import com.android.systemui.plugins.qs.QSTile.Callback;
@@ -58,23 +58,23 @@ public interface QSTile {
    /**
     * The tile was clicked.
     *
     * @param view The view that was clicked.
     * @param expandable {@link Expandable} that was clicked.
     */
    void click(@Nullable View view);
    void click(@Nullable Expandable expandable);

    /**
     * The tile secondary click was triggered.
     *
     * @param view The view that was clicked.
     * @param expandable {@link Expandable} that was clicked.
     */
    void secondaryClick(@Nullable View view);
    void secondaryClick(@Nullable Expandable expandable);

    /**
     * The tile was long clicked.
     *
     * @param view The view that was clicked.
     * @param expandable {@link Expandable} that was clicked.
     */
    void longClick(@Nullable View view);
    void longClick(@Nullable Expandable expandable);

    void userSwitch(int currentUser);

+12 −8
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.accessibility.hearingaid;

import android.bluetooth.BluetoothDevice;
import android.util.Log;
import android.view.View;

import androidx.annotation.Nullable;

@@ -26,6 +25,7 @@ import com.android.internal.jank.InteractionJankMonitor;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.animation.DialogCuj;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.animation.Expandable;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.phone.SystemUIDialog;

@@ -58,9 +58,9 @@ public class HearingDevicesDialogManager {
    /**
     * Shows the dialog.
     *
     * @param view The view from which the dialog is shown.
     * @param expandable {@link Expandable} from which the dialog is shown.
     */
    public void showDialog(View view) {
    public void showDialog(Expandable expandable) {
        if (mDialog != null) {
            if (DEBUG) {
                Log.d(TAG, "HearingDevicesDialog already showing. Destroy it first.");
@@ -70,13 +70,17 @@ public class HearingDevicesDialogManager {

        mDialog = mDialogFactory.create(!isAnyBondedHearingDevice()).createDialog();

        if (view != null) {
            mDialogTransitionAnimator.showFromView(mDialog, view,
        if (expandable != null) {
            DialogTransitionAnimator.Controller controller = expandable.dialogTransitionController(
                    new DialogCuj(InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
                            INTERACTION_JANK_TAG), /* animateBackgroundBoundsChange= */ true);
        } else {
            mDialog.show();
                            INTERACTION_JANK_TAG));
            if (controller != null) {
                mDialogTransitionAnimator.show(mDialog,
                        controller, /* animateBackgroundBoundsChange= */ true);
                return;
            }
        }
        mDialog.show();
    }

    private void destroyDialog() {
Loading