Merge "Register callback and receiver after tethering is created"

This commit is contained in:
Mark Chien
2020-03-27 08:31:11 +00:00
committed by Gerrit Code Review
3 changed files with 18 additions and 15 deletions

View File

@@ -307,28 +307,22 @@ public class Tethering {
userManager, this, mNotificationUpdater); userManager, this, mNotificationUpdater);
mExecutor = new TetheringThreadExecutor(mHandler); mExecutor = new TetheringThreadExecutor(mHandler);
mActiveDataSubIdListener = new ActiveDataSubIdListener(mExecutor); mActiveDataSubIdListener = new ActiveDataSubIdListener(mExecutor);
mNetdCallback = new NetdCallback();
// Load tethering configuration. // Load tethering configuration.
updateConfiguration(); updateConfiguration();
// NetdCallback should be registered after updateConfiguration() to ensure }
// TetheringConfiguration is created.
mNetdCallback = new NetdCallback(); /**
* Start to register callbacks.
* Call this function when tethering is ready to handle callback events.
*/
public void startStateMachineUpdaters() {
try { try {
mNetd.registerUnsolicitedEventListener(mNetdCallback); mNetd.registerUnsolicitedEventListener(mNetdCallback);
} catch (RemoteException e) { } catch (RemoteException e) {
mLog.e("Unable to register netd UnsolicitedEventListener"); mLog.e("Unable to register netd UnsolicitedEventListener");
} }
startStateMachineUpdaters(mHandler);
startTrackDefaultNetwork();
final WifiManager wifiManager = getWifiManager();
if (wifiManager != null) {
wifiManager.registerSoftApCallback(mExecutor, new TetheringSoftApCallback());
}
}
private void startStateMachineUpdaters(Handler handler) {
mCarrierConfigChange.startListening(); mCarrierConfigChange.startListening();
mContext.getSystemService(TelephonyManager.class).listen(mActiveDataSubIdListener, mContext.getSystemService(TelephonyManager.class).listen(mActiveDataSubIdListener,
PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
@@ -341,7 +335,14 @@ public class Tethering {
filter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); filter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
filter.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED); filter.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED);
filter.addAction(ACTION_RESTRICT_BACKGROUND_CHANGED); filter.addAction(ACTION_RESTRICT_BACKGROUND_CHANGED);
mContext.registerReceiver(mStateReceiver, filter, null, handler); mContext.registerReceiver(mStateReceiver, filter, null, mHandler);
final WifiManager wifiManager = getWifiManager();
if (wifiManager != null) {
wifiManager.registerSoftApCallback(mExecutor, new TetheringSoftApCallback());
}
startTrackDefaultNetwork();
} }
private class TetheringThreadExecutor implements Executor { private class TetheringThreadExecutor implements Executor {

View File

@@ -80,6 +80,7 @@ public class TetheringService extends Service {
mContext = mDeps.getContext(); mContext = mDeps.getContext();
mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
mTethering = makeTethering(mDeps); mTethering = makeTethering(mDeps);
mTethering.startStateMachineUpdaters();
} }
/** /**

View File

@@ -484,6 +484,7 @@ public class TetheringTest {
mServiceContext.registerReceiver(mBroadcastReceiver, mServiceContext.registerReceiver(mBroadcastReceiver,
new IntentFilter(ACTION_TETHER_STATE_CHANGED)); new IntentFilter(ACTION_TETHER_STATE_CHANGED));
mTethering = makeTethering(); mTethering = makeTethering();
mTethering.startStateMachineUpdaters();
verify(mStatsManager, times(1)).registerNetworkStatsProvider(anyString(), any()); verify(mStatsManager, times(1)).registerNetworkStatsProvider(anyString(), any());
verify(mNetd).registerUnsolicitedEventListener(any()); verify(mNetd).registerUnsolicitedEventListener(any());
final ArgumentCaptor<PhoneStateListener> phoneListenerCaptor = final ArgumentCaptor<PhoneStateListener> phoneListenerCaptor =