diff --git a/service-t/src/com/android/server/ethernet/EthernetTracker.java b/service-t/src/com/android/server/ethernet/EthernetTracker.java index bb7963e215..9b3c7ba26d 100644 --- a/service-t/src/com/android/server/ethernet/EthernetTracker.java +++ b/service-t/src/com/android/server/ethernet/EthernetTracker.java @@ -397,6 +397,16 @@ public class EthernetTracker { return mFactory.hasInterface(iface); } + private List getAllInterfaces() { + final ArrayList interfaces = new ArrayList<>( + List.of(mFactory.getAvailableInterfaces(/* includeRestricted */ true))); + + if (mTetheringInterfaceMode == INTERFACE_MODE_SERVER && mTetheringInterface != null) { + interfaces.add(mTetheringInterface); + } + return interfaces; + } + String[] getClientModeInterfaces(boolean includeRestricted) { return mFactory.getAvailableInterfaces(includeRestricted); } @@ -459,10 +469,16 @@ public class EthernetTracker { public void setIncludeTestInterfaces(boolean include) { mHandler.post(() -> { mIncludeTestInterfaces = include; - if (!include) { + if (include) { + trackAvailableInterfaces(); + } else { removeTestData(); + // remove all test interfaces + for (String iface : getAllInterfaces()) { + if (isValidEthernetInterface(iface)) continue; + stopTrackingInterface(iface); + } } - trackAvailableInterfaces(); }); } @@ -952,17 +968,7 @@ public class EthernetTracker { if (mIsEthernetEnabled == enabled) return; mIsEthernetEnabled = enabled; - - // Interface in server mode should also be included. - ArrayList interfaces = - new ArrayList<>( - List.of(mFactory.getAvailableInterfaces(/* includeRestricted */ true))); - - if (mTetheringInterfaceMode == INTERFACE_MODE_SERVER && mTetheringInterface != null) { - interfaces.add(mTetheringInterface); - } - - for (String iface : interfaces) { + for (String iface : getAllInterfaces()) { setInterfaceUpState(iface, enabled); } broadcastEthernetStateChange(mIsEthernetEnabled); diff --git a/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java b/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java index b7cfaf9b52..533bbf8776 100644 --- a/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java +++ b/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java @@ -79,6 +79,7 @@ public class EthernetTrackerTest { initMockResources(); doReturn(false).when(mFactory).updateInterfaceLinkState(anyString(), anyBoolean()); doReturn(new String[0]).when(mNetd).interfaceGetList(); + doReturn(new String[0]).when(mFactory).getAvailableInterfaces(anyBoolean()); mHandlerThread = new HandlerThread(THREAD_NAME); mHandlerThread.start(); tracker = new EthernetTracker(mContext, mHandlerThread.getThreadHandler(), mFactory, mNetd,