Don't show separate option for erasing USB storage

On devices with emulated USB storage or SD card, factory reset will wipe
all data from that area. Given that, it doesn't make sense to show a
different option for wiping USB storage.

Bug: 3242568
Change-Id: I257bdde06141f14381c8c09ce6a42c18d7080efd
diff --git a/res/layout/master_clear.xml b/res/layout/master_clear.xml
index ec61310..e15169e 100644
--- a/res/layout/master_clear.xml
+++ b/res/layout/master_clear.xml
@@ -35,6 +35,12 @@
                 android:layout_height="wrap_content"
                 android:textSize="18sp"
                 android:text="@string/master_clear_desc" />
+            <TextView android:id="@+id/also_erases_external"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:visibility="gone"
+                android:textSize="18sp"
+                android:text="@string/master_clear_desc_also_erases_external" />
             <TextView android:id="@+id/accounts_label"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -46,7 +52,7 @@
                     android:layout_height="wrap_content"
                     android:orientation="vertical"
                     android:visibility="gone" />
-            <TextView
+            <TextView android:id="@+id/erase_external_option_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textSize="18sp"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0c51a22..c7454de 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1604,6 +1604,8 @@
     <string name="master_clear_desc" product="default">"This will erase all data from your phone\'s <b>internal storage</b>, including:\n\n<li>Your Google account</li>\n<li>System and application data and settings</li>\n<li>Downloaded applications"</li></string>
     <!-- SD card & phone storage settings screen, instructions and list of current accounts.  The list of accounts follows this text[CHAR LIMIT=NONE] -->
     <string name="master_clear_accounts" product="default">"\n\nYou are currently signed into the following accounts:\n"</string>
+    <!-- SD card & phone storage settings screen, list of items in user data storage (USB storage or SD card) that will be erased during this operation [CHAR LIMIT=NONE] -->
+    <string name="master_clear_desc_also_erases_external">"<li>Music</li>\n<li>Photos</li>\n<li>Other user data</li>"</string>
     <!-- SD card & phone storage settings screen, instructions about whether to also erase the external storage (SD card) when erasing the internal storage [CHAR LIMIT=NONE] -->
     <string name="master_clear_desc_erase_external_storage" product="nosdcard">"\n\nTo also clear music, pictures, and other user data, the <b>USB storage</b> needs to be erased."</string>
     <!-- SD card & phone storage settings screen, instructions about whether to also erase the external storage (SD card) when erasing the internal storage [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 3060d3e..1b045ea 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -29,6 +29,7 @@
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.os.Environment;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.util.Log;
@@ -133,13 +134,29 @@
         mExternalStorageContainer = mContentView.findViewById(R.id.erase_external_container);
         mExternalStorage = (CheckBox) mContentView.findViewById(R.id.erase_external);
 
-        mExternalStorageContainer.setOnClickListener(new View.OnClickListener() {
+        /*
+         * If the external storage is emulated, it will be erased with a factory
+         * reset at any rate. There is no need to have a separate option until
+         * we have a factory reset that only erases some directories and not
+         * others.
+         */
+        if (Environment.isExternalStorageEmulated()) {
+            mExternalStorageContainer.setVisibility(View.GONE);
 
-            @Override
-            public void onClick(View v) {
-                mExternalStorage.toggle();
-            }
-        });
+            final View externalOption = mContentView.findViewById(R.id.erase_external_option_text);
+            externalOption.setVisibility(View.GONE);
+
+            final View externalAlsoErased = mContentView.findViewById(R.id.also_erases_external);
+            externalAlsoErased.setVisibility(View.VISIBLE);
+        } else {
+            mExternalStorageContainer.setOnClickListener(new View.OnClickListener() {
+
+                @Override
+                public void onClick(View v) {
+                    mExternalStorage.toggle();
+                }
+            });
+        }
 
         loadAccountList();
     }
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index 1860d6d..c3df2d5 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -171,9 +171,7 @@
         mSdMountPreferenceGroup = (PreferenceGroup)findPreference(MEMORY_SD_GROUP);
 
         if (Environment.isExternalStorageEmulated()) {
-            mSdMountPreferenceGroup.removePreference(mSdSize);
-            mSdMountPreferenceGroup.removePreference(mSdAvail);
-            mSdMountPreferenceGroup.removePreference(mSdMountToggle);
+            getPreferenceScreen().removePreference(mSdMountPreferenceGroup);
         }
 
         mInternalSize = findPreference(MEMORY_INTERNAL_SIZE);