Disable suggestion on low memory devices
Change-Id: I9d22170845661fc8b48b116c9b09f758926c096f Fix: 63157777 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -94,9 +94,11 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
|
||||
mConditionManager = ConditionManager.get(activity, false);
|
||||
getLifecycle().addObserver(mConditionManager);
|
||||
if (mSuggestionFeatureProvider.isSuggestionEnabled(activity)) {
|
||||
mSuggestionParser = new SuggestionParser(activity,
|
||||
mSuggestionFeatureProvider.getSharedPrefs(activity), R.xml.suggestion_ordering);
|
||||
mSuggestionsChecks = new SuggestionsChecks(getContext());
|
||||
}
|
||||
if (DEBUG_TIMING) {
|
||||
Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
|
||||
+ " ms");
|
||||
@@ -206,12 +208,17 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
|
||||
@VisibleForTesting
|
||||
void rebuildUI() {
|
||||
if (!mSuggestionFeatureProvider.isSuggestionEnabled(getContext())) {
|
||||
Log.d(TAG, "Suggestion feature is disabled, skipping suggestion entirely");
|
||||
updateCategoryAndSuggestion(null /* tiles */);
|
||||
} else {
|
||||
new SuggestionLoader().execute();
|
||||
// Set categories on their own if loading suggestions takes too long.
|
||||
mHandler.postDelayed(() -> {
|
||||
updateCategoryAndSuggestion(null /* tiles */);
|
||||
}, MAX_WAIT_MILLIS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCategoriesChanged() {
|
||||
|
@@ -29,6 +29,11 @@ import java.util.List;
|
||||
/** Interface should be implemented if you have added new suggestions */
|
||||
public interface SuggestionFeatureProvider {
|
||||
|
||||
/**
|
||||
* Whether or not the whole suggestion feature is enabled.
|
||||
*/
|
||||
boolean isSuggestionEnabled(Context context);
|
||||
|
||||
/**
|
||||
* Returns true if smart suggestion should be used instead of xml based SuggestionParser.
|
||||
*/
|
||||
|
@@ -16,12 +16,12 @@
|
||||
|
||||
package com.android.settings.dashboard.suggestions;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
@@ -66,6 +66,13 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private final AmbientDisplayConfiguration mAmbientDisplayConfig;
|
||||
|
||||
@Override
|
||||
public boolean isSuggestionEnabled(Context context) {
|
||||
final ActivityManager am =
|
||||
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
||||
return !am.isLowRamDevice();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSmartSuggestionEnabled(Context context) {
|
||||
return false;
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.dashboard.suggestions;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -25,8 +26,8 @@ import android.provider.Settings.Secure;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings.AmbientDisplaySuggestionActivity;
|
||||
import com.android.settings.Settings.AmbientDisplayPickupSuggestionActivity;
|
||||
import com.android.settings.Settings.AmbientDisplaySuggestionActivity;
|
||||
import com.android.settings.Settings.DoubleTapPowerSuggestionActivity;
|
||||
import com.android.settings.Settings.DoubleTwistSuggestionActivity;
|
||||
import com.android.settings.Settings.NightDisplaySuggestionActivity;
|
||||
@@ -53,7 +54,6 @@ import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
@@ -82,6 +82,8 @@ public class SuggestionFeatureProviderImplTest {
|
||||
private SuggestionParser mSuggestionParser;
|
||||
@Mock
|
||||
private Tile mSuggestion;
|
||||
@Mock
|
||||
private ActivityManager mActivityManager;
|
||||
|
||||
private FakeFeatureFactory mFactory;
|
||||
private SuggestionFeatureProviderImpl mProvider;
|
||||
@@ -92,6 +94,8 @@ public class SuggestionFeatureProviderImplTest {
|
||||
FakeFeatureFactory.setupForTest(mContext);
|
||||
mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
|
||||
when(mContext.getApplicationContext()).thenReturn(RuntimeEnvironment.application);
|
||||
when(mContext.getSystemService(Context.ACTIVITY_SERVICE)).thenReturn(mActivityManager);
|
||||
when(mActivityManager.isLowRamDevice()).thenReturn(false);
|
||||
mSuggestion.intent = new Intent().setClassName("pkg", "cls");
|
||||
mSuggestion.category = "category";
|
||||
|
||||
@@ -241,6 +245,20 @@ public class SuggestionFeatureProviderImplTest {
|
||||
SwipeToNotificationSuggestionActivity.class))).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSuggestionEnabled_isLowMemoryDevice_shouldReturnFalse() {
|
||||
when(mActivityManager.isLowRamDevice()).thenReturn(true);
|
||||
|
||||
assertThat(mProvider.isSuggestionEnabled(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSuggestionEnabled_isNotLowMemoryDevice_shouldReturnTrue() {
|
||||
when(mActivityManager.isLowRamDevice()).thenReturn(false);
|
||||
|
||||
assertThat(mProvider.isSuggestionEnabled(mContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dismissSuggestion_noParserOrSuggestion_noop() {
|
||||
mProvider.dismissSuggestion(mContext, null, null);
|
||||
|
Reference in New Issue
Block a user