Don't call maybeTrackInterface on the wrong thread. am: d51602635a

Change-Id: I3e91fe1c2a475280b87565f59a2db02a294ba340
diff --git a/java/com/android/server/ethernet/EthernetTracker.java b/java/com/android/server/ethernet/EthernetTracker.java
index 336ddef..c8c3bdf 100644
--- a/java/com/android/server/ethernet/EthernetTracker.java
+++ b/java/com/android/server/ethernet/EthernetTracker.java
@@ -193,9 +193,11 @@
     }
 
     public void setIncludeTestInterfaces(boolean include) {
-        mIncludeTestInterfaces = include;
-        updateIfaceMatchRegexp();
-        trackAvailableInterfaces();
+        mHandler.post(() -> {
+            mIncludeTestInterfaces = include;
+            updateIfaceMatchRegexp();
+            mHandler.post(() -> trackAvailableInterfaces());
+        });
     }
 
     public void requestTetheredInterface(ITetheredInterfaceCallback callback) {
@@ -307,7 +309,7 @@
                 ipConfiguration = createDefaultIpConfiguration();
             }
 
-            Log.d(TAG, "Started tracking interface " + iface);
+            Log.d(TAG, "Tracking interface in client mode: " + iface);
             mFactory.addInterface(iface, hwAddress, nc, ipConfiguration);
         } else {
             maybeUpdateServerModeInterfaceState(iface, true);
@@ -349,6 +351,9 @@
     private void maybeUpdateServerModeInterfaceState(String iface, boolean available) {
         if (available == mTetheredInterfaceWasAvailable || !iface.equals(mDefaultInterface)) return;
 
+        Log.d(TAG, (available ? "Tracking" : "No longer tracking")
+                + " interface in server mode: " + iface);
+
         final int pendingCbs = mTetheredInterfaceRequests.beginBroadcast();
         for (int i = 0; i < pendingCbs; i++) {
             ITetheredInterfaceCallback item = mTetheredInterfaceRequests.getBroadcastItem(i);
@@ -363,14 +368,18 @@
     }
 
     private void maybeTrackInterface(String iface) {
-        if (DBG) Log.i(TAG, "maybeTrackInterface " + iface);
-        // If we don't already track this interface, and if this interface matches
-        // our regex, start tracking it.
-        if (!iface.matches(mIfaceMatch) || mFactory.hasInterface(iface)
-                || iface.equals(mDefaultInterface)) {
+        if (!iface.matches(mIfaceMatch)) {
             return;
         }
 
+        // If we don't already track this interface, and if this interface matches
+        // our regex, start tracking it.
+        if (mFactory.hasInterface(iface) || iface.equals(mDefaultInterface)) {
+            if (DBG) Log.w(TAG, "Ignoring already-tracked interface " + iface);
+            return;
+        }
+        if (DBG) Log.i(TAG, "maybeTrackInterface: " + iface);
+
         // TODO: avoid making an interface default if it has configured NetworkCapabilities.
         if (mDefaultInterface == null) {
             mDefaultInterface = iface;