Disallow VoiceInteractionService as assist on LowMemDevice
Bug: 111443156 Test: robotests Change-Id: Ic3413af2b5450c43c4749b7748b676a01209a5ac
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.applications.assist;
|
package com.android.settings.applications.assist;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -38,6 +39,8 @@ import com.android.settingslib.widget.CandidateInfo;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
public class DefaultAssistPicker extends DefaultAppPickerFragment {
|
public class DefaultAssistPicker extends DefaultAppPickerFragment {
|
||||||
|
|
||||||
private static final String TAG = "DefaultAssistPicker";
|
private static final String TAG = "DefaultAssistPicker";
|
||||||
@@ -45,9 +48,12 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
|
|||||||
new Intent(VoiceInteractionService.SERVICE_INTERFACE);
|
new Intent(VoiceInteractionService.SERVICE_INTERFACE);
|
||||||
private static final Intent ASSIST_ACTIVITY_PROBE =
|
private static final Intent ASSIST_ACTIVITY_PROBE =
|
||||||
new Intent(Intent.ACTION_ASSIST);
|
new Intent(Intent.ACTION_ASSIST);
|
||||||
private final List<Info> mAvailableAssistants = new ArrayList<>();
|
|
||||||
|
@VisibleForTesting
|
||||||
|
final List<Info> mAvailableAssistants = new ArrayList<>();
|
||||||
|
|
||||||
private AssistUtils mAssistUtils;
|
private AssistUtils mAssistUtils;
|
||||||
|
private ActivityManager mActivityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
@@ -63,6 +69,7 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
|
|||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
mAssistUtils = new AssistUtils(context);
|
mAssistUtils = new AssistUtils(context);
|
||||||
|
mActivityManager = context.getSystemService(ActivityManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -132,7 +139,11 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment {
|
|||||||
return mAssistUtils.getAssistComponentForUser(mUserId);
|
return mAssistUtils.getAssistComponentForUser(mUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAssistServices() {
|
@VisibleForTesting
|
||||||
|
void addAssistServices() {
|
||||||
|
if (mActivityManager.isLowRamDevice()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final List<ResolveInfo> services = mPm.queryIntentServices(
|
final List<ResolveInfo> services = mPm.queryIntentServices(
|
||||||
ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA);
|
ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA);
|
||||||
for (ResolveInfo resolveInfo : services) {
|
for (ResolveInfo resolveInfo : services) {
|
||||||
|
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -31,6 +32,8 @@ import org.junit.BeforeClass;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.shadow.api.Shadow;
|
||||||
|
import org.robolectric.shadows.ShadowActivityManager;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -48,10 +51,12 @@ public class DefaultAssistPickerTest {
|
|||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private DefaultAssistPicker mPicker;
|
private DefaultAssistPicker mPicker;
|
||||||
|
private ShadowActivityManager mShadowActivityManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
|
mShadowActivityManager = Shadow.extract(mContext.getSystemService(ActivityManager.class));
|
||||||
mPicker = spy(new DefaultAssistPicker());
|
mPicker = spy(new DefaultAssistPicker());
|
||||||
mPicker.onAttach(mContext);
|
mPicker.onAttach(mContext);
|
||||||
doReturn(mContext).when(mPicker).getContext();
|
doReturn(mContext).when(mPicker).getContext();
|
||||||
@@ -71,7 +76,7 @@ public class DefaultAssistPickerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setDefaultAppKey_noAvaialbleAssit_shouldClearDefaultAssist() {
|
public void setDefaultAppKey_noAvailableAssist_shouldClearDefaultAssist() {
|
||||||
final List<DefaultAssistPicker.Info> assistants = new ArrayList<>();
|
final List<DefaultAssistPicker.Info> assistants = new ArrayList<>();
|
||||||
ReflectionHelpers.setField(mPicker, "mAvailableAssistants", assistants);
|
ReflectionHelpers.setField(mPicker, "mAvailableAssistants", assistants);
|
||||||
mPicker.setDefaultKey(sTestAssist.flattenToString());
|
mPicker.setDefaultKey(sTestAssist.flattenToString());
|
||||||
@@ -94,4 +99,12 @@ public class DefaultAssistPickerTest {
|
|||||||
.isEmpty();
|
.isEmpty();
|
||||||
assertThat(mPicker.getDefaultKey()).isNull();
|
assertThat(mPicker.getDefaultKey()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addAssistService_lowRamDevice_shouldDoNothing() {
|
||||||
|
mShadowActivityManager.setIsLowRamDevice(true);
|
||||||
|
mPicker.addAssistServices();
|
||||||
|
|
||||||
|
assertThat(mPicker.mAvailableAssistants).hasSize(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user