Merge "Remove the legacy config_ethernet_iface_regex from Settings." am: 73d83b69d3 am: a8ff1f723c am: d60998396a

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2052707

Change-Id: I2e9854b47e7081eb2f0340f695d746fb80caf8a0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Xiao Ma
2022-04-14 01:57:11 +00:00
committed by Automerger Merge Worker

View File

@@ -31,6 +31,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.EthernetManager;
import android.net.IpConfiguration;
import android.net.TetheringManager;
import android.net.wifi.WifiManager;
import android.os.Handler;
@@ -40,6 +42,7 @@ import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
@@ -53,6 +56,7 @@ import java.lang.annotation.Retention;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
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 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)
@IntDef(
@@ -108,7 +122,6 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
private final ConnectivityManager mConnectivityManager;
private final TetheringManager mTetheringManager;
private final UserManager mUserManager;
private final String mEthernetRegex;
private final DataSaverBackend mDataSaverBackend;
private boolean mDataSaverEnabled;
@VisibleForTesting
@@ -121,6 +134,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
private final AtomicReference<BluetoothPan> mBluetoothPan;
private boolean mBluetoothEnableForTether;
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,
AtomicReference<BluetoothPan> bluetoothPan) {
@@ -134,11 +151,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothPan = bluetoothPan;
mEthernetRegex =
context.getString(com.android.internal.R.string.config_ethernet_iface_regex);
mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled();
mListeners = new ArrayList<>();
mMainThreadHandler = new Handler(Looper.getMainLooper());
mEthernetManager = context.getSystemService(EthernetManager.class);
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
@@ -163,6 +179,10 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
mOnStartTetheringCallback = new OnStartTetheringCallback(this);
updateState(null/*tethered*/);
if (mEthernetManager != null) {
mEthernetManager.addInterfaceStateListener(r -> mMainThreadHandler.post(r),
mEthernetListener);
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
@@ -173,6 +193,9 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
mContext.unregisterReceiver(mTetherChangeReceiver);
mTetheringManager.unregisterTetheringEventCallback(mTetheringEventCallback);
mTetheringEventCallback = null;
if (mEthernetManager != null) {
mEthernetManager.removeInterfaceStateListener(mEthernetListener);
}
}
public void addListener(OnTetherStateUpdateListener listener) {
@@ -246,7 +269,7 @@ public class TetherEnabler implements SwitchWidgetController.OnSwitchChangeListe
tetherState |= TETHERING_USB_ON;
}
}
if (s.matches(mEthernetRegex)) {
if (mAvailableInterfaces.containsKey(s)) {
tetherState |= TETHERING_ETHERNET_ON;
}
}