Update the system info dialog.

The string is updated as well as where the dialog shows up.

Change-Id: If1a3b17dca04fe81f52dbdc2353db34ce7adc49a
Fixes: 34857117
Test: Robotest
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d37d9d9..43391fa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2702,7 +2702,7 @@
 \n\nTo see the visible contents of this <xliff:g id="name" example="SD card">^1</xliff:g>, tap Explore.</string>
 
     <!-- Body of dialog informing user about the storage used by the Android System [CHAR LIMIT=NONE]-->
-    <string name="storage_detail_dialog_system">System includes files that Android can\u2019t display individually.</string>
+    <string name="storage_detail_dialog_system">System includes files used to run Android version <xliff:g id="version" example="8.0">%s</xliff:g></string>
 
     <!-- Body of dialog informing user about other users on a storage device [CHAR LIMIT=NONE]-->
     <string name="storage_detail_dialog_user"><xliff:g id="user" example="Guest user">^1</xliff:g> may have saved photos, music, apps, or other data, using <xliff:g id="size" example="1.2 GB">^2</xliff:g> of storage.
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 076ec05..9ddf7b7 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -27,6 +27,7 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.UserInfo;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.UserHandle;
@@ -759,7 +760,8 @@
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
-                    .setMessage(R.string.storage_detail_dialog_system)
+                    .setMessage(getContext().getString(R.string.storage_detail_dialog_system,
+                            Build.VERSION.RELEASE))
                     .setPositiveButton(android.R.string.ok, null)
                     .create();
         }
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index eec9487..e22aa24 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -35,6 +35,7 @@
 import com.android.settings.applications.ManageApplications;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.deviceinfo.PrivateVolumeSettings.SystemInfoFragment;
 import com.android.settings.deviceinfo.StorageItemPreference;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.deviceinfo.StorageMeasurement;
@@ -52,6 +53,7 @@
     private static final String TAG = "StorageItemPreference";
 
     private static final String IMAGE_MIME_TYPE = "image/*";
+    private static final String SYSTEM_FRAGMENT_TAG = "SystemInfo";
 
     @VisibleForTesting
     static final String PHOTO_KEY = "pref_photos_videos";
@@ -104,8 +106,6 @@
             return false;
         }
 
-        // TODO: Currently, this reflects the existing behavior for these toggles.
-        //       After the intermediate views are built, swap them in.
         Intent intent = null;
         if (preference.getKey() == null) {
             return false;
@@ -133,6 +133,11 @@
                 FeatureFactory.getFactory(mContext).getMetricsFeatureProvider().action(
                         mContext, MetricsEvent.STORAGE_FILES);
                 break;
+            case SYSTEM_KEY:
+                final SystemInfoFragment dialog = new SystemInfoFragment();
+                dialog.setTargetFragment(mFragment, 0);
+                dialog.show(mFragment.getFragmentManager(), SYSTEM_FRAGMENT_TAG);
+                return true;
         }
 
         if (intent != null) {
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
index 387bc43..18b0c82 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -20,6 +20,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -45,6 +46,7 @@
 import com.android.settings.TestConfig;
 import com.android.settings.applications.ManageApplications;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.deviceinfo.PrivateVolumeSettings;
 import com.android.settings.deviceinfo.StorageItemPreference;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.applications.StorageStatsSource;
@@ -187,6 +189,15 @@
     }
 
     @Test
+    public void testClickSystem() {
+        mPreference.setKey("pref_system");
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
+
+        verify(mFragment.getFragmentManager().beginTransaction()).add(
+                any(PrivateVolumeSettings.SystemInfoFragment.class), anyString());
+    }
+
+    @Test
     public void testMeasurementCompletedUpdatesPreferences() {
         StorageItemPreference audio = new StorageItemPreference(mContext);
         StorageItemPreference image = new StorageItemPreference(mContext);