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