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

Commit e2e59560 authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "Implemented measure to verify edit shortcuts page exists before trying...

Merge "Implemented measure to verify edit shortcuts page exists before trying to navigate to it" into main
parents a0d8e5fb b7312dfd
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import android.annotation.SuppressLint;
import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.graphics.PointF;
import android.graphics.Rect;
@@ -435,7 +437,14 @@ class MenuView extends FrameLayout implements
        }
        mMenuAnimationController.flingMenuThenSpringToEdge(
                getMenuPosition().x, 100f, 0f);
        mContext.startActivity(getIntentForEditScreen());

        Intent intent = getIntentForEditScreen();
        PackageManager packageManager = getContext().getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,
                PackageManager.ResolveInfoFlags.of(PackageManager.MATCH_DEFAULT_ONLY));
        if (!activities.isEmpty()) {
            mContext.startActivity(intent);
        }
    }

    void incrementTexMetricForAllTargets(String metric) {
+29 −0
Original line number Diff line number Diff line
@@ -22,11 +22,15 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.UiModeManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Rect;
import android.graphics.drawable.GradientDrawable;
import android.platform.test.annotations.EnableFlags;
@@ -54,6 +58,8 @@ import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

import java.util.ArrayList;

/** Tests for {@link MenuView}. */
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@@ -73,6 +79,8 @@ public class MenuViewTest extends SysuiTestCase {
    private AccessibilityManager mAccessibilityManager;

    private SysuiTestableContext mSpyContext;
    @Mock
    private PackageManager mMockPackageManager;

    @Before
    public void setUp() throws Exception {
@@ -82,6 +90,8 @@ public class MenuViewTest extends SysuiTestCase {

        mSpyContext = spy(mContext);
        doNothing().when(mSpyContext).startActivity(any());

        when(mSpyContext.getPackageManager()).thenReturn(mMockPackageManager);
        final SecureSettings secureSettings = TestUtils.mockSecureSettings();
        final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
                secureSettings);
@@ -181,10 +191,19 @@ public class MenuViewTest extends SysuiTestCase {
    @Test
    @EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
    public void gotoEditScreen_sendsIntent() {
        mockActivityQuery(true);
        mMenuView.gotoEditScreen();
        verify(mSpyContext).startActivity(any());
    }

    @Test
    @EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
    public void gotoEditScreen_noResolve_doesNotStart() {
        mockActivityQuery(false);
        mMenuView.gotoEditScreen();
        verify(mSpyContext, never()).startActivity(any());
    }

    private InstantInsetLayerDrawable getMenuViewInsetLayer() {
        return (InstantInsetLayerDrawable) mMenuView.getBackground();
    }
@@ -207,4 +226,14 @@ public class MenuViewTest extends SysuiTestCase {
        mUiModeManager.setNightMode(mNightMode);
        Prefs.putString(mContext, Prefs.Key.ACCESSIBILITY_FLOATING_MENU_POSITION, mLastPosition);
    }

    private void mockActivityQuery(boolean successfulQuery) {
        // Query just needs to return a non-empty set to be successful.
        ArrayList<ResolveInfo> resolveInfos = new ArrayList<>();
        if (successfulQuery) {
            resolveInfos.add(new ResolveInfo());
        }
        when(mMockPackageManager.queryIntentActivities(
                any(), any(PackageManager.ResolveInfoFlags.class))).thenReturn(resolveInfos);
    }
}