diff --git a/src/com/android/settings/applications/AppHeaderController.java b/src/com/android/settings/applications/AppHeaderController.java index 45b8960d613..0bc9f8f9943 100644 --- a/src/com/android/settings/applications/AppHeaderController.java +++ b/src/com/android/settings/applications/AppHeaderController.java @@ -90,7 +90,7 @@ public class AppHeaderController { 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 bd55fd05e8a..79f452a7154 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.Intent; 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.junit.runner.RunWith; 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.mock; 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 @@ public class AppHeaderControllerTest { @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 @@ public class AppHeaderControllerTest { 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 a717306f78c..68c153cb6e4 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 @@ public class AppInfoWithHeaderTest { PreferenceManager mManager; PreferenceScreen mScreen; + Context mShadowContext; public TestFragment() { mPm = mock(PackageManager.class); @@ -90,10 +91,10 @@ public class AppInfoWithHeaderTest { 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 class AppInfoWithHeaderTest { public PreferenceManager getPreferenceManager() { return mManager; } + + @Override + public Context getContext() { + return mShadowContext; + } } }