Update DeviceModelPreferenceController

 - Added serial number to the dialog for about phone v2
 - prefixed model to the preference summary for about phone v2

Bug: 36458278
Test: make RunSettingsRoboTests -j40
Change-Id: Ic2950adcecf940ad8c9256688dc70b662ad5f0d6
diff --git a/res/layout/dialog_hardware_info.xml b/res/layout/dialog_hardware_info.xml
index f9d52b8..9431961 100644
--- a/res/layout/dialog_hardware_info.xml
+++ b/res/layout/dialog_hardware_info.xml
@@ -40,6 +40,20 @@
             android:textAppearance="@android:style/TextAppearance.Material.Body2" />
 
         <TextView
+            android:id="@+id/serial_number_label"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="@android:style/TextAppearance.Material.Body1"
+            android:textColor="?android:attr/textColorSecondary"
+            android:text="@string/status_serial_number" />
+        <TextView
+            android:id="@+id/serial_number_value"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingBottom="24dp"
+            android:textAppearance="@android:style/TextAppearance.Material.Body2" />
+
+        <TextView
             android:id="@+id/hardware_rev_label"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6b0bd6d..6eaf466 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2619,6 +2619,8 @@
     <string name="security_patch">Android security patch level</string>
     <!-- About phone screen, status item label  [CHAR LIMIT=40] -->
     <string name="model_info">Model</string>
+    <!-- About phone screen, status item summary  [CHAR LIMIT=40] -->
+    <string name="model_summary">Model&#58; %1$s</string>
     <!-- About phone screen, dialog title for showing hardware information such as model, serial number, etc.[CHAR LIMIT=60] -->
     <string name="hardware_info">Model &amp; hardware</string>
     <!-- Label for device's hardware revision value [CHAR LIMIT=40] -->
diff --git a/res/xml/device_info_settings_v2.xml b/res/xml/device_info_settings_v2.xml
index 4f66b4c..0553f1e 100644
--- a/res/xml/device_info_settings_v2.xml
+++ b/res/xml/device_info_settings_v2.xml
@@ -36,7 +36,7 @@
 
     <!-- Model & hardware -->
     <Preference
-        android:key="model_and_hardware"
+        android:key="device_model"
         android:title="@string/hardware_info"
         android:summary="@string/summary_placeholder"/>
 
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 41eb6c6..630b67e 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -49,10 +49,11 @@
 
 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 @@
 
             // 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 f1dc415..e7fab5a 100644
--- a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
@@ -21,7 +21,10 @@
 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 @@
         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 60082c7..3d825b9 100644
--- a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
+++ b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
@@ -18,15 +18,18 @@
 
 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 @@
         // 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 @@
             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 31b905e..e466bbf 100644
--- a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
@@ -24,7 +24,10 @@
 
 /**
  * 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 8e8da51..15461cc2 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.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 @@
         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(