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;
|
package com.android.settings.deviceinfo.firmwareversion;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
|
|
||||||
@@ -29,6 +34,9 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon
|
|||||||
|
|
||||||
private static final String TAG = "MainlineModuleControl";
|
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 final PackageManager mPackageManager;
|
||||||
|
|
||||||
private String mModuleVersion;
|
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
|
@Override
|
||||||
public CharSequence getSummary() {
|
public CharSequence getSummary() {
|
||||||
return mModuleVersion;
|
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.AVAILABLE;
|
||||||
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
|
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;
|
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.Context;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -48,11 +52,13 @@ public class MainlineModuleVersionPreferenceControllerTest {
|
|||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private Preference mPreference;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
|
mPreference = new Preference(mContext);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
|
||||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MAINLINE_MODULE, true);
|
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MAINLINE_MODULE, true);
|
||||||
@@ -82,7 +88,6 @@ public class MainlineModuleVersionPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_noMainlineModulePackageInfo_unavailable() throws Exception {
|
public void getAvailabilityStatus_noMainlineModulePackageInfo_unavailable() throws Exception {
|
||||||
|
|
||||||
final String provider = "test.provider";
|
final String provider = "test.provider";
|
||||||
when(mContext.getString(
|
when(mContext.getString(
|
||||||
com.android.internal.R.string.config_defaultModuleMetadataProvider))
|
com.android.internal.R.string.config_defaultModuleMetadataProvider))
|
||||||
@@ -98,6 +103,43 @@ public class MainlineModuleVersionPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_hasMainlineModulePackageInfo_available() throws Exception {
|
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 provider = "test.provider";
|
||||||
final String version = "test version 123";
|
final String version = "test version 123";
|
||||||
final PackageInfo info = new PackageInfo();
|
final PackageInfo info = new PackageInfo();
|
||||||
@@ -106,11 +148,5 @@ public class MainlineModuleVersionPreferenceControllerTest {
|
|||||||
com.android.internal.R.string.config_defaultModuleMetadataProvider))
|
com.android.internal.R.string.config_defaultModuleMetadataProvider))
|
||||||
.thenReturn(provider);
|
.thenReturn(provider);
|
||||||
when(mPackageManager.getPackageInfo(eq(provider), anyInt())).thenReturn(info);
|
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