Blend in force adoptable flag when set.

Bug: 19993667
Change-Id: Ic7f348d171a89e889281b7efb1aa0cbade048975
diff --git a/core/java/android/os/storage/DiskInfo.java b/core/java/android/os/storage/DiskInfo.java
index 9f38de8..64f2a05 100644
--- a/core/java/android/os/storage/DiskInfo.java
+++ b/core/java/android/os/storage/DiskInfo.java
@@ -68,6 +68,9 @@
         if (TextUtils.isEmpty(label)) {
             return false;
         }
+        if (label.equalsIgnoreCase("ata")) {
+            return false;
+        }
         if (label.toLowerCase().contains("generic")) {
             return false;
         }
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index efa3ef2..f101352 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -69,6 +69,8 @@
 
     /** {@hide} */
     public static final String PROP_PRIMARY_PHYSICAL = "ro.vold.primary_physical";
+    /** {@hide} */
+    public static final String PROP_FORCE_ADOPTABLE = "persist.fw.force_adoptable";
 
     /** {@hide} */
     public static final int FLAG_ALL_METADATA = 1 << 0;
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index 649fcde..f88802a 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -823,7 +823,10 @@
             case VoldResponseCode.DISK_CREATED: {
                 if (cooked.length != 3) break;
                 final String id = cooked[1];
-                final int flags = Integer.parseInt(cooked[2]);
+                int flags = Integer.parseInt(cooked[2]);
+                if (SystemProperties.getBoolean(StorageManager.PROP_FORCE_ADOPTABLE, false)) {
+                    flags |= DiskInfo.FLAG_ADOPTABLE;
+                }
                 mDisks.put(id, new DiskInfo(id, flags));
                 break;
             }