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

Commit be0d76d3 authored by Joshua Duong's avatar Joshua Duong Committed by Gerrit Code Review
Browse files

Merge changes I36c6ef4b,I3c31394e

* changes:
  Allow UsbDeviceManager to start adbd again.
  Remove key from adb_keys if user forgets the key.
parents 32f87fc6 eb6e5bc4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -53,4 +53,14 @@ public abstract class AdbManagerInternal {
     * Returns the file that contains all of the ADB keys and their last used time.
     */
    public abstract File getAdbTempKeysFile();

    /**
     * Starts adbd for a transport.
     */
    public abstract void startAdbdForTransport(byte transportType);

    /**
     * Stops adbd for a transport.
     */
    public abstract void stopAdbdForTransport(byte transportType);
}
+1 −0
Original line number Diff line number Diff line
@@ -1849,6 +1849,7 @@ public class AdbDebuggingManager {
        public void removeKey(String key) {
            if (mKeyMap.containsKey(key)) {
                mKeyMap.remove(key);
                writeKeys(mKeyMap.keySet());
                sendPersistKeyStoreMessage();
            }
        }
+25 −0
Original line number Diff line number Diff line
@@ -144,6 +144,18 @@ public class AdbService extends IAdbManager.Stub {
        public File getAdbTempKeysFile() {
            return mDebuggingManager.getAdbTempKeysFile();
        }

        @Override
        public void startAdbdForTransport(byte transportType) {
            FgThread.getHandler().sendMessage(obtainMessage(
                    AdbService::setAdbdEnabledForTransport, AdbService.this, true, transportType));
        }

        @Override
        public void stopAdbdForTransport(byte transportType) {
            FgThread.getHandler().sendMessage(obtainMessage(
                    AdbService::setAdbdEnabledForTransport, AdbService.this, false, transportType));
        }
    }

    private void initAdbState() {
@@ -437,6 +449,19 @@ public class AdbService extends IAdbManager.Stub {
        }
    }

    private void setAdbdEnabledForTransport(boolean enable, byte transportType) {
        if (transportType == AdbTransportType.USB) {
            mIsAdbUsbEnabled = enable;
        } else if (transportType == AdbTransportType.WIFI) {
            mIsAdbWifiEnabled = enable;
        }
        if (enable) {
            startAdbd();
        } else {
            stopAdbd();
        }
    }

    private void setAdbEnabled(boolean enable, byte transportType) {
        if (DEBUG) {
            Slog.d(TAG, "setAdbEnabled(" + enable + "), mIsAdbUsbEnabled=" + mIsAdbUsbEnabled
+25 −0
Original line number Diff line number Diff line
@@ -672,6 +672,31 @@ public final class AdbDebuggingManagerTest {
                connectionTime2, mKeyStore.getLastConnectionTime(TEST_KEY_2));
    }

    @Test
    public void testAdbKeyStore_removeKey() throws Exception {
        // Accept the test key with the 'Always allow' option selected.
        runAdbTest(TEST_KEY_1, true, true, false);
        runAdbTest(TEST_KEY_2, true, true, false);

        // Set the connection time to 0 to restore the original behavior.
        setAllowedConnectionTime(0);

        // Verify that the key is in the adb_keys file to ensure subsequent connections are
        // automatically allowed by adbd.
        persistKeyStore();
        assertTrue("The key was not in the adb_keys file after persisting the keystore",
                isKeyInFile(TEST_KEY_1, mAdbKeyFile));
        assertTrue("The key was not in the adb_keys file after persisting the keystore",
                isKeyInFile(TEST_KEY_2, mAdbKeyFile));

        // Now remove one of the keys and make sure the other key is still there
        mKeyStore.removeKey(TEST_KEY_1);
        assertFalse("The key was still in the adb_keys file after removing the key",
                isKeyInFile(TEST_KEY_1, mAdbKeyFile));
        assertTrue("The key was not in the adb_keys file after removing a different key",
                isKeyInFile(TEST_KEY_2, mAdbKeyFile));
    }

    /**
     * Runs an adb test with the provided configuration.
     *
+13 −1
Original line number Diff line number Diff line
@@ -1898,7 +1898,19 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
                    return;
                }
                try {
                    // Adbd will be started by AdbService once Global.ADB_ENABLED is set.
                    if ((config & UsbManager.FUNCTION_ADB) != 0) {
                        /**
                         * Start adbd if ADB function is included in the configuration.
                         */
                        LocalServices.getService(AdbManagerInternal.class)
                                .startAdbdForTransport(AdbTransportType.USB);
                    } else {
                        /**
                         * Stop adbd otherwise
                         */
                        LocalServices.getService(AdbManagerInternal.class)
                                .stopAdbdForTransport(AdbTransportType.USB);
                    }
                    UsbGadgetCallback usbGadgetCallback = new UsbGadgetCallback(mCurrentRequest,
                            config, chargingFunctions);
                    mGadgetProxy.setCurrentUsbFunctions(config, usbGadgetCallback,