Remove the legacy config_ethernet_iface_regex from Settings.
Bug: 214348333 Test: m Settings Test: manually verify that device can access the Internet via Ethernet Test: manually verify that device can share the Internet via Ethernet tethering Test: make RunSettingsRoboTests ROBOTEST_FILTER=TetherEnablerTest Change-Id: I822ff60ee8be63ff0c518d2972ad8b30dfacadcd
This commit is contained in:
@@ -31,6 +31,8 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.EthernetManager;
|
||||||
|
import android.net.IpConfiguration;
|
||||||
import android.net.TetheringManager;
|
import android.net.TetheringManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -40,6 +42,7 @@ import android.os.UserManager;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.lifecycle.Lifecycle;
|
import androidx.lifecycle.Lifecycle;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
@@ -53,6 +56,7 @@ import java.lang.annotation.Retention;
|
|||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,6 +85,16 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
private static final String TAG = "TetherEnabler";
|
private static final String TAG = "TetherEnabler";
|
||||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||||
|
|
||||||
|
private final class EthernetListener implements EthernetManager.InterfaceStateListener {
|
||||||
|
public void onInterfaceStateChanged(@NonNull String iface, int state, int role,
|
||||||
|
@NonNull IpConfiguration configuration) {
|
||||||
|
if (state == EthernetManager.STATE_LINK_UP) {
|
||||||
|
mAvailableInterfaces.put(iface, configuration);
|
||||||
|
} else {
|
||||||
|
mAvailableInterfaces.remove(iface, configuration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Retention(SOURCE)
|
@Retention(SOURCE)
|
||||||
@IntDef(
|
@IntDef(
|
||||||
@@ -108,7 +122,6 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
private final TetheringManager mTetheringManager;
|
private final TetheringManager mTetheringManager;
|
||||||
private final UserManager mUserManager;
|
private final UserManager mUserManager;
|
||||||
private final String mEthernetRegex;
|
|
||||||
private final DataSaverBackend mDataSaverBackend;
|
private final DataSaverBackend mDataSaverBackend;
|
||||||
private boolean mDataSaverEnabled;
|
private boolean mDataSaverEnabled;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -121,6 +134,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
private final AtomicReference<BluetoothPan> mBluetoothPan;
|
private final AtomicReference<BluetoothPan> mBluetoothPan;
|
||||||
private boolean mBluetoothEnableForTether;
|
private boolean mBluetoothEnableForTether;
|
||||||
private final BluetoothAdapter mBluetoothAdapter;
|
private final BluetoothAdapter mBluetoothAdapter;
|
||||||
|
private final EthernetManager mEthernetManager;
|
||||||
|
private final EthernetManager.InterfaceStateListener mEthernetListener = new EthernetListener();
|
||||||
|
private final ConcurrentHashMap<String, IpConfiguration> mAvailableInterfaces =
|
||||||
|
new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public TetherEnabler(Context context, SwitchWidgetController switchWidgetController,
|
public TetherEnabler(Context context, SwitchWidgetController switchWidgetController,
|
||||||
AtomicReference<BluetoothPan> bluetoothPan) {
|
AtomicReference<BluetoothPan> bluetoothPan) {
|
||||||
@@ -134,11 +151,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||||
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
mBluetoothPan = bluetoothPan;
|
mBluetoothPan = bluetoothPan;
|
||||||
mEthernetRegex =
|
|
||||||
context.getString(com.android.internal.R.string.config_ethernet_iface_regex);
|
|
||||||
mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled();
|
mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled();
|
||||||
mListeners = new ArrayList<>();
|
mListeners = new ArrayList<>();
|
||||||
mMainThreadHandler = new Handler(Looper.getMainLooper());
|
mMainThreadHandler = new Handler(Looper.getMainLooper());
|
||||||
|
mEthernetManager = context.getSystemService(EthernetManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnLifecycleEvent(Lifecycle.Event.ON_START)
|
@OnLifecycleEvent(Lifecycle.Event.ON_START)
|
||||||
@@ -163,6 +179,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
|
|
||||||
mOnStartTetheringCallback = new OnStartTetheringCallback(this);
|
mOnStartTetheringCallback = new OnStartTetheringCallback(this);
|
||||||
updateState(null/*tethered*/);
|
updateState(null/*tethered*/);
|
||||||
|
if (mEthernetManager != null) {
|
||||||
|
mEthernetManager.addInterfaceStateListener(r -> mMainThreadHandler.post(r),
|
||||||
|
mEthernetListener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
|
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
|
||||||
@@ -173,6 +193,9 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
mContext.unregisterReceiver(mTetherChangeReceiver);
|
mContext.unregisterReceiver(mTetherChangeReceiver);
|
||||||
mTetheringManager.unregisterTetheringEventCallback(mTetheringEventCallback);
|
mTetheringManager.unregisterTetheringEventCallback(mTetheringEventCallback);
|
||||||
mTetheringEventCallback = null;
|
mTetheringEventCallback = null;
|
||||||
|
if (mEthernetManager != null) {
|
||||||
|
mEthernetManager.removeInterfaceStateListener(mEthernetListener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addListener(OnTetherStateUpdateListener listener) {
|
public void addListener(OnTetherStateUpdateListener listener) {
|
||||||
@@ -246,7 +269,7 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
|
|||||||
tetherState |= TETHERING_USB_ON;
|
tetherState |= TETHERING_USB_ON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (s.matches(mEthernetRegex)) {
|
if (mAvailableInterfaces.containsKey(s)) {
|
||||||
tetherState |= TETHERING_ETHERNET_ON;
|
tetherState |= TETHERING_ETHERNET_ON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user