Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +22 −20 Original line number Diff line number Diff line Loading @@ -309,8 +309,10 @@ public class GsmCdmaPhone extends Phone { mAccessNetworksManager = mTelephonyComponentFactory .inject(AccessNetworksManager.class.getName()) .makeAccessNetworksManager(this); if (!isUsingNewDataStack()) { mTransportManager = mTelephonyComponentFactory.inject(TransportManager.class.getName()) .makeTransportManager(this); } // SST/DSM depends on SSC, so SSC is instanced before SST/DSM mSignalStrengthController = mTelephonyComponentFactory.inject( SignalStrengthController.class.getName()).makeSignalStrengthController(this); Loading @@ -319,8 +321,10 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); if (!isUsingNewDataStack()) { mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); } mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); Loading @@ -329,19 +333,19 @@ public class GsmCdmaPhone extends Phone { mDisplayInfoController = mTelephonyComponentFactory.inject( DisplayInfoController.class.getName()).makeDisplayInfoController(this); if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } else { // DcTracker uses ServiceStateTracker and DisplayInfoController so needs to be created // after they are instantiated for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { DcTracker dcTracker = mTelephonyComponentFactory.inject(DcTracker.class.getName()) .makeDcTracker(this, transport); mDcTrackers.put(transport, dcTracker); mTransportManager.registerDataThrottler(dcTracker.getDataThrottler()); mAccessNetworksManager.registerDataThrottler(dcTracker.getDataThrottler()); } if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) Loading Loading @@ -706,12 +710,6 @@ public class GsmCdmaPhone extends Phone { return mPendingMMIs; } private @NonNull DcTracker getActiveDcTrackerForApn(@NonNull String apnType) { int currentTransport = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); return getDcTracker(currentTransport); } @Override public boolean isDataSuspended() { return mCT.mState != PhoneConstants.State.IDLE && !mSST.isConcurrentVoiceAndDataAllowed(); Loading @@ -737,7 +735,7 @@ public class GsmCdmaPhone extends Phone { ret = PhoneConstants.DataState.DISCONNECTED; } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ int currentTransport = mTransportManager.getCurrentTransport( int currentTransport = mAccessNetworksManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(currentTransport) != null) { switch (getDcTracker(currentTransport).getState(apnType)) { Loading @@ -764,6 +762,10 @@ public class GsmCdmaPhone extends Phone { @Override public DataActivityState getDataActivityState() { if (isUsingNewDataStack()) { // TODO: Support it correctly. return DataActivityState.NONE; } DataActivityState ret = DataActivityState.NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE Loading src/java/com/android/internal/telephony/Phone.java +20 −105 Original line number Diff line number Diff line Loading @@ -24,8 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.LinkProperties; import android.net.NetworkCapabilities; import android.net.Uri; import android.os.AsyncResult; import android.os.Build; Loading @@ -51,6 +49,7 @@ import android.telephony.CellInfo; import android.telephony.ClientRequestStats; import android.telephony.ImsiEncryptionInfo; import android.telephony.LinkCapacityEstimate; import android.telephony.NetworkRegistrationInfo; import android.telephony.PhoneStateListener; import android.telephony.PhysicalChannelConfig; import android.telephony.PreciseDataConnectionState; Loading Loading @@ -114,7 +113,6 @@ import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -3576,31 +3574,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mRadioOffOrNotAvailableRegistrants.remove(h); } /** * Returns an array of string identifiers for the APN types serviced by the * currently active subscription. * * @return The string array of APN types. Return null if no active APN types. */ @UnsupportedAppUsage @NonNull public String[] getActiveApnTypes() { if (mTransportManager == null || mDcTrackers == null) { Rlog.e(LOG_TAG, "Invalid state for Transport/DcTrackers"); return new String[0]; } Set<String> activeApnTypes = new HashSet<String>(); for (int transportType : mTransportManager.getAvailableTransports()) { DcTracker dct = getDcTracker(transportType); if (dct == null) continue; // TODO: should this ever happen? activeApnTypes.addAll(Arrays.asList(dct.getActiveApnTypes())); } return activeApnTypes.toArray(new String[activeApnTypes.size()]); } /** * Location to an updatable file listing carrier provisioning urls. * An example: Loading Loading @@ -3697,6 +3670,15 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return true if there is a matching DUN APN. */ public boolean hasMatchedTetherApnSetting() { if (isUsingNewDataStack()) { NetworkRegistrationInfo nrs = getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nrs != null) { return getDataNetworkController().getDataProfileManager() .isTetheringDataProfileExisting(nrs.getAccessNetworkTechnology()); } return false; } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { return getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .hasMatchedTetherApnSetting(); Loading @@ -3704,50 +3686,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return false; } /** * Returns string for the active APN host. * @return type as a string or null if none. */ public String getActiveApnHost(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getActiveApnString(apnType); } } return null; } /** * Return the LinkProperties for the named apn or null if not available */ public LinkProperties getLinkProperties(String apnType) { if (mTransportManager != null) { int transport = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transport) != null) { return getDcTracker(transport).getLinkProperties(apnType); } } return null; } /** * Return the NetworkCapabilities */ public NetworkCapabilities getNetworkCapabilities(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getNetworkCapabilities(apnType); } } return null; } /** * Report on whether data connectivity is allowed for given APN type. * Loading @@ -3767,8 +3705,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return True if data is allowed to be established */ public boolean isDataAllowed(@ApnType int apnType, DataConnectionReasons reasons) { if (mTransportManager != null) { int transport = mTransportManager.getCurrentTransport(apnType); if (mAccessNetworksManager != null) { int transport = mAccessNetworksManager.getCurrentTransport(apnType); if (getDcTracker(transport) != null) { return getDcTracker(transport).isDataAllowed(reasons); } Loading Loading @@ -3968,22 +3906,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return mUiccController.getUiccPort(mPhoneId); } /** * Get P-CSCF address from PCO after data connection is established or modified. * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN */ public String[] getPcscfAddress(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getPcscfAddress(apnType); } } return null; } /** * Set IMS registration state */ Loading Loading @@ -4574,8 +4496,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return True if all data connections are disconnected. */ public boolean areAllDataDisconnected() { if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null && !getDcTracker(transport).areAllDataDisconnected()) { return false; Loading @@ -4587,8 +4509,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { public void registerForAllDataDisconnected(Handler h, int what) { mAllDataDisconnectedRegistrants.addUnique(h, what, null); if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null && !getDcTracker(transport).areAllDataDisconnected()) { getDcTracker(transport).registerForAllDataDisconnected( Loading Loading @@ -4956,7 +4878,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println(" getPhoneName()=" + getPhoneName()); pw.println(" getPhoneType()=" + getPhoneType()); pw.println(" getVoiceMessageCount()=" + getVoiceMessageCount()); pw.println(" getActiveApnTypes()=" + getActiveApnTypes()); pw.println(" needsOtaServiceProvisioning=" + needsOtaServiceProvisioning()); pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); Loading @@ -4976,8 +4897,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println("++++++++++++++++++++++++++++++++"); } if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null) { getDcTracker(transport).dump(fd, pw, args); pw.flush(); Loading Loading @@ -5096,15 +5017,9 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println("++++++++++++++++++++++++++++++++"); } if (isUsingNewDataStack()) { if (mAccessNetworksManager != null) { mAccessNetworksManager.dump(fd, pw, args); } } else { if (mTransportManager != null) { mTransportManager.dump(fd, pw, args); } } if (mCi != null && mCi instanceof RIL) { try { Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +24 −24 Original line number Diff line number Diff line Loading @@ -92,10 +92,10 @@ import com.android.internal.telephony.cdma.EriInfo; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.cdnr.CarrierDisplayNameData; import com.android.internal.telephony.cdnr.CarrierDisplayNameResolver; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetwork; import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback; import com.android.internal.telephony.dataconnection.DataConnection; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.metrics.ServiceStateStats; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; Loading Loading @@ -610,7 +610,7 @@ public class ServiceStateTracker extends Handler { private String mRegistrationDeniedReason; private String mCurrentCarrier = null; private final TransportManager mTransportManager; private final AccessNetworksManager mAccessNetworksManager; private final SparseArray<NetworkRegistrationManager> mRegStateManagers = new SparseArray<>(); /* Last known TAC/LAC */ Loading Loading @@ -658,11 +658,11 @@ public class ServiceStateTracker extends Handler { new android.os.HandlerExecutor(this), mOnSubscriptionsChangedListener); mRestrictedState = new RestrictedState(); mTransportManager = mPhone.getTransportManager(); mAccessNetworksManager = mPhone.getAccessNetworksManager(); mOutOfServiceSS = new ServiceState(); mOutOfServiceSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mOutOfServiceSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); for (int transportType : mTransportManager.getAvailableTransports()) { for (int transportType : mAccessNetworksManager.getAvailableTransports()) { mRegStateManagers.append(transportType, new NetworkRegistrationManager( transportType, phone)); mRegStateManagers.get(transportType).registerForNetworkRegistrationInfoChanged( Loading Loading @@ -744,7 +744,7 @@ public class ServiceStateTracker extends Handler { } // If we are previously in service, we need to notify that we are out of service now. for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mSS != null) { NetworkRegistrationInfo nrs = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, transport); Loading @@ -756,9 +756,9 @@ public class ServiceStateTracker extends Handler { } mSS = new ServiceState(); mSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mNewSS = new ServiceState(); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mLastCellInfoReqTime = 0; mLastCellInfoList = null; mStartedGprsRegCheck = false; Loading Loading @@ -817,7 +817,7 @@ public class ServiceStateTracker extends Handler { // Tell everybody that the registration state and RAT have changed. notifyVoiceRegStateRilRadioTechnologyChanged(); for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { notifyDataRegStateRilRadioTechnologyChanged(transport); } } Loading Loading @@ -2171,7 +2171,7 @@ public class ServiceStateTracker extends Handler { NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // Check if any APN is preferred on IWLAN. boolean isIwlanPreferred = mTransportManager.isAnyApnOnIwlan(); boolean isIwlanPreferred = mAccessNetworksManager.isAnyApnOnIwlan(); serviceState.setIwlanPreferred(isIwlanPreferred); if (wlanPsRegState != null && wlanPsRegState.getAccessNetworkTechnology() Loading Loading @@ -3322,7 +3322,7 @@ public class ServiceStateTracker extends Handler { switch (mCi.getRadioState()) { case TelephonyManager.RADIO_POWER_UNAVAILABLE: mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mPhone.getSignalStrengthController().setSignalStrengthDefaultValues(); mLastNitzData = null; mNitzState.handleNetworkUnavailable(); Loading @@ -3330,7 +3330,7 @@ public class ServiceStateTracker extends Handler { break; case TelephonyManager.RADIO_POWER_OFF: mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), true); mPhone.getSignalStrengthController().setSignalStrengthDefaultValues(); mLastNitzData = null; mNitzState.handleNetworkUnavailable(); Loading Loading @@ -3453,13 +3453,13 @@ public class ServiceStateTracker extends Handler { && mNewSS.getState() != ServiceState.STATE_POWER_OFF; SparseBooleanArray hasDataAttached = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasDataDetached = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasRilDataRadioTechnologyChanged = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasDataRegStateChanged = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); boolean anyDataRegChanged = false; boolean anyDataRatChanged = false; boolean hasAlphaRawChanged = Loading @@ -3467,7 +3467,7 @@ public class ServiceStateTracker extends Handler { || !TextUtils.equals(mSS.getOperatorAlphaShortRaw(), mNewSS.getOperatorAlphaShortRaw()); for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { NetworkRegistrationInfo oldNrs = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, transport); NetworkRegistrationInfo newNrs = mNewSS.getNetworkRegistrationInfo( Loading Loading @@ -3653,7 +3653,7 @@ public class ServiceStateTracker extends Handler { ServiceState oldMergedSS = new ServiceState(mPhone.getServiceState()); mSS = new ServiceState(mNewSS); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mCellIdentity = primaryCellIdentity; if (mSS.getState() == ServiceState.STATE_IN_SERVICE && primaryCellIdentity != null) { Loading Loading @@ -3803,7 +3803,7 @@ public class ServiceStateTracker extends Handler { mPhone.getSignalStrengthController().notifySignalStrength(); } for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (hasRilDataRadioTechnologyChanged.get(transport)) { shouldLogRatChange = true; mPhone.getSignalStrengthController().notifySignalStrength(); Loading Loading @@ -4994,7 +4994,7 @@ public class ServiceStateTracker extends Handler { || (dds != mPhone.getSubId() && ProxyController.getInstance().areAllDataDisconnected(dds)))) { // To minimize race conditions we do this after isDisconnected for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mPhone.getDcTracker(transport) != null) { mPhone.getDcTracker(transport).cleanUpAllConnections( Phone.REASON_RADIO_TURNED_OFF); Loading @@ -5011,7 +5011,7 @@ public class ServiceStateTracker extends Handler { mPhone.mCT.mBackgroundCall.hangupIfAlive(); mPhone.mCT.mForegroundCall.hangupIfAlive(); } for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mPhone.getDcTracker(transport) != null) { mPhone.getDcTracker(transport).cleanUpAllConnections( Phone.REASON_RADIO_TURNED_OFF); Loading Loading @@ -5577,7 +5577,7 @@ public class ServiceStateTracker extends Handler { } // operator info should be kept in SS String operator = mNewSS.getOperatorAlphaLong(); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), true); if (resetIwlanRatVal) { mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() Loading @@ -5587,7 +5587,7 @@ public class ServiceStateTracker extends Handler { .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); if (mTransportManager.isInLegacyMode()) { if (mAccessNetworksManager.isInLegacyMode()) { // If in legacy mode, simulate the behavior that IWLAN registration info // is reported through WWAN transport. nri = new NetworkRegistrationInfo.Builder() Loading Loading @@ -5615,7 +5615,7 @@ public class ServiceStateTracker extends Handler { // unfortunate limitation we have when the device operates in legacy mode. In AP-assisted // mode, the WWAN registration will correctly report the actual cellular registration info // when the device camps on IWLAN. if (mTransportManager.isInLegacyMode()) { if (mAccessNetworksManager.isInLegacyMode()) { NetworkRegistrationInfo wwanNri = mNewSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (wwanNri != null && wwanNri.getAccessNetworkTechnology() Loading src/java/com/android/internal/telephony/data/DataProfileManager.java +15 −46 File changed.Preview size limit exceeded, changes collapsed. Show changes src/java/com/android/internal/telephony/data/DataServiceManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -175,7 +175,7 @@ public class DataServiceManager extends Handler { private void revokePermissionsFromUnusedDataServices() { // Except the current data services from having their permissions removed. Set<String> dataServices = getAllDataServicePackageNames(); for (int transportType : mPhone.getTransportManager().getAvailableTransports()) { for (int transportType : mPhone.getAccessNetworksManager().getAvailableTransports()) { dataServices.remove(getDataServicePackageName(transportType)); } Loading Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +22 −20 Original line number Diff line number Diff line Loading @@ -309,8 +309,10 @@ public class GsmCdmaPhone extends Phone { mAccessNetworksManager = mTelephonyComponentFactory .inject(AccessNetworksManager.class.getName()) .makeAccessNetworksManager(this); if (!isUsingNewDataStack()) { mTransportManager = mTelephonyComponentFactory.inject(TransportManager.class.getName()) .makeTransportManager(this); } // SST/DSM depends on SSC, so SSC is instanced before SST/DSM mSignalStrengthController = mTelephonyComponentFactory.inject( SignalStrengthController.class.getName()).makeSignalStrengthController(this); Loading @@ -319,8 +321,10 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); if (!isUsingNewDataStack()) { mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); } mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); Loading @@ -329,19 +333,19 @@ public class GsmCdmaPhone extends Phone { mDisplayInfoController = mTelephonyComponentFactory.inject( DisplayInfoController.class.getName()).makeDisplayInfoController(this); if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } else { // DcTracker uses ServiceStateTracker and DisplayInfoController so needs to be created // after they are instantiated for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { DcTracker dcTracker = mTelephonyComponentFactory.inject(DcTracker.class.getName()) .makeDcTracker(this, transport); mDcTrackers.put(transport, dcTracker); mTransportManager.registerDataThrottler(dcTracker.getDataThrottler()); mAccessNetworksManager.registerDataThrottler(dcTracker.getDataThrottler()); } if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) Loading Loading @@ -706,12 +710,6 @@ public class GsmCdmaPhone extends Phone { return mPendingMMIs; } private @NonNull DcTracker getActiveDcTrackerForApn(@NonNull String apnType) { int currentTransport = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); return getDcTracker(currentTransport); } @Override public boolean isDataSuspended() { return mCT.mState != PhoneConstants.State.IDLE && !mSST.isConcurrentVoiceAndDataAllowed(); Loading @@ -737,7 +735,7 @@ public class GsmCdmaPhone extends Phone { ret = PhoneConstants.DataState.DISCONNECTED; } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ int currentTransport = mTransportManager.getCurrentTransport( int currentTransport = mAccessNetworksManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(currentTransport) != null) { switch (getDcTracker(currentTransport).getState(apnType)) { Loading @@ -764,6 +762,10 @@ public class GsmCdmaPhone extends Phone { @Override public DataActivityState getDataActivityState() { if (isUsingNewDataStack()) { // TODO: Support it correctly. return DataActivityState.NONE; } DataActivityState ret = DataActivityState.NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE Loading
src/java/com/android/internal/telephony/Phone.java +20 −105 Original line number Diff line number Diff line Loading @@ -24,8 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.LinkProperties; import android.net.NetworkCapabilities; import android.net.Uri; import android.os.AsyncResult; import android.os.Build; Loading @@ -51,6 +49,7 @@ import android.telephony.CellInfo; import android.telephony.ClientRequestStats; import android.telephony.ImsiEncryptionInfo; import android.telephony.LinkCapacityEstimate; import android.telephony.NetworkRegistrationInfo; import android.telephony.PhoneStateListener; import android.telephony.PhysicalChannelConfig; import android.telephony.PreciseDataConnectionState; Loading Loading @@ -114,7 +113,6 @@ import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -3576,31 +3574,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mRadioOffOrNotAvailableRegistrants.remove(h); } /** * Returns an array of string identifiers for the APN types serviced by the * currently active subscription. * * @return The string array of APN types. Return null if no active APN types. */ @UnsupportedAppUsage @NonNull public String[] getActiveApnTypes() { if (mTransportManager == null || mDcTrackers == null) { Rlog.e(LOG_TAG, "Invalid state for Transport/DcTrackers"); return new String[0]; } Set<String> activeApnTypes = new HashSet<String>(); for (int transportType : mTransportManager.getAvailableTransports()) { DcTracker dct = getDcTracker(transportType); if (dct == null) continue; // TODO: should this ever happen? activeApnTypes.addAll(Arrays.asList(dct.getActiveApnTypes())); } return activeApnTypes.toArray(new String[activeApnTypes.size()]); } /** * Location to an updatable file listing carrier provisioning urls. * An example: Loading Loading @@ -3697,6 +3670,15 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return true if there is a matching DUN APN. */ public boolean hasMatchedTetherApnSetting() { if (isUsingNewDataStack()) { NetworkRegistrationInfo nrs = getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nrs != null) { return getDataNetworkController().getDataProfileManager() .isTetheringDataProfileExisting(nrs.getAccessNetworkTechnology()); } return false; } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { return getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .hasMatchedTetherApnSetting(); Loading @@ -3704,50 +3686,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return false; } /** * Returns string for the active APN host. * @return type as a string or null if none. */ public String getActiveApnHost(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getActiveApnString(apnType); } } return null; } /** * Return the LinkProperties for the named apn or null if not available */ public LinkProperties getLinkProperties(String apnType) { if (mTransportManager != null) { int transport = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transport) != null) { return getDcTracker(transport).getLinkProperties(apnType); } } return null; } /** * Return the NetworkCapabilities */ public NetworkCapabilities getNetworkCapabilities(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getNetworkCapabilities(apnType); } } return null; } /** * Report on whether data connectivity is allowed for given APN type. * Loading @@ -3767,8 +3705,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return True if data is allowed to be established */ public boolean isDataAllowed(@ApnType int apnType, DataConnectionReasons reasons) { if (mTransportManager != null) { int transport = mTransportManager.getCurrentTransport(apnType); if (mAccessNetworksManager != null) { int transport = mAccessNetworksManager.getCurrentTransport(apnType); if (getDcTracker(transport) != null) { return getDcTracker(transport).isDataAllowed(reasons); } Loading Loading @@ -3968,22 +3906,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return mUiccController.getUiccPort(mPhoneId); } /** * Get P-CSCF address from PCO after data connection is established or modified. * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN */ public String[] getPcscfAddress(String apnType) { if (mTransportManager != null) { int transportType = mTransportManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(transportType) != null) { return getDcTracker(transportType).getPcscfAddress(apnType); } } return null; } /** * Set IMS registration state */ Loading Loading @@ -4574,8 +4496,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return True if all data connections are disconnected. */ public boolean areAllDataDisconnected() { if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null && !getDcTracker(transport).areAllDataDisconnected()) { return false; Loading @@ -4587,8 +4509,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { public void registerForAllDataDisconnected(Handler h, int what) { mAllDataDisconnectedRegistrants.addUnique(h, what, null); if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null && !getDcTracker(transport).areAllDataDisconnected()) { getDcTracker(transport).registerForAllDataDisconnected( Loading Loading @@ -4956,7 +4878,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println(" getPhoneName()=" + getPhoneName()); pw.println(" getPhoneType()=" + getPhoneType()); pw.println(" getVoiceMessageCount()=" + getVoiceMessageCount()); pw.println(" getActiveApnTypes()=" + getActiveApnTypes()); pw.println(" needsOtaServiceProvisioning=" + needsOtaServiceProvisioning()); pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); Loading @@ -4976,8 +4897,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println("++++++++++++++++++++++++++++++++"); } if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (mAccessNetworksManager != null) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (getDcTracker(transport) != null) { getDcTracker(transport).dump(fd, pw, args); pw.flush(); Loading Loading @@ -5096,15 +5017,9 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println("++++++++++++++++++++++++++++++++"); } if (isUsingNewDataStack()) { if (mAccessNetworksManager != null) { mAccessNetworksManager.dump(fd, pw, args); } } else { if (mTransportManager != null) { mTransportManager.dump(fd, pw, args); } } if (mCi != null && mCi instanceof RIL) { try { Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +24 −24 Original line number Diff line number Diff line Loading @@ -92,10 +92,10 @@ import com.android.internal.telephony.cdma.EriInfo; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.cdnr.CarrierDisplayNameData; import com.android.internal.telephony.cdnr.CarrierDisplayNameResolver; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetwork; import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback; import com.android.internal.telephony.dataconnection.DataConnection; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.metrics.ServiceStateStats; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; Loading Loading @@ -610,7 +610,7 @@ public class ServiceStateTracker extends Handler { private String mRegistrationDeniedReason; private String mCurrentCarrier = null; private final TransportManager mTransportManager; private final AccessNetworksManager mAccessNetworksManager; private final SparseArray<NetworkRegistrationManager> mRegStateManagers = new SparseArray<>(); /* Last known TAC/LAC */ Loading Loading @@ -658,11 +658,11 @@ public class ServiceStateTracker extends Handler { new android.os.HandlerExecutor(this), mOnSubscriptionsChangedListener); mRestrictedState = new RestrictedState(); mTransportManager = mPhone.getTransportManager(); mAccessNetworksManager = mPhone.getAccessNetworksManager(); mOutOfServiceSS = new ServiceState(); mOutOfServiceSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mOutOfServiceSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); for (int transportType : mTransportManager.getAvailableTransports()) { for (int transportType : mAccessNetworksManager.getAvailableTransports()) { mRegStateManagers.append(transportType, new NetworkRegistrationManager( transportType, phone)); mRegStateManagers.get(transportType).registerForNetworkRegistrationInfoChanged( Loading Loading @@ -744,7 +744,7 @@ public class ServiceStateTracker extends Handler { } // If we are previously in service, we need to notify that we are out of service now. for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mSS != null) { NetworkRegistrationInfo nrs = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, transport); Loading @@ -756,9 +756,9 @@ public class ServiceStateTracker extends Handler { } mSS = new ServiceState(); mSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mNewSS = new ServiceState(); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mLastCellInfoReqTime = 0; mLastCellInfoList = null; mStartedGprsRegCheck = false; Loading Loading @@ -817,7 +817,7 @@ public class ServiceStateTracker extends Handler { // Tell everybody that the registration state and RAT have changed. notifyVoiceRegStateRilRadioTechnologyChanged(); for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { notifyDataRegStateRilRadioTechnologyChanged(transport); } } Loading Loading @@ -2171,7 +2171,7 @@ public class ServiceStateTracker extends Handler { NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // Check if any APN is preferred on IWLAN. boolean isIwlanPreferred = mTransportManager.isAnyApnOnIwlan(); boolean isIwlanPreferred = mAccessNetworksManager.isAnyApnOnIwlan(); serviceState.setIwlanPreferred(isIwlanPreferred); if (wlanPsRegState != null && wlanPsRegState.getAccessNetworkTechnology() Loading Loading @@ -3322,7 +3322,7 @@ public class ServiceStateTracker extends Handler { switch (mCi.getRadioState()) { case TelephonyManager.RADIO_POWER_UNAVAILABLE: mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mPhone.getSignalStrengthController().setSignalStrengthDefaultValues(); mLastNitzData = null; mNitzState.handleNetworkUnavailable(); Loading @@ -3330,7 +3330,7 @@ public class ServiceStateTracker extends Handler { break; case TelephonyManager.RADIO_POWER_OFF: mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), true); mPhone.getSignalStrengthController().setSignalStrengthDefaultValues(); mLastNitzData = null; mNitzState.handleNetworkUnavailable(); Loading Loading @@ -3453,13 +3453,13 @@ public class ServiceStateTracker extends Handler { && mNewSS.getState() != ServiceState.STATE_POWER_OFF; SparseBooleanArray hasDataAttached = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasDataDetached = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasRilDataRadioTechnologyChanged = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); SparseBooleanArray hasDataRegStateChanged = new SparseBooleanArray( mTransportManager.getAvailableTransports().length); mAccessNetworksManager.getAvailableTransports().length); boolean anyDataRegChanged = false; boolean anyDataRatChanged = false; boolean hasAlphaRawChanged = Loading @@ -3467,7 +3467,7 @@ public class ServiceStateTracker extends Handler { || !TextUtils.equals(mSS.getOperatorAlphaShortRaw(), mNewSS.getOperatorAlphaShortRaw()); for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { NetworkRegistrationInfo oldNrs = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, transport); NetworkRegistrationInfo newNrs = mNewSS.getNetworkRegistrationInfo( Loading Loading @@ -3653,7 +3653,7 @@ public class ServiceStateTracker extends Handler { ServiceState oldMergedSS = new ServiceState(mPhone.getServiceState()); mSS = new ServiceState(mNewSS); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), false); mCellIdentity = primaryCellIdentity; if (mSS.getState() == ServiceState.STATE_IN_SERVICE && primaryCellIdentity != null) { Loading Loading @@ -3803,7 +3803,7 @@ public class ServiceStateTracker extends Handler { mPhone.getSignalStrengthController().notifySignalStrength(); } for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (hasRilDataRadioTechnologyChanged.get(transport)) { shouldLogRatChange = true; mPhone.getSignalStrengthController().notifySignalStrength(); Loading Loading @@ -4994,7 +4994,7 @@ public class ServiceStateTracker extends Handler { || (dds != mPhone.getSubId() && ProxyController.getInstance().areAllDataDisconnected(dds)))) { // To minimize race conditions we do this after isDisconnected for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mPhone.getDcTracker(transport) != null) { mPhone.getDcTracker(transport).cleanUpAllConnections( Phone.REASON_RADIO_TURNED_OFF); Loading @@ -5011,7 +5011,7 @@ public class ServiceStateTracker extends Handler { mPhone.mCT.mBackgroundCall.hangupIfAlive(); mPhone.mCT.mForegroundCall.hangupIfAlive(); } for (int transport : mTransportManager.getAvailableTransports()) { for (int transport : mAccessNetworksManager.getAvailableTransports()) { if (mPhone.getDcTracker(transport) != null) { mPhone.getDcTracker(transport).cleanUpAllConnections( Phone.REASON_RADIO_TURNED_OFF); Loading Loading @@ -5577,7 +5577,7 @@ public class ServiceStateTracker extends Handler { } // operator info should be kept in SS String operator = mNewSS.getOperatorAlphaLong(); mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true); mNewSS.setOutOfService(mAccessNetworksManager.isInLegacyMode(), true); if (resetIwlanRatVal) { mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() Loading @@ -5587,7 +5587,7 @@ public class ServiceStateTracker extends Handler { .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); if (mTransportManager.isInLegacyMode()) { if (mAccessNetworksManager.isInLegacyMode()) { // If in legacy mode, simulate the behavior that IWLAN registration info // is reported through WWAN transport. nri = new NetworkRegistrationInfo.Builder() Loading Loading @@ -5615,7 +5615,7 @@ public class ServiceStateTracker extends Handler { // unfortunate limitation we have when the device operates in legacy mode. In AP-assisted // mode, the WWAN registration will correctly report the actual cellular registration info // when the device camps on IWLAN. if (mTransportManager.isInLegacyMode()) { if (mAccessNetworksManager.isInLegacyMode()) { NetworkRegistrationInfo wwanNri = mNewSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (wwanNri != null && wwanNri.getAccessNetworkTechnology() Loading
src/java/com/android/internal/telephony/data/DataProfileManager.java +15 −46 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/java/com/android/internal/telephony/data/DataServiceManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -175,7 +175,7 @@ public class DataServiceManager extends Handler { private void revokePermissionsFromUnusedDataServices() { // Except the current data services from having their permissions removed. Set<String> dataServices = getAllDataServicePackageNames(); for (int transportType : mPhone.getTransportManager().getAvailableTransports()) { for (int transportType : mPhone.getAccessNetworksManager().getAvailableTransports()) { dataServices.remove(getDataServicePackageName(transportType)); } Loading