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:
@@ -90,7 +90,7 @@ public class AppHeaderController {
|
|||||||
if (appHeader != null) {
|
if (appHeader != null) {
|
||||||
mAppHeader = appHeader;
|
mAppHeader = appHeader;
|
||||||
} else {
|
} else {
|
||||||
mAppHeader = LayoutInflater.from(mContext)
|
mAppHeader = LayoutInflater.from(fragment.getContext())
|
||||||
.inflate(R.layout.app_details, null /* root */);
|
.inflate(R.layout.app_details, null /* root */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package com.android.settings.applications;
|
package com.android.settings.applications;
|
||||||
|
|
||||||
|
|
||||||
import android.annotation.IdRes;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -25,12 +24,10 @@ import android.content.Intent;
|
|||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -44,8 +41,8 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.shadows.ShadowApplication;
|
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
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.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class AppHeaderControllerTest {
|
public class AppHeaderControllerTest {
|
||||||
@@ -79,7 +74,8 @@ public class AppHeaderControllerTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mShadowContext = ShadowApplication.getInstance().getApplicationContext();
|
mShadowContext = RuntimeEnvironment.application;
|
||||||
|
when(mFragment.getContext()).thenReturn(mShadowContext);
|
||||||
mLayoutInflater = LayoutInflater.from(mShadowContext);
|
mLayoutInflater = LayoutInflater.from(mShadowContext);
|
||||||
mInfo = new PackageInfo();
|
mInfo = new PackageInfo();
|
||||||
mInfo.versionName = "1234";
|
mInfo.versionName = "1234";
|
||||||
@@ -292,4 +288,12 @@ public class AppHeaderControllerTest {
|
|||||||
assertThat(label.getText()).isEqualTo(
|
assertThat(label.getText()).isEqualTo(
|
||||||
appHeader.getResources().getString(R.string.install_type_instant));
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -83,6 +83,7 @@ public class AppInfoWithHeaderTest {
|
|||||||
|
|
||||||
PreferenceManager mManager;
|
PreferenceManager mManager;
|
||||||
PreferenceScreen mScreen;
|
PreferenceScreen mScreen;
|
||||||
|
Context mShadowContext;
|
||||||
|
|
||||||
public TestFragment() {
|
public TestFragment() {
|
||||||
mPm = mock(PackageManager.class);
|
mPm = mock(PackageManager.class);
|
||||||
@@ -90,10 +91,10 @@ public class AppInfoWithHeaderTest {
|
|||||||
mScreen = mock(PreferenceScreen.class);
|
mScreen = mock(PreferenceScreen.class);
|
||||||
mPackageInfo = new PackageInfo();
|
mPackageInfo = new PackageInfo();
|
||||||
mPackageInfo.applicationInfo = new ApplicationInfo();
|
mPackageInfo.applicationInfo = new ApplicationInfo();
|
||||||
|
mShadowContext = ShadowApplication.getInstance().getApplicationContext();
|
||||||
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
|
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
|
||||||
(InstantAppDataProvider) (info -> false));
|
(InstantAppDataProvider) (info -> false));
|
||||||
when(mManager.getContext())
|
when(mManager.getContext()).thenReturn(mShadowContext);
|
||||||
.thenReturn(ShadowApplication.getInstance().getApplicationContext());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -120,6 +121,11 @@ public class AppInfoWithHeaderTest {
|
|||||||
public PreferenceManager getPreferenceManager() {
|
public PreferenceManager getPreferenceManager() {
|
||||||
return mManager;
|
return mManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Context getContext() {
|
||||||
|
return mShadowContext;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user