Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abba0407 authored by jackqdyulei's avatar jackqdyulei
Browse files

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
parent e39e8350
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 */);
        }
    }
+11 −7
Original line number Diff line number Diff line
@@ -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();
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -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;
        }
    }

}