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

Commit b93e55f0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Deep link to detail UI when mainline module version is clicked."

parents 5eeb6ae6 5911fe61
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -17,11 +17,16 @@
package com.android.settings.deviceinfo.firmwareversion;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.FeatureFlags;

@@ -29,6 +34,9 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon

    private static final String TAG = "MainlineModuleControl";

    @VisibleForTesting
    static final Intent MODULE_UPDATE_INTENT =
            new Intent("android.settings.MODULE_UPDATE_SETTINGS");
    private final PackageManager mPackageManager;

    private String mModuleVersion;
@@ -65,6 +73,20 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon
        }
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);

        // Confirm MODULE_UPDATE_INTENT is handleable, and set it to Preference.
        final ResolveInfo resolved =
                mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0 /* flags */);
        if (resolved != null) {
            preference.setIntent(MODULE_UPDATE_INTENT);
        } else {
            preference.setIntent(null);
        }
    }

    @Override
    public CharSequence getSummary() {
        return mModuleVersion;
+43 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.deviceinfo.firmwareversion;

import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
import static com.android.settings.deviceinfo.firmwareversion.MainlineModuleVersionPreferenceController.MODULE_UPDATE_INTENT;

import static com.google.common.truth.Truth.assertThat;

@@ -29,8 +30,11 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.util.FeatureFlagUtils;

import androidx.preference.Preference;

import com.android.settings.core.FeatureFlags;

import org.junit.Before;
@@ -48,11 +52,13 @@ public class MainlineModuleVersionPreferenceControllerTest {
    private PackageManager mPackageManager;

    private Context mContext;
    private Preference mPreference;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mPreference = new Preference(mContext);
        when(mContext.getPackageManager()).thenReturn(mPackageManager);

        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MAINLINE_MODULE, true);
@@ -82,7 +88,6 @@ public class MainlineModuleVersionPreferenceControllerTest {

    @Test
    public void getAvailabilityStatus_noMainlineModulePackageInfo_unavailable() throws Exception {

        final String provider = "test.provider";
        when(mContext.getString(
                com.android.internal.R.string.config_defaultModuleMetadataProvider))
@@ -98,6 +103,43 @@ public class MainlineModuleVersionPreferenceControllerTest {

    @Test
    public void getAvailabilityStatus_hasMainlineModulePackageInfo_available() throws Exception {
        setupModulePackage();

        final MainlineModuleVersionPreferenceController controller =
                new MainlineModuleVersionPreferenceController(mContext, "key");

        assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

    @Test
    public void updateStates_canHandleIntent_setIntentToPreference() throws Exception {
        setupModulePackage();
        when(mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0))
                .thenReturn(new ResolveInfo());

        final MainlineModuleVersionPreferenceController controller =
                new MainlineModuleVersionPreferenceController(mContext, "key");

        controller.updateState(mPreference);

        assertThat(mPreference.getIntent()).isEqualTo(MODULE_UPDATE_INTENT);
    }

    @Test
    public void updateStates_cannotHandleIntent_setNullToPreference() throws Exception {
        setupModulePackage();
        when(mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0))
                .thenReturn(null);

        final MainlineModuleVersionPreferenceController controller =
                new MainlineModuleVersionPreferenceController(mContext, "key");

        controller.updateState(mPreference);

        assertThat(mPreference.getIntent()).isNull();
    }

    private void setupModulePackage() throws Exception {
        final String provider = "test.provider";
        final String version = "test version 123";
        final PackageInfo info = new PackageInfo();
@@ -106,11 +148,5 @@ public class MainlineModuleVersionPreferenceControllerTest {
                com.android.internal.R.string.config_defaultModuleMetadataProvider))
                .thenReturn(provider);
        when(mPackageManager.getPackageInfo(eq(provider), anyInt())).thenReturn(info);

        final MainlineModuleVersionPreferenceController controller =
                new MainlineModuleVersionPreferenceController(mContext, "key");

        assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

}