Use fragment context in AppHeaderController

The application context doesn't have the correct theme, use
fragment context instead

Fix: 36489386
Fix: 36516826
Test: RunSettingsRoboTests & Screenshot
Change-Id: I8285584220796264d85ea570df5b1df6ebeb275f
(cherry picked from commit abba040727cb58e85108dca7dfb8988c1fd63cf2)
diff --git a/src/com/android/settings/applications/AppHeaderController.java b/src/com/android/settings/applications/AppHeaderController.java
index 45b8960..0bc9f8f 100644
--- a/src/com/android/settings/applications/AppHeaderController.java
+++ b/src/com/android/settings/applications/AppHeaderController.java
@@ -90,7 +90,7 @@
         if (appHeader != null) {
             mAppHeader = appHeader;
         } else {
-            mAppHeader = LayoutInflater.from(mContext)
+            mAppHeader = LayoutInflater.from(fragment.getContext())
                     .inflate(R.layout.app_details, null /* root */);
         }
     }
diff --git a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java
index bd55fd0..79f452a 100644
--- a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java
@@ -17,7 +17,6 @@
 package com.android.settings.applications;
 
 
-import android.annotation.IdRes;
 import android.app.Activity;
 import android.app.Fragment;
 import android.content.Context;
@@ -25,12 +24,10 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
 import android.os.UserHandle;
 import android.support.v7.preference.Preference;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -44,8 +41,8 @@
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
@@ -55,8 +52,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import java.util.EnumSet;
-
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class AppHeaderControllerTest {
@@ -79,7 +74,8 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mShadowContext = ShadowApplication.getInstance().getApplicationContext();
+        mShadowContext = RuntimeEnvironment.application;
+        when(mFragment.getContext()).thenReturn(mShadowContext);
         mLayoutInflater = LayoutInflater.from(mShadowContext);
         mInfo = new PackageInfo();
         mInfo.versionName = "1234";
@@ -292,4 +288,12 @@
         assertThat(label.getText()).isEqualTo(
                 appHeader.getResources().getString(R.string.install_type_instant));
     }
+
+    @Test
+    public void initAppHeaderController_appHeaderNull_useFragmentContext() {
+        mController = new AppHeaderController(mContext, mFragment, null);
+
+        // Fragment.getContext() is invoked to inflate the view
+        verify(mFragment).getContext();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java
index a717306..68c153c 100644
--- a/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java
@@ -83,6 +83,7 @@
 
         PreferenceManager mManager;
         PreferenceScreen mScreen;
+        Context mShadowContext;
 
         public TestFragment() {
             mPm = mock(PackageManager.class);
@@ -90,10 +91,10 @@
             mScreen = mock(PreferenceScreen.class);
             mPackageInfo = new PackageInfo();
             mPackageInfo.applicationInfo = new ApplicationInfo();
+            mShadowContext = ShadowApplication.getInstance().getApplicationContext();
             ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
                                              (InstantAppDataProvider) (info -> false));
-            when(mManager.getContext())
-                    .thenReturn(ShadowApplication.getInstance().getApplicationContext());
+            when(mManager.getContext()).thenReturn(mShadowContext);
         }
 
         @Override
@@ -120,6 +121,11 @@
         public PreferenceManager getPreferenceManager() {
             return mManager;
         }
+
+        @Override
+        public Context getContext() {
+            return mShadowContext;
+        }
     }
 
 }