diff --git a/src/com/android/settings/applications/assist/DefaultAssistPicker.java b/src/com/android/settings/applications/assist/DefaultAssistPicker.java index 20428d72f48..f1b32691b22 100644 --- a/src/com/android/settings/applications/assist/DefaultAssistPicker.java +++ b/src/com/android/settings/applications/assist/DefaultAssistPicker.java @@ -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 mAvailableAssistants = new ArrayList<>(); + + @VisibleForTesting + final List 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 services = mPm.queryIntentServices( ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA); for (ResolveInfo resolveInfo : services) { diff --git a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPickerTest.java b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPickerTest.java index 0ccba4d6ad2..8fcb31629e2 100644 --- a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPickerTest.java +++ b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPickerTest.java @@ -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 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); + } }