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,
