Loading src/java/com/android/internal/telephony/TelephonyComponentFactory.java +38 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetworkController; import com.android.internal.telephony.data.DataProfileManager; import com.android.internal.telephony.data.DataServiceManager; import com.android.internal.telephony.data.DataSettingsManager; import com.android.internal.telephony.data.LinkBandwidthEstimator; import com.android.internal.telephony.data.PhoneSwitcher; import com.android.internal.telephony.dataconnection.DataEnabledSettings; Loading Loading @@ -488,4 +491,39 @@ public class TelephonyComponentFactory { public DataNetworkController makeDataNetworkController(Phone phone, Looper looper) { return new DataNetworkController(phone, looper); } /** * Create data profile manager. * * @param phone The phone instance. * @param dataNetworkController Data network controller instance. * @param dataServiceManager Data service manager instance. * @param looper The looper to be used by the handler. Currently the handler thread is the phone * process's main thread. * @param callback Callback for passing events back to data network controller. * @return The data profile manager instance. */ public @NonNull DataProfileManager makeDataProfileManager(@NonNull Phone phone, @NonNull DataNetworkController dataNetworkController, @NonNull DataServiceManager dataServiceManager, @NonNull Looper looper, @NonNull DataProfileManager.DataProfileManagerCallback callback) { return new DataProfileManager(phone, dataNetworkController, dataServiceManager, looper, callback); } /** * Create data settings manager. * * @param phone The phone instance. * @param dataNetworkController Data network controller instance. * @param looper The looper to be used by the handler. Currently the handler thread is the phone * process's main thread. * @param callback Callback for passing events back to data network controller. * @return The data settings manager instance. */ public @NonNull DataSettingsManager makeDataSettingsManager(@NonNull Phone phone, @NonNull DataNetworkController dataNetworkController, @NonNull Looper looper, @NonNull DataSettingsManager.DataSettingsManagerCallback callback) { return new DataSettingsManager(phone, dataNetworkController, looper, callback); } } src/java/com/android/internal/telephony/data/DataNetworkController.java +47 −39 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.SubscriptionInfoUpdater; import com.android.internal.telephony.TelephonyComponentFactory; import com.android.internal.telephony.data.AccessNetworksManager.AccessNetworksManagerCallback; import com.android.internal.telephony.data.DataEvaluation.DataAllowedReason; import com.android.internal.telephony.data.DataEvaluation.DataDisallowedReason; Loading Loading @@ -714,15 +715,18 @@ public class DataNetworkController extends Handler { AccessNetworkConstants.TRANSPORT_TYPE_WLAN)); } mDataConfigManager = new DataConfigManager(mPhone, looper); mDataSettingsManager = new DataSettingsManager(mPhone, this, looper, mDataSettingsManager = TelephonyComponentFactory.getInstance().inject( DataSettingsManager.class.getName()) .makeDataSettingsManager(mPhone, this, looper, new DataSettingsManagerCallback(this::post) { @Override public void onDataEnabledChanged(boolean enabled, @TelephonyManager.DataEnabledChangedReason int reason) { // If mobile data is enabled by the user, evaluate the unsatisfied network // requests and then attempt to setup data networks to satisfy them. // If mobile data is disabled, evaluate the existing data networks and // see if they need to be torn down. // If mobile data is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to // satisfy them. If mobile data is disabled, evaluate the existing // data networks and see if they need to be torn down. logl("onDataEnabledChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS Loading @@ -731,10 +735,10 @@ public class DataNetworkController extends Handler { } @Override public void onDataRoamingEnabledChanged(boolean enabled) { // If data roaming is enabled by the user, evaluate the unsatisfied network // requests and then attempt to setup data networks to satisfy them. // If data roaming is disabled, evaluate the existing data networks and // see if they need to be torn down. // If data roaming is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to // satisfy them. If data roaming is disabled, evaluate the existing // data networks and see if they need to be torn down. logl("onDataRoamingEnabledChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS Loading @@ -742,14 +746,18 @@ public class DataNetworkController extends Handler { DataEvaluationReason.ROAMING_ENABLED_CHANGED)); } }); mDataProfileManager = new DataProfileManager(mPhone, this, mDataServiceManagers mDataProfileManager = TelephonyComponentFactory.getInstance().inject( DataProfileManager.class.getName()) .makeDataProfileManager(mPhone, this, mDataServiceManagers .get(AccessNetworkConstants.TRANSPORT_TYPE_WWAN), looper, new DataProfileManagerCallback(this::post) { @Override public void onDataProfilesChanged() { sendMessage(obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, sendMessage( obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, DataEvaluationReason.DATA_PROFILES_CHANGED)); sendMessage(obtainMessage(EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS, sendMessage( obtainMessage(EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS, DataEvaluationReason.DATA_PROFILES_CHANGED)); } }); Loading tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -606,6 +606,10 @@ public abstract class TelephonyTest { .makeEriManager(nullable(Phone.class), anyInt()); doReturn(mLinkBandwidthEstimator).when(mTelephonyComponentFactory) .makeLinkBandwidthEstimator(nullable(Phone.class)); doReturn(mDataProfileManager).when(mTelephonyComponentFactory) .makeDataProfileManager(any(Phone.class), any(DataNetworkController.class), any(DataServiceManager.class), any(Looper.class), any(DataProfileManager.DataProfileManagerCallback.class)); //mPhone doReturn(mContext).when(mPhone).getContext(); Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.content.Intent; Loading Loading @@ -82,6 +83,7 @@ import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.telephony.ISub; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.data.DataNetworkController.HandoverRule; Loading Loading @@ -374,6 +376,9 @@ public class DataNetworkControllerTest extends TelephonyTest { mIsub = Mockito.mock(ISub.class); mMockedDataNetworkControllerCallback = Mockito.mock(DataNetworkControllerCallback.class); mMockedDataRetryManagerCallback = Mockito.mock(DataRetryManagerCallback.class); when(mTelephonyComponentFactory.makeDataSettingsManager(any(Phone.class), any(DataNetworkController.class), any(Looper.class), any(DataSettingsManager.DataSettingsManagerCallback.class))).thenCallRealMethod(); initializeConfig(); doReturn(true).when(mPhone).isUsingNewDataStack(); Loading Loading
src/java/com/android/internal/telephony/TelephonyComponentFactory.java +38 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetworkController; import com.android.internal.telephony.data.DataProfileManager; import com.android.internal.telephony.data.DataServiceManager; import com.android.internal.telephony.data.DataSettingsManager; import com.android.internal.telephony.data.LinkBandwidthEstimator; import com.android.internal.telephony.data.PhoneSwitcher; import com.android.internal.telephony.dataconnection.DataEnabledSettings; Loading Loading @@ -488,4 +491,39 @@ public class TelephonyComponentFactory { public DataNetworkController makeDataNetworkController(Phone phone, Looper looper) { return new DataNetworkController(phone, looper); } /** * Create data profile manager. * * @param phone The phone instance. * @param dataNetworkController Data network controller instance. * @param dataServiceManager Data service manager instance. * @param looper The looper to be used by the handler. Currently the handler thread is the phone * process's main thread. * @param callback Callback for passing events back to data network controller. * @return The data profile manager instance. */ public @NonNull DataProfileManager makeDataProfileManager(@NonNull Phone phone, @NonNull DataNetworkController dataNetworkController, @NonNull DataServiceManager dataServiceManager, @NonNull Looper looper, @NonNull DataProfileManager.DataProfileManagerCallback callback) { return new DataProfileManager(phone, dataNetworkController, dataServiceManager, looper, callback); } /** * Create data settings manager. * * @param phone The phone instance. * @param dataNetworkController Data network controller instance. * @param looper The looper to be used by the handler. Currently the handler thread is the phone * process's main thread. * @param callback Callback for passing events back to data network controller. * @return The data settings manager instance. */ public @NonNull DataSettingsManager makeDataSettingsManager(@NonNull Phone phone, @NonNull DataNetworkController dataNetworkController, @NonNull Looper looper, @NonNull DataSettingsManager.DataSettingsManagerCallback callback) { return new DataSettingsManager(phone, dataNetworkController, looper, callback); } }
src/java/com/android/internal/telephony/data/DataNetworkController.java +47 −39 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.SubscriptionInfoUpdater; import com.android.internal.telephony.TelephonyComponentFactory; import com.android.internal.telephony.data.AccessNetworksManager.AccessNetworksManagerCallback; import com.android.internal.telephony.data.DataEvaluation.DataAllowedReason; import com.android.internal.telephony.data.DataEvaluation.DataDisallowedReason; Loading Loading @@ -714,15 +715,18 @@ public class DataNetworkController extends Handler { AccessNetworkConstants.TRANSPORT_TYPE_WLAN)); } mDataConfigManager = new DataConfigManager(mPhone, looper); mDataSettingsManager = new DataSettingsManager(mPhone, this, looper, mDataSettingsManager = TelephonyComponentFactory.getInstance().inject( DataSettingsManager.class.getName()) .makeDataSettingsManager(mPhone, this, looper, new DataSettingsManagerCallback(this::post) { @Override public void onDataEnabledChanged(boolean enabled, @TelephonyManager.DataEnabledChangedReason int reason) { // If mobile data is enabled by the user, evaluate the unsatisfied network // requests and then attempt to setup data networks to satisfy them. // If mobile data is disabled, evaluate the existing data networks and // see if they need to be torn down. // If mobile data is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to // satisfy them. If mobile data is disabled, evaluate the existing // data networks and see if they need to be torn down. logl("onDataEnabledChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS Loading @@ -731,10 +735,10 @@ public class DataNetworkController extends Handler { } @Override public void onDataRoamingEnabledChanged(boolean enabled) { // If data roaming is enabled by the user, evaluate the unsatisfied network // requests and then attempt to setup data networks to satisfy them. // If data roaming is disabled, evaluate the existing data networks and // see if they need to be torn down. // If data roaming is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to // satisfy them. If data roaming is disabled, evaluate the existing // data networks and see if they need to be torn down. logl("onDataRoamingEnabledChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS Loading @@ -742,14 +746,18 @@ public class DataNetworkController extends Handler { DataEvaluationReason.ROAMING_ENABLED_CHANGED)); } }); mDataProfileManager = new DataProfileManager(mPhone, this, mDataServiceManagers mDataProfileManager = TelephonyComponentFactory.getInstance().inject( DataProfileManager.class.getName()) .makeDataProfileManager(mPhone, this, mDataServiceManagers .get(AccessNetworkConstants.TRANSPORT_TYPE_WWAN), looper, new DataProfileManagerCallback(this::post) { @Override public void onDataProfilesChanged() { sendMessage(obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, sendMessage( obtainMessage(EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, DataEvaluationReason.DATA_PROFILES_CHANGED)); sendMessage(obtainMessage(EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS, sendMessage( obtainMessage(EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS, DataEvaluationReason.DATA_PROFILES_CHANGED)); } }); Loading
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -606,6 +606,10 @@ public abstract class TelephonyTest { .makeEriManager(nullable(Phone.class), anyInt()); doReturn(mLinkBandwidthEstimator).when(mTelephonyComponentFactory) .makeLinkBandwidthEstimator(nullable(Phone.class)); doReturn(mDataProfileManager).when(mTelephonyComponentFactory) .makeDataProfileManager(any(Phone.class), any(DataNetworkController.class), any(DataServiceManager.class), any(Looper.class), any(DataProfileManager.DataProfileManagerCallback.class)); //mPhone doReturn(mContext).when(mPhone).getContext(); Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.content.Intent; Loading Loading @@ -82,6 +83,7 @@ import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.telephony.ISub; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.data.DataNetworkController.HandoverRule; Loading Loading @@ -374,6 +376,9 @@ public class DataNetworkControllerTest extends TelephonyTest { mIsub = Mockito.mock(ISub.class); mMockedDataNetworkControllerCallback = Mockito.mock(DataNetworkControllerCallback.class); mMockedDataRetryManagerCallback = Mockito.mock(DataRetryManagerCallback.class); when(mTelephonyComponentFactory.makeDataSettingsManager(any(Phone.class), any(DataNetworkController.class), any(Looper.class), any(DataSettingsManager.DataSettingsManagerCallback.class))).thenCallRealMethod(); initializeConfig(); doReturn(true).when(mPhone).isUsingNewDataStack(); Loading