Fix a memory leak caused by dashboard freature provider.
In constructor, use app context instead of fragment context
Change-Id: I24fbc457037c1d6854ecf0cb270110d73effb662
Fix: 35292764
Test: RunSettingsRoboTests
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index b5d8a73..08372b0 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -51,13 +51,13 @@
private final CategoryManager mCategoryManager;
public DashboardFeatureProviderImpl(Context context) {
- mContext = context;
+ mContext = context.getApplicationContext();
mCategoryManager = CategoryManager.get(context, getExtraIntentAction());
}
@VisibleForTesting
DashboardFeatureProviderImpl(Context context, CategoryManager categoryManager) {
- mContext = context;
+ mContext = context.getApplicationContext();
mCategoryManager = categoryManager;
}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
index e4a988f..917c336 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -49,6 +49,8 @@
import java.util.ArrayList;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -75,6 +77,11 @@
}
@Test
+ public void shouldHoldAppContext() {
+ assertThat(mImpl.mContext).isEqualTo(mActivity.getApplicationContext());
+ }
+
+ @Test
public void bindPreference_shouldBindAllData() {
final Preference preference = new Preference(
ShadowApplication.getInstance().getApplicationContext());
@@ -191,7 +198,7 @@
ShadowActivity shadowActivity = shadowOf(activity);
assertThat(shadowActivity.getNextStartedActivityForResult().intent.getAction())
- .isEqualTo("TestAction");
+ .isEqualTo("TestAction");
}
@Test
@@ -234,7 +241,8 @@
when(mSpy.isEnabled()).thenReturn(true);
final DashboardCategory category = new DashboardCategory();
category.tiles.add(new Tile());
- when(mCategoryManager.getTilesByCategory(mActivity, CategoryKey.CATEGORY_HOMEPAGE))
+ when(mCategoryManager
+ .getTilesByCategory(any(Context.class), eq(CategoryKey.CATEGORY_HOMEPAGE)))
.thenReturn(category);
assertThat(mSpy.getPreferencesForCategory(mActivity,