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

Commit 4e302a66 authored by jianzhou's avatar jianzhou Committed by Steve Kondik
Browse files

UsbSettings: Adjust UMS mode code logic.

Not to update UMS status in every iteration of client listener.

Change-Id: I5fbc0145c798c468f2ae943b251700f1a71e00d8
parent 1f13a693
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -672,8 +672,14 @@ class MountService extends IMountService.Stub
    private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String usbMode = new UsbManager(null, null).getDefaultFunction();
            final boolean isUmsMode = UsbManager.USB_FUNCTION_MASS_STORAGE.equals(usbMode);
            boolean available = (intent.getBooleanExtra(UsbManager.USB_CONNECTED, false) &&
                    intent.getBooleanExtra(UsbManager.USB_FUNCTION_MASS_STORAGE, false));
            //only take UMS mode as available when property is true
            if (SystemProperties.getBoolean("persist.sys.ums", true)) {
                available = available && isUmsMode;
            }
            notifyShareAvailabilityChange(available);
        }
    };
@@ -751,7 +757,6 @@ class MountService extends IMountService.Stub
                MountServiceBinderListener bl = mListeners.get(i);
                try {
                    bl.mListener.onStorageStateChanged(path, oldState, state);
                    disbaleEnableUMSAfterStorageChanged(state);
                } catch (RemoteException rex) {
                    Slog.e(TAG, "Listener dead");
                    mListeners.remove(i);
@@ -760,21 +765,23 @@ class MountService extends IMountService.Stub
                }
            }
        }
        disbaleEnableUMSAfterStorageChanged(state);
    }

    private void disbaleEnableUMSAfterStorageChanged(String state){
        if (!SystemProperties.getBoolean("persist.sys.ums", true)) {
            //Do nothing if property is false
            return;
        }

        if (state.equals(Environment.MEDIA_SHARED)) {
            if (!mUmsAvailable) {
                setUsbMassStorageEnabled(false);
            }
        } else if (state.equals(Environment.MEDIA_MOUNTED)) {
            String usbMode = new UsbManager(null, null).getDefaultFunction();
            final boolean isUmsMode = UsbManager.USB_FUNCTION_MASS_STORAGE.equals(usbMode);
            if (mUmsAvailable && isUmsMode) {
        } else if (state.equals(Environment.MEDIA_MOUNTED) && mUmsAvailable) {
            setUsbMassStorageEnabled(true);
        }
    }
    }

    /**
     * Callback from NativeDaemonConnector