Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d66e831 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Give users and devices control over sdcardfs." into nyc-dev

parents e7e7cb2d 33dd156e
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -74,6 +74,8 @@ public final class Sm {
            runGetPrimaryStorageUuid();
            runGetPrimaryStorageUuid();
        } else if ("set-force-adoptable".equals(op)) {
        } else if ("set-force-adoptable".equals(op)) {
            runSetForceAdoptable();
            runSetForceAdoptable();
        } else if ("set-sdcardfs".equals(op)) {
            runSetSdcardfs();
        } else if ("partition".equals(op)) {
        } else if ("partition".equals(op)) {
            runPartition();
            runPartition();
        } else if ("mount".equals(op)) {
        } else if ("mount".equals(op)) {
@@ -141,6 +143,22 @@ public final class Sm {
                StorageManager.DEBUG_FORCE_ADOPTABLE);
                StorageManager.DEBUG_FORCE_ADOPTABLE);
    }
    }


    public void runSetSdcardfs() throws RemoteException {
        final int mask = StorageManager.DEBUG_SDCARDFS_FORCE_ON
                | StorageManager.DEBUG_SDCARDFS_FORCE_OFF;
        switch (nextArg()) {
            case "on":
                mSm.setDebugFlags(StorageManager.DEBUG_SDCARDFS_FORCE_ON, mask);
                break;
            case "off":
                mSm.setDebugFlags(StorageManager.DEBUG_SDCARDFS_FORCE_OFF, mask);
                break;
            case "default":
                mSm.setDebugFlags(0, mask);
                break;
        }
    }

    public void runSetEmulateFbe() throws RemoteException {
    public void runSetEmulateFbe() throws RemoteException {
        final boolean emulateFbe = Boolean.parseBoolean(nextArg());
        final boolean emulateFbe = Boolean.parseBoolean(nextArg());
        mSm.setDebugFlags(emulateFbe ? StorageManager.DEBUG_EMULATE_FBE : 0,
        mSm.setDebugFlags(emulateFbe ? StorageManager.DEBUG_EMULATE_FBE : 0,
+6 −0
Original line number Original line Diff line number Diff line
@@ -83,6 +83,8 @@ public class StorageManager {
    public static final String PROP_FORCE_ADOPTABLE = "persist.fw.force_adoptable";
    public static final String PROP_FORCE_ADOPTABLE = "persist.fw.force_adoptable";
    /** {@hide} */
    /** {@hide} */
    public static final String PROP_EMULATE_FBE = "persist.sys.emulate_fbe";
    public static final String PROP_EMULATE_FBE = "persist.sys.emulate_fbe";
    /** {@hide} */
    public static final String PROP_SDCARDFS = "persist.sys.sdcardfs";


    /** {@hide} */
    /** {@hide} */
    public static final String UUID_PRIVATE_INTERNAL = null;
    public static final String UUID_PRIVATE_INTERNAL = null;
@@ -93,6 +95,10 @@ public class StorageManager {
    public static final int DEBUG_FORCE_ADOPTABLE = 1 << 0;
    public static final int DEBUG_FORCE_ADOPTABLE = 1 << 0;
    /** {@hide} */
    /** {@hide} */
    public static final int DEBUG_EMULATE_FBE = 1 << 1;
    public static final int DEBUG_EMULATE_FBE = 1 << 1;
    /** {@hide} */
    public static final int DEBUG_SDCARDFS_FORCE_ON = 1 << 2;
    /** {@hide} */
    public static final int DEBUG_SDCARDFS_FORCE_OFF = 1 << 3;


    // NOTE: keep in sync with installd
    // NOTE: keep in sync with installd
    /** {@hide} */
    /** {@hide} */
+22 −0
Original line number Original line Diff line number Diff line
@@ -1984,6 +1984,28 @@ class MountService extends IMountService.Stub
                mHandler.obtainMessage(H_RESET).sendToTarget();
                mHandler.obtainMessage(H_RESET).sendToTarget();
            }
            }
        }
        }

        if ((mask & (StorageManager.DEBUG_SDCARDFS_FORCE_ON
                | StorageManager.DEBUG_SDCARDFS_FORCE_OFF)) != 0) {
            final String value;
            if ((flags & StorageManager.DEBUG_SDCARDFS_FORCE_ON) != 0) {
                value = "force_on";
            } else if ((flags & StorageManager.DEBUG_SDCARDFS_FORCE_OFF) != 0) {
                value = "force_off";
            } else {
                value = "";
            }

            final long token = Binder.clearCallingIdentity();
            try {
                SystemProperties.set(StorageManager.PROP_SDCARDFS, value);

                // Reset storage to kick new setting into place
                mHandler.obtainMessage(H_RESET).sendToTarget();
            } finally {
                Binder.restoreCallingIdentity(token);
            }
        }
    }
    }


    @Override
    @Override