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
This commit is contained in:
jackqdyulei
2017-03-21 18:30:21 -07:00
parent e39e8350a1
commit abba040727
3 changed files with 20 additions and 10 deletions

View File

@@ -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();
}
}