diff --git a/res/layout/dialog_hardware_info.xml b/res/layout/dialog_hardware_info.xml index f9d52b8ec17..9431961410c 100644 --- a/res/layout/dialog_hardware_info.xml +++ b/res/layout/dialog_hardware_info.xml @@ -39,6 +39,20 @@ android:paddingBottom="24dp" android:textAppearance="@android:style/TextAppearance.Material.Body2" /> + + + Android security patch level Model + + Model: %1$s Model & hardware diff --git a/res/xml/device_info_settings_v2.xml b/res/xml/device_info_settings_v2.xml index 4f66b4c37b0..0553f1ebc5c 100644 --- a/res/xml/device_info_settings_v2.xml +++ b/res/xml/device_info_settings_v2.xml @@ -36,7 +36,7 @@ diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java index 41eb6c66824..630b67e9307 100644 --- a/src/com/android/settings/DeviceInfoSettings.java +++ b/src/com/android/settings/DeviceInfoSettings.java @@ -49,10 +49,11 @@ import java.util.List; public class DeviceInfoSettings extends DashboardFragment implements Indexable { + public static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2"; + private static final String LOG_TAG = "DeviceInfoSettings"; private static final String KEY_LEGAL_CONTAINER = "legal_container"; - private static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2"; @Override public int getMetricsCategory() { @@ -127,7 +128,7 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable { // SIM status - // Model & hardware + controllers.add(new DeviceModelPreferenceController(context, fragment)); // IMEI diff --git a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java index f1dc415d7f1..e7fab5a1d11 100644 --- a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java +++ b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java @@ -21,7 +21,10 @@ import android.os.Build; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; +import android.util.FeatureFlagUtils; +import com.android.settings.DeviceInfoSettings; +import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.AbstractPreferenceController; @@ -48,7 +51,12 @@ public class DeviceModelPreferenceController extends AbstractPreferenceControlle super.displayPreference(screen); final Preference pref = screen.findPreference(KEY_DEVICE_MODEL); if (pref != null) { - pref.setSummary(getDeviceModel()); + if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) { + pref.setSummary(mContext.getResources().getString(R.string.model_summary, + getDeviceModel())); + } else { + pref.setSummary(getDeviceModel()); + } } } diff --git a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java index 60082c73a6d..3d825b909d4 100644 --- a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java +++ b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java @@ -18,15 +18,18 @@ package com.android.settings.deviceinfo; import android.app.AlertDialog; import android.app.Dialog; +import android.os.Build; import android.os.Bundle; import android.os.SystemProperties; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; +import android.util.FeatureFlagUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.DeviceInfoSettings; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; @@ -54,6 +57,15 @@ public class HardwareInfoDialogFragment extends InstrumentedDialogFragment { // Model setText(content, R.id.model_label, R.id.model_value, DeviceModelPreferenceController.getDeviceModel()); + + // Serial number + if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) { + setText(content, R.id.serial_number_label, R.id.serial_number_value, getSerialNumber()); + } else { + content.findViewById(R.id.serial_number_label).setVisibility(View.GONE); + content.findViewById(R.id.serial_number_value).setVisibility(View.GONE); + } + // Hardware rev setText(content, R.id.hardware_rev_label, R.id.hardware_rev_value, SystemProperties.get("ro.boot.hardware.revision")); @@ -77,4 +89,9 @@ public class HardwareInfoDialogFragment extends InstrumentedDialogFragment { valueView.setVisibility(View.GONE); } } + + @VisibleForTesting + String getSerialNumber() { + return Build.getSerial(); + } } diff --git a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java index 31b905e8e86..e466bbfb057 100644 --- a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java @@ -24,7 +24,10 @@ import com.android.settingslib.deviceinfo.AbstractSerialNumberPreferenceControll /** * Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}. + * + * deprecated because this preference is no longer used in About Phone V2 */ +@Deprecated public class SerialNumberPreferenceController extends AbstractSerialNumberPreferenceController implements PreferenceControllerMixin { diff --git a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java index 8e8da51aa73..15461cc2962 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java @@ -16,13 +16,20 @@ package com.android.settings.deviceinfo; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + import android.app.Activity; import android.os.SystemProperties; import android.view.View; import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; @@ -30,12 +37,6 @@ import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class HardwareInfoDialogFragmentTest { @@ -53,6 +54,7 @@ public class HardwareInfoDialogFragmentTest { SystemProperties.set("ro.boot.hardware.revision", TEST_HARDWARE_REV); final HardwareInfoDialogFragment fragment = spy(HardwareInfoDialogFragment.newInstance()); + doReturn("").when(fragment).getSerialNumber(); fragment.show(mActivity.getFragmentManager(), HardwareInfoDialogFragment.TAG); verify(fragment).setText(