Deep link to detail UI when mainline module version is clicked.
Fixes: 129287281 Test: robotests Change-Id: I875cf39936dd8cc656aba9e30dc03c882ee13d4a
This commit is contained in:
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user