diff options
Diffstat (limited to 'com/android/server/connectivity/Tethering.java')
-rw-r--r-- | com/android/server/connectivity/Tethering.java | 56 |
1 files changed, 23 insertions, 33 deletions
diff --git a/com/android/server/connectivity/Tethering.java b/com/android/server/connectivity/Tethering.java index d37dd185..df6a6f8b 100644 --- a/com/android/server/connectivity/Tethering.java +++ b/com/android/server/connectivity/Tethering.java @@ -249,6 +249,7 @@ public class Tethering extends BaseNetworkObserver { "CarrierConfigChangeListener", mContext, smHandler, filter, (Intent ignored) -> { mLog.log("OBSERVED carrier config change"); + updateConfiguration(); reevaluateSimCardProvisioning(); }); // TODO: Remove SimChangeListener altogether. For now, we retain it @@ -261,28 +262,35 @@ public class Tethering extends BaseNetworkObserver { }); mStateReceiver = new StateReceiver(); - filter = new IntentFilter(); + + // Load tethering configuration. + updateConfiguration(); + + startStateMachineUpdaters(); + } + + private void startStateMachineUpdaters() { + mCarrierConfigChange.startListening(); + + final Handler handler = mTetherMasterSM.getHandler(); + IntentFilter filter = new IntentFilter(); filter.addAction(UsbManager.ACTION_USB_STATE); filter.addAction(CONNECTIVITY_ACTION); filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION); filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); - mContext.registerReceiver(mStateReceiver, filter, null, smHandler); + mContext.registerReceiver(mStateReceiver, filter, null, handler); filter = new IntentFilter(); filter.addAction(Intent.ACTION_MEDIA_SHARED); filter.addAction(Intent.ACTION_MEDIA_UNSHARED); filter.addDataScheme("file"); - mContext.registerReceiver(mStateReceiver, filter, null, smHandler); + mContext.registerReceiver(mStateReceiver, filter, null, handler); - UserManagerInternal userManager = LocalServices.getService(UserManagerInternal.class); - - // this check is useful only for some unit tests; example: ConnectivityServiceTest - if (userManager != null) { - userManager.addUserRestrictionsListener(new TetheringUserRestrictionListener(this)); + final UserManagerInternal umi = LocalServices.getService(UserManagerInternal.class); + // This check is useful only for some unit tests; example: ConnectivityServiceTest. + if (umi != null) { + umi.addUserRestrictionsListener(new TetheringUserRestrictionListener(this)); } - - // load device config info - updateConfiguration(); } private WifiManager getWifiManager() { @@ -384,17 +392,15 @@ public class Tethering extends BaseNetworkObserver { */ @VisibleForTesting protected boolean isTetherProvisioningRequired() { - String[] provisionApp = mContext.getResources().getStringArray( - com.android.internal.R.array.config_mobile_hotspot_provision_app); + final TetheringConfiguration cfg = mConfig; if (mSystemProperties.getBoolean(DISABLE_PROVISIONING_SYSPROP_KEY, false) - || provisionApp == null) { + || cfg.provisioningApp.length == 0) { return false; } - if (carrierConfigAffirmsEntitlementCheckNotRequired()) { return false; } - return (provisionApp.length == 2); + return (cfg.provisioningApp.length == 2); } // The logic here is aimed solely at confirming that a CarrierConfig exists @@ -417,20 +423,6 @@ public class Tethering extends BaseNetworkObserver { return !isEntitlementCheckRequired; } - // Used by the SIM card change observation code. - // TODO: De-duplicate above code. - private boolean hasMobileHotspotProvisionApp() { - try { - if (!mContext.getResources().getString(com.android.internal.R.string. - config_mobile_hotspot_provision_app_no_ui).isEmpty()) { - Log.d(TAG, "re-evaluate provisioning"); - return true; - } - } catch (Resources.NotFoundException e) {} - Log.d(TAG, "no prov-check needed for new SIM"); - return false; - } - /** * Enables or disables tethering for the given type. This should only be called once * provisioning has succeeded or is not necessary. It will also schedule provisioning rechecks @@ -1187,7 +1179,7 @@ public class Tethering extends BaseNetworkObserver { } private void reevaluateSimCardProvisioning() { - if (!hasMobileHotspotProvisionApp()) return; + if (!mConfig.hasMobileHotspotProvisionApp()) return; if (carrierConfigAffirmsEntitlementCheckNotRequired()) return; ArrayList<Integer> tethered = new ArrayList<>(); @@ -1546,7 +1538,6 @@ public class Tethering extends BaseNetworkObserver { return; } - mCarrierConfigChange.startListening(); mSimChange.startListening(); mUpstreamNetworkMonitor.start(); @@ -1564,7 +1555,6 @@ public class Tethering extends BaseNetworkObserver { mOffload.stop(); mUpstreamNetworkMonitor.stop(); mSimChange.stopListening(); - mCarrierConfigChange.stopListening(); notifyDownstreamsOfNewUpstreamIface(null); handleNewUpstreamNetworkState(null); } |