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,