Merge "Slices feature supports firmware version."
This commit is contained in:
committed by
Android (Google) Code Review
commit
0e6977da39
@@ -9468,7 +9468,7 @@
|
||||
<string name="fingerprint_swipe_for_notifications_suggestion_title">See notifications quickly</string>
|
||||
|
||||
<!-- Title text for the assist gesture [CHAR LIMIT=60] DO NOT TRANSLATE -->
|
||||
<string name="assist_gesture_title" translatable="false"></string>
|
||||
<string name="assist_gesture_title" translatable="false">Assist gesture</string>
|
||||
|
||||
<!-- Switch text for each gesture setting state -->
|
||||
<string name="gesture_setting_on">On</string>
|
||||
|
@@ -26,7 +26,7 @@
|
||||
android:key="phone_number"
|
||||
android:order="0"
|
||||
android:title="@string/status_number"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- SIM status -->
|
||||
<Preference
|
||||
@@ -34,7 +34,7 @@
|
||||
android:order="10"
|
||||
android:title="@string/sim_status_title"
|
||||
settings:keywords="@string/keywords_sim_status"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- Model & hardware -->
|
||||
<Preference
|
||||
@@ -42,7 +42,7 @@
|
||||
android:order="21"
|
||||
android:title="@string/hardware_info"
|
||||
settings:keywords="@string/keywords_model_and_hardware"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- IMEI -->
|
||||
<Preference
|
||||
@@ -50,7 +50,7 @@
|
||||
android:order="22"
|
||||
android:title="@string/status_imei"
|
||||
settings:keywords="@string/keywords_imei_info"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- Android version -->
|
||||
<Preference
|
||||
@@ -58,7 +58,9 @@
|
||||
android:order="32"
|
||||
android:title="@string/firmware_version"
|
||||
settings:keywords="@string/keywords_android_version"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder"
|
||||
settings:controller=
|
||||
"com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController" />
|
||||
|
||||
<!--IP address -->
|
||||
<Preference
|
||||
@@ -66,21 +68,21 @@
|
||||
android:order="34"
|
||||
android:title="@string/wifi_ip_address"
|
||||
android:summary="@string/summary_placeholder"
|
||||
settings:allowDividerAbove="true"/>
|
||||
settings:allowDividerAbove="true" />
|
||||
|
||||
<!-- Wi-Fi MAC address -->
|
||||
<Preference
|
||||
android:key="wifi_mac_address"
|
||||
android:order="35"
|
||||
android:title="@string/status_wifi_mac_address"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- Bluetooth address -->
|
||||
<Preference
|
||||
android:key="bt_address"
|
||||
android:order="36"
|
||||
android:title="@string/status_bt_address"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
|
||||
<!-- Legal information -->
|
||||
@@ -89,14 +91,14 @@
|
||||
android:order="37"
|
||||
android:title="@string/legal_information"
|
||||
android:fragment="com.android.settings.LegalSettings"
|
||||
settings:allowDividerAbove="true"/>
|
||||
settings:allowDividerAbove="true" />
|
||||
|
||||
<!-- Regulatory labels -->
|
||||
<Preference
|
||||
android:key="regulatory_info"
|
||||
android:order="38"
|
||||
android:title="@string/regulatory_labels">
|
||||
<intent android:action="android.settings.SHOW_REGULATORY_INFO"/>
|
||||
<intent android:action="android.settings.SHOW_REGULATORY_INFO" />
|
||||
</Preference>
|
||||
|
||||
<!-- Safety & regulatory manual -->
|
||||
@@ -104,7 +106,7 @@
|
||||
android:key="safety_info"
|
||||
android:order="39"
|
||||
android:title="@string/safety_and_regulatory_info">
|
||||
<intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/>
|
||||
<intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO" />
|
||||
</Preference>
|
||||
|
||||
<!-- Manual -->
|
||||
@@ -112,21 +114,21 @@
|
||||
android:key="manual"
|
||||
android:order="40"
|
||||
android:title="@string/manual">
|
||||
<intent android:action="android.settings.SHOW_MANUAL"/>
|
||||
<intent android:action="android.settings.SHOW_MANUAL" />
|
||||
</Preference>
|
||||
|
||||
<!-- Feedback on the device -->
|
||||
<Preference
|
||||
android:key="device_feedback"
|
||||
android:order="41"
|
||||
android:title="@string/device_feedback"/>
|
||||
android:title="@string/device_feedback" />
|
||||
|
||||
<!-- Device FCC equipment id -->
|
||||
<Preference
|
||||
android:key="fcc_equipment_id"
|
||||
android:order="42"
|
||||
android:title="@string/fcc_equipment_id"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<!-- Build number -->
|
||||
<Preference
|
||||
@@ -134,6 +136,6 @@
|
||||
android:order="43"
|
||||
android:title="@string/build_number"
|
||||
android:summary="@string/summary_placeholder"
|
||||
settings:allowDividerAbove="true"/>
|
||||
settings:allowDividerAbove="true" />
|
||||
|
||||
</PreferenceScreen>
|
@@ -99,11 +99,13 @@
|
||||
|
||||
<!-- Android version -->
|
||||
<Preference
|
||||
android:key="firmware_version"
|
||||
android:key="my_device_firmware_version"
|
||||
android:order="32"
|
||||
android:title="@string/firmware_version"
|
||||
settings:keywords="@string/keywords_android_version"
|
||||
android:summary="@string/summary_placeholder"/>
|
||||
android:summary="@string/summary_placeholder"
|
||||
settings:controller=
|
||||
"com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController" />
|
||||
|
||||
<!--IP address -->
|
||||
<Preference
|
||||
|
@@ -53,6 +53,12 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable {
|
||||
@VisibleForTesting
|
||||
static final int NON_SIM_PREFERENCES_COUNT = 2;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
use(FirmwareVersionPreferenceController.class).setHost(this /*parent*/);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return MetricsEvent.DEVICEINFO;
|
||||
@@ -130,7 +136,6 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable {
|
||||
controllers.add(new SimStatusPreferenceController(context, fragment));
|
||||
controllers.add(new DeviceModelPreferenceController(context, fragment));
|
||||
controllers.add(new ImeiInfoPreferenceController(context, fragment));
|
||||
controllers.add(new FirmwareVersionPreferenceController(context, fragment));
|
||||
controllers.add(new IpAddressPreferenceController(context, lifecycle));
|
||||
controllers.add(new WifiMacAddressPreferenceController(context, lifecycle));
|
||||
controllers.add(new BluetoothAddressPreferenceController(context, lifecycle));
|
||||
|
@@ -63,8 +63,8 @@ import java.util.List;
|
||||
@SearchIndexable
|
||||
public class MyDeviceInfoFragment extends DashboardFragment
|
||||
implements DeviceNamePreferenceController.DeviceNamePreferenceHost {
|
||||
private static final String LOG_TAG = "MyDeviceInfoFragment";
|
||||
|
||||
private static final String LOG_TAG = "MyDeviceInfoFragment";
|
||||
private static final String KEY_MY_DEVICE_INFO_HEADER = "my_device_info_header";
|
||||
private static final String KEY_LEGAL_CONTAINER = "legal_container";
|
||||
|
||||
@@ -79,8 +79,14 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
use(FirmwareVersionPreferenceController.class).setHost(this /*parent*/);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
initHeader();
|
||||
}
|
||||
|
||||
@@ -101,9 +107,7 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
}
|
||||
|
||||
private static List<AbstractPreferenceController> buildPreferenceControllers(
|
||||
Context context,
|
||||
Activity activity,
|
||||
MyDeviceInfoFragment fragment,
|
||||
Context context, Activity activity, MyDeviceInfoFragment fragment,
|
||||
Lifecycle lifecycle) {
|
||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
controllers.add(new EmergencyInfoPreferenceController(context));
|
||||
@@ -120,7 +124,6 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
controllers.add(new SimStatusPreferenceController(context, fragment));
|
||||
controllers.add(new DeviceModelPreferenceController(context, fragment));
|
||||
controllers.add(new ImeiInfoPreferenceController(context, fragment));
|
||||
controllers.add(new FirmwareVersionPreferenceController(context, fragment));
|
||||
controllers.add(new IpAddressPreferenceController(context, lifecycle));
|
||||
controllers.add(new WifiMacAddressPreferenceController(context, lifecycle));
|
||||
controllers.add(new BluetoothAddressPreferenceController(context, lifecycle));
|
||||
@@ -137,7 +140,7 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
final BuildNumberPreferenceController buildNumberPreferenceController =
|
||||
use(BuildNumberPreferenceController.class);
|
||||
use(BuildNumberPreferenceController.class);
|
||||
if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
|
||||
return;
|
||||
}
|
||||
@@ -151,7 +154,7 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
final View appSnippet = headerPreference.findViewById(R.id.entity_header);
|
||||
final Activity context = getActivity();
|
||||
final Bundle bundle = getArguments();
|
||||
EntityHeaderController controller = EntityHeaderController
|
||||
final EntityHeaderController controller = EntityHeaderController
|
||||
.newInstance(context, this, appSnippet)
|
||||
.setRecyclerView(getListView(), getLifecycle())
|
||||
.setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
|
||||
@@ -160,9 +163,10 @@ public class MyDeviceInfoFragment extends DashboardFragment
|
||||
// TODO: There may be an avatar setting action we can use here.
|
||||
final int iconId = bundle.getInt("icon_id", 0);
|
||||
if (iconId == 0) {
|
||||
UserManager userManager = (UserManager) getActivity().getSystemService(
|
||||
final UserManager userManager = (UserManager) getActivity().getSystemService(
|
||||
Context.USER_SERVICE);
|
||||
UserInfo info = Utils.getExistingUser(userManager, android.os.Process.myUserHandle());
|
||||
final UserInfo info = Utils.getExistingUser(userManager,
|
||||
android.os.Process.myUserHandle());
|
||||
controller.setLabel(info.name);
|
||||
controller.setIcon(
|
||||
com.android.settingslib.Utils.getUserIcon(getActivity(), userManager, info));
|
||||
|
@@ -19,48 +19,37 @@ package com.android.settings.deviceinfo.firmwareversion;
|
||||
import android.app.Fragment;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
public class FirmwareVersionPreferenceController extends AbstractPreferenceController implements
|
||||
PreferenceControllerMixin {
|
||||
import androidx.preference.Preference;
|
||||
|
||||
private final static String FIRMWARE_VERSION_KEY = "firmware_version";
|
||||
public class FirmwareVersionPreferenceController extends BasePreferenceController {
|
||||
|
||||
private final Fragment mFragment;
|
||||
private Fragment mFragment;
|
||||
|
||||
public FirmwareVersionPreferenceController(Context context, Fragment fragment) {
|
||||
super(context);
|
||||
public FirmwareVersionPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
}
|
||||
|
||||
public void setHost(Fragment fragment) {
|
||||
mFragment = fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return true;
|
||||
public int getAvailabilityStatus() {
|
||||
return AVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
final Preference pref = screen.findPreference(getPreferenceKey());
|
||||
if (pref != null) {
|
||||
pref.setSummary(Build.VERSION.RELEASE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
return FIRMWARE_VERSION_KEY;
|
||||
public CharSequence getSummary() {
|
||||
return Build.VERSION.RELEASE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
|
||||
if (!TextUtils.equals(preference.getKey(), mPreferenceKey)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -17,74 +17,105 @@
|
||||
package com.android.settings.deviceinfo.firmwareversion;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
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.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.annotation.Resetter;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class FirmwareVersionPreferenceControllerTest {
|
||||
|
||||
@Mock
|
||||
private Preference mPreference;
|
||||
@Mock
|
||||
private PreferenceScreen mScreen;
|
||||
private final String KEY = "firmware_key";
|
||||
|
||||
@Mock
|
||||
private Fragment mFragment;
|
||||
|
||||
private Context mContext;
|
||||
private Preference mPreference;
|
||||
private PreferenceScreen mScreen;
|
||||
private FirmwareVersionPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mController = new FirmwareVersionPreferenceController(mContext, mFragment);
|
||||
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
|
||||
final Context context = RuntimeEnvironment.application;
|
||||
final PreferenceManager preferenceManager = new PreferenceManager(context);
|
||||
mController = new FirmwareVersionPreferenceController(context, KEY);
|
||||
mController.setHost(mFragment);
|
||||
mPreference = new Preference(context);
|
||||
mPreference.setKey(KEY);
|
||||
mScreen = preferenceManager.createPreferenceScreen(context);
|
||||
mScreen.addPreference(mPreference);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
ShadowFirmwareVersionDialogFragment.reset();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_shouldSetSummaryToBuildNumber() {
|
||||
mController.displayPreference(mScreen);
|
||||
|
||||
verify(mPreference).setSummary(Build.VERSION.RELEASE);
|
||||
public void firmwareVersion_shouldAlwaysBeShown() {
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||
BasePreferenceController.AVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updatePreference_shouldSetSummaryToBuildNumber() {
|
||||
mController.updateState(mPreference);
|
||||
|
||||
assertThat(mPreference.getSummary()).isEqualTo(Build.VERSION.RELEASE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = ShadowFirmwareVersionDialogFragment.class)
|
||||
public void handlePreferenceTreeClick_samePreferenceKey_shouldStartDialogFragment() {
|
||||
when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
|
||||
when(mFragment.getChildFragmentManager()).thenReturn(
|
||||
mock(FragmentManager.class, Answers.RETURNS_DEEP_STUBS));
|
||||
final boolean result = mController.handlePreferenceTreeClick(mPreference);
|
||||
|
||||
mController.handlePreferenceTreeClick(mPreference);
|
||||
|
||||
verify(mFragment).getChildFragmentManager();
|
||||
assertThat(ShadowFirmwareVersionDialogFragment.isShowing).isTrue();
|
||||
assertThat(result).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_unknownPreferenceKey_shouldDoNothingAndReturnFalse() {
|
||||
when(mPreference.getKey()).thenReturn("foobar");
|
||||
mPreference.setKey("foobar");
|
||||
|
||||
final boolean result = mController.handlePreferenceTreeClick(mPreference);
|
||||
|
||||
assertThat(ShadowFirmwareVersionDialogFragment.isShowing).isFalse();
|
||||
assertThat(result).isFalse();
|
||||
verify(mFragment, never()).getChildFragmentManager();
|
||||
}
|
||||
|
||||
@Implements(FirmwareVersionDialogFragment.class)
|
||||
public static class ShadowFirmwareVersionDialogFragment {
|
||||
|
||||
private static boolean isShowing = false;
|
||||
|
||||
@Implementation
|
||||
public static void show(Fragment fragemnt) {
|
||||
isShowing = true;
|
||||
}
|
||||
|
||||
@Resetter
|
||||
public static void reset() {
|
||||
isShowing = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user