Merge "Stop unnecessary tethering reconfigurations"

This commit is contained in:
Treehugger Robot
2017-07-12 17:35:15 +00:00
committed by Gerrit Code Review
2 changed files with 12 additions and 3 deletions

View File

@@ -252,6 +252,12 @@ public class Tethering extends BaseNetworkObserver {
mUpstreamNetworkMonitor.updateMobileRequiresDun(mConfig.isDunRequired); mUpstreamNetworkMonitor.updateMobileRequiresDun(mConfig.isDunRequired);
} }
private void maybeUpdateConfiguration() {
final int dunCheck = TetheringConfiguration.checkDunRequired(mContext);
if (dunCheck == mConfig.dunCheck) return;
updateConfiguration();
}
@Override @Override
public void interfaceStatusChanged(String iface, boolean up) { public void interfaceStatusChanged(String iface, boolean up) {
// Never called directly: only called from interfaceLinkStateChanged. // Never called directly: only called from interfaceLinkStateChanged.
@@ -1273,7 +1279,9 @@ public class Tethering extends BaseNetworkObserver {
} }
protected void chooseUpstreamType(boolean tryCell) { protected void chooseUpstreamType(boolean tryCell) {
updateConfiguration(); // TODO - remove? // We rebuild configuration on ACTION_CONFIGURATION_CHANGED, but we
// do not currently know how to watch for changes in DUN settings.
maybeUpdateConfiguration();
final NetworkState ns = mUpstreamNetworkMonitor.selectPreferredUpstreamType( final NetworkState ns = mUpstreamNetworkMonitor.selectPreferredUpstreamType(
mConfig.preferredUpstreamIfaceTypes); mConfig.preferredUpstreamIfaceTypes);

View File

@@ -70,6 +70,7 @@ public class TetheringConfiguration {
public final String[] tetherableUsbRegexs; public final String[] tetherableUsbRegexs;
public final String[] tetherableWifiRegexs; public final String[] tetherableWifiRegexs;
public final String[] tetherableBluetoothRegexs; public final String[] tetherableBluetoothRegexs;
public final int dunCheck;
public final boolean isDunRequired; public final boolean isDunRequired;
public final Collection<Integer> preferredUpstreamIfaceTypes; public final Collection<Integer> preferredUpstreamIfaceTypes;
public final String[] dhcpRanges; public final String[] dhcpRanges;
@@ -85,7 +86,7 @@ public class TetheringConfiguration {
tetherableBluetoothRegexs = ctx.getResources().getStringArray( tetherableBluetoothRegexs = ctx.getResources().getStringArray(
com.android.internal.R.array.config_tether_bluetooth_regexs); com.android.internal.R.array.config_tether_bluetooth_regexs);
final int dunCheck = checkDunRequired(ctx); dunCheck = checkDunRequired(ctx);
configLog.log("DUN check returned: " + dunCheckString(dunCheck)); configLog.log("DUN check returned: " + dunCheckString(dunCheck));
preferredUpstreamIfaceTypes = getUpstreamIfaceTypes(ctx, dunCheck); preferredUpstreamIfaceTypes = getUpstreamIfaceTypes(ctx, dunCheck);
@@ -172,7 +173,7 @@ public class TetheringConfiguration {
return upstreamNames; return upstreamNames;
} }
private static int checkDunRequired(Context ctx) { public static int checkDunRequired(Context ctx) {
final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(TELEPHONY_SERVICE); final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(TELEPHONY_SERVICE);
return (tm != null) ? tm.getTetherApnRequired() : DUN_UNSPECIFIED; return (tm != null) ? tm.getTetherApnRequired() : DUN_UNSPECIFIED;
} }