diff options
| author | 2025-03-13 12:06:14 -0700 | |
|---|---|---|
| committer | 2025-03-13 12:06:14 -0700 | |
| commit | af5be854366cbf9e05457c13ed53cceaf560cbad (patch) | |
| tree | 1fccc2ce4ba67e4e4c6b51593187260284cccbf7 | |
| parent | 55e4da6749b328bc3fc044c6bcff089f03281c33 (diff) | |
| parent | 5fc73bcc5d414b9b25ec3e34f9220486bae7e0d0 (diff) | |
Merge "Simplify ADB Wifi port listener" into main
| -rw-r--r-- | services/core/java/com/android/server/adb/AdbDebuggingManager.java | 44 | ||||
| -rw-r--r-- | services/core/java/com/android/server/adb/AdbService.java | 57 |
2 files changed, 17 insertions, 84 deletions
diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java index 658ea4c27e4c..a4cbf420b93b 100644 --- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java +++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java @@ -168,7 +168,6 @@ public class AdbDebuggingManager { private AdbConnectionInfo mAdbConnectionInfo = new AdbConnectionInfo(); // Polls for a tls port property when adb wifi is enabled private AdbConnectionPortPoller mConnectionPortPoller; - private final PortListenerImpl mPortListener = new PortListenerImpl(); private final Ticker mTicker; public AdbDebuggingManager(Context context) { @@ -323,10 +322,6 @@ public class AdbDebuggingManager { } } - interface AdbConnectionPortListener { - void onPortReceived(int port); - } - /** * This class will poll for a period of time for adbd to write the port * it connected to. @@ -336,16 +331,11 @@ public class AdbDebuggingManager { * port through different means. A better fix would be to always start AdbDebuggingManager, but * it needs to adjust accordingly on whether ro.adb.secure is set. */ - static class AdbConnectionPortPoller extends Thread { + private class AdbConnectionPortPoller extends Thread { private final String mAdbPortProp = "service.adb.tls.port"; - private AdbConnectionPortListener mListener; private final int mDurationSecs = 10; private AtomicBoolean mCanceled = new AtomicBoolean(false); - AdbConnectionPortPoller(AdbConnectionPortListener listener) { - mListener = listener; - } - @Override public void run() { Slog.d(TAG, "Starting adb port property poller"); @@ -362,13 +352,22 @@ public class AdbDebuggingManager { // to start the server. Otherwise we should have a valid port. int port = SystemProperties.getInt(mAdbPortProp, Integer.MAX_VALUE); if (port == -1 || (port > 0 && port <= 65535)) { - mListener.onPortReceived(port); + onPortReceived(port); return; } SystemClock.sleep(1000); } Slog.w(TAG, "Failed to receive adb connection port"); - mListener.onPortReceived(-1); + onPortReceived(-1); + } + + private void onPortReceived(int port) { + Slog.d(TAG, "Received tls port=" + port); + Message msg = mHandler.obtainMessage(port > 0 + ? AdbDebuggingHandler.MSG_SERVER_CONNECTED + : AdbDebuggingHandler.MSG_SERVER_DISCONNECTED); + msg.obj = port; + mHandler.sendMessage(msg); } public void cancelAndWait() { @@ -382,17 +381,6 @@ public class AdbDebuggingManager { } } - class PortListenerImpl implements AdbConnectionPortListener { - public void onPortReceived(int port) { - Slog.d(TAG, "Received tls port=" + port); - Message msg = mHandler.obtainMessage(port > 0 - ? AdbDebuggingHandler.MSG_SERVER_CONNECTED - : AdbDebuggingHandler.MSG_SERVER_DISCONNECTED); - msg.obj = port; - mHandler.sendMessage(msg); - } - } - @VisibleForTesting static class AdbDebuggingThread extends Thread { private boolean mStopped; @@ -1088,8 +1076,7 @@ public class AdbDebuggingManager { mContext.registerReceiver(mBroadcastReceiver, intentFilter); SystemProperties.set(AdbService.WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); - mConnectionPortPoller = - new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener); + mConnectionPortPoller = new AdbDebuggingManager.AdbConnectionPortPoller(); mConnectionPortPoller.start(); startAdbDebuggingThread(); @@ -1138,8 +1125,7 @@ public class AdbDebuggingManager { mContext.registerReceiver(mBroadcastReceiver, intentFilter); SystemProperties.set(AdbService.WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); - mConnectionPortPoller = - new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener); + mConnectionPortPoller = new AdbDebuggingManager.AdbConnectionPortPoller(); mConnectionPortPoller.start(); startAdbDebuggingThread(); @@ -1257,7 +1243,7 @@ public class AdbDebuggingManager { if (mAdbWifiEnabled) { // In scenarios where adbd is restarted, the tls port may change. mConnectionPortPoller = - new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener); + new AdbDebuggingManager.AdbConnectionPortPoller(); mConnectionPortPoller.start(); } break; diff --git a/services/core/java/com/android/server/adb/AdbService.java b/services/core/java/com/android/server/adb/AdbService.java index 40f7c873eae8..d12a0a2a1e00 100644 --- a/services/core/java/com/android/server/adb/AdbService.java +++ b/services/core/java/com/android/server/adb/AdbService.java @@ -21,10 +21,8 @@ import android.annotation.NonNull; import android.annotation.UserIdInt; import android.content.ContentResolver; import android.content.Context; -import android.content.Intent; import android.content.pm.PackageManager; import android.database.ContentObserver; -import android.debug.AdbManager; import android.debug.AdbManagerInternal; import android.debug.AdbTransportType; import android.debug.FingerprintAndPairDevice; @@ -40,10 +38,8 @@ import android.os.ParcelFileDescriptor; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.SystemProperties; -import android.os.UserHandle; import android.provider.Settings; import android.service.adb.AdbServiceDumpProto; -import android.sysprop.AdbProperties; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Slog; @@ -63,7 +59,6 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.Collections; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; /** * The Android Debug Bridge (ADB) service. This controls the availability of ADB and authorization @@ -85,12 +80,6 @@ public class AdbService extends IAdbManager.Stub { */ static final String CTL_STOP = "ctl.stop"; - // The tcp port adb is currently using - AtomicInteger mConnectionPort = new AtomicInteger(-1); - - private final AdbConnectionPortListener mPortListener = new AdbConnectionPortListener(); - private AdbDebuggingManager.AdbConnectionPortPoller mConnectionPortPoller; - private final RemoteCallbackList<IAdbCallback> mCallbacks = new RemoteCallbackList<>(); /** * Manages the service lifecycle for {@code AdbService} in {@code SystemServer}. @@ -404,39 +393,6 @@ public class AdbService extends IAdbManager.Stub { Slog.d(TAG, "Unregistering callback " + callback); mCallbacks.unregister(callback); } - /** - * This listener is only used when ro.adb.secure=0. Otherwise, AdbDebuggingManager will - * do this. - */ - class AdbConnectionPortListener implements AdbDebuggingManager.AdbConnectionPortListener { - public void onPortReceived(int port) { - if (port > 0 && port <= 65535) { - mConnectionPort.set(port); - } else { - mConnectionPort.set(-1); - // Turn off wifi debugging, since the server did not start. - try { - Settings.Global.putInt(mContentResolver, - Settings.Global.ADB_WIFI_ENABLED, 0); - } catch (SecurityException e) { - // If UserManager.DISALLOW_DEBUGGING_FEATURES is on, that this setting can't - // be changed. - Slog.d(TAG, "ADB_ENABLED is restricted."); - } - } - broadcastPortInfo(mConnectionPort.get()); - } - } - - private void broadcastPortInfo(int port) { - Intent intent = new Intent(AdbManager.WIRELESS_DEBUG_STATE_CHANGED_ACTION); - intent.putExtra(AdbManager.WIRELESS_STATUS_EXTRA, (port >= 0) - ? AdbManager.WIRELESS_STATUS_CONNECTED - : AdbManager.WIRELESS_STATUS_DISCONNECTED); - intent.putExtra(AdbManager.WIRELESS_DEBUG_PORT_EXTRA, port); - AdbDebuggingManager.sendBroadcastWithDebugPermission(mContext, intent, UserHandle.ALL); - Slog.i(TAG, "sent port broadcast port=" + port); - } private void startAdbd() { SystemProperties.set(CTL_START, ADBD); @@ -470,20 +426,11 @@ public class AdbService extends IAdbManager.Stub { } else if (transportType == AdbTransportType.WIFI && enable != mIsAdbWifiEnabled) { mIsAdbWifiEnabled = enable; if (mIsAdbWifiEnabled) { - if (!AdbProperties.secure().orElse(false)) { - // Start adbd. If this is secure adb, then we defer enabling adb over WiFi. - SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); - mConnectionPortPoller = - new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener); - mConnectionPortPoller.start(); - } + // Start adb over WiFi. + SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); } else { // Stop adb over WiFi. SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "0"); - if (mConnectionPortPoller != null) { - mConnectionPortPoller.cancelAndWait(); - mConnectionPortPoller = null; - } } } else { // No change |