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

Commit c5e51f03 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Disallow VoiceInteractionService as assist on LowMemDevice"

parents 1f8efc14 b918f226
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.applications.assist;

import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -38,6 +39,8 @@ import com.android.settingslib.widget.CandidateInfo;
import java.util.ArrayList;
import java.util.List;

import androidx.annotation.VisibleForTesting;

public class DefaultAssistPicker extends DefaultAppPickerFragment {

    private static final String TAG = "DefaultAssistPicker";
@@ -45,9 +48,12 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
            new Intent(VoiceInteractionService.SERVICE_INTERFACE);
    private static final Intent ASSIST_ACTIVITY_PROBE =
            new Intent(Intent.ACTION_ASSIST);
    private final List<Info> mAvailableAssistants = new ArrayList<>();

    @VisibleForTesting
    final List<Info> mAvailableAssistants = new ArrayList<>();

    private AssistUtils mAssistUtils;
    private ActivityManager mActivityManager;

    @Override
    public int getMetricsCategory() {
@@ -63,6 +69,7 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
    public void onAttach(Context context) {
        super.onAttach(context);
        mAssistUtils = new AssistUtils(context);
        mActivityManager = context.getSystemService(ActivityManager.class);
    }

    @Override
@@ -132,7 +139,11 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
        return mAssistUtils.getAssistComponentForUser(mUserId);
    }

    private void addAssistServices() {
    @VisibleForTesting
    void addAssistServices() {
        if (mActivityManager.isLowRamDevice()) {
            return;
        }
        final List<ResolveInfo> services = mPm.queryIntentServices(
                ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA);
        for (ResolveInfo resolveInfo : services) {
+14 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;

import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.provider.Settings;
@@ -31,6 +32,8 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
import org.robolectric.util.ReflectionHelpers;

import java.util.ArrayList;
@@ -48,10 +51,12 @@ public class DefaultAssistPickerTest {

    private Context mContext;
    private DefaultAssistPicker mPicker;
    private ShadowActivityManager mShadowActivityManager;

    @Before
    public void setUp() {
        mContext = RuntimeEnvironment.application;
        mShadowActivityManager = Shadow.extract(mContext.getSystemService(ActivityManager.class));
        mPicker = spy(new DefaultAssistPicker());
        mPicker.onAttach(mContext);
        doReturn(mContext).when(mPicker).getContext();
@@ -71,7 +76,7 @@ public class DefaultAssistPickerTest {
    }

    @Test
    public void setDefaultAppKey_noAvaialbleAssit_shouldClearDefaultAssist() {
    public void setDefaultAppKey_noAvailableAssist_shouldClearDefaultAssist() {
        final List<DefaultAssistPicker.Info> assistants = new ArrayList<>();
        ReflectionHelpers.setField(mPicker, "mAvailableAssistants", assistants);
        mPicker.setDefaultKey(sTestAssist.flattenToString());
@@ -94,4 +99,12 @@ public class DefaultAssistPickerTest {
                .isEmpty();
        assertThat(mPicker.getDefaultKey()).isNull();
    }

    @Test
    public void addAssistService_lowRamDevice_shouldDoNothing() {
        mShadowActivityManager.setIsLowRamDevice(true);
        mPicker.addAssistServices();

        assertThat(mPicker.mAvailableAssistants).hasSize(0);
    }
}