Loading src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +4 −10 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.os.PersistableBundle; import android.os.Registrant; import android.os.RegistrantList; import android.os.SystemProperties; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CarrierConfigManager; import android.telephony.CellLocation; import android.telephony.DisconnectCause; Loading Loading @@ -173,9 +172,8 @@ public class GsmCdmaCallTracker extends CallTracker { mCi.unregisterForCallWaitingInfo(this); // Prior to phone switch to GSM, if CDMA has any emergency call // data will be in disabled state, after switching to GSM enable data. if (mIsInEmergencyCall && mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); if (mIsInEmergencyCall) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } } else { mConnections = new GsmCdmaConnection[MAX_CONNECTIONS_CDMA]; Loading Loading @@ -376,9 +374,7 @@ public class GsmCdmaCallTracker extends CallTracker { //CDMA public void setIsInEmergencyCall() { mIsInEmergencyCall = true; if (mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(false); } mPhone.getDataEnabledSettings().setInternalDataEnabled(false); mPhone.notifyEmergencyCallRegistrants(true); mPhone.sendEmergencyCallStateChange(true); } Loading Loading @@ -1638,9 +1634,7 @@ public class GsmCdmaCallTracker extends CallTracker { } if (!inEcm) { // Re-initiate data connection if (mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); } mPhone.getDataEnabledSettings().setInternalDataEnabled(true); mPhone.notifyEmergencyCallRegistrants(false); } mPhone.sendEmergencyCallStateChange(false); Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +39 −21 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -208,6 +209,8 @@ public class GsmCdmaPhone extends Phone { private CarrierKeyDownloadManager mCDM; private CarrierInfoManager mCIM; private final SettingsObserver mSettingsObserver; // Constructors public GsmCdmaPhone(Context context, CommandsInterface ci, PhoneNotifier notifier, int phoneId, Loading Loading @@ -238,6 +241,9 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); // DcTracker uses SST so needs to be created after it is instantiated for (int transport : mTransportManager.getAvailableTransports()) { mDcTrackers.put(transport, mTelephonyComponentFactory.inject(DcTracker.class.getName()) Loading @@ -247,11 +253,23 @@ public class GsmCdmaPhone extends Phone { mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) .makeCarrierResolver(this); getCarrierActionAgent().registerForCarrierAction( CarrierActionAgent.CARRIER_ACTION_SET_METERED_APNS_ENABLED, this, EVENT_SET_CARRIER_DATA_ENABLED, null, false); mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null); mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); mSST.registerForVoiceRegStateOrRatChanged(this, EVENT_VRS_OR_RAT_CHANGED, null); mSettingsObserver = new SettingsObserver(context, this); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), EVENT_DEVICE_PROVISIONED_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED), EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE); logd("GsmCdmaPhone: constructor: sub = " + mPhoneId); } Loading Loading @@ -2128,26 +2146,17 @@ public class GsmCdmaPhone extends Phone { mCT.unregisterForCallWaiting(h); } /** * Whether data is enabled by user. Unlike isDataEnabled, this only * checks user setting stored in {@link android.provider.Settings.Global#MOBILE_DATA} * if not provisioning, or isProvisioningDataEnabled if provisioning. */ @Override public boolean isUserDataEnabled() { if (getDcTracker(TransportType.WWAN) != null) { return getDcTracker(TransportType.WWAN).isUserDataEnabled(); } return false; } @Override public boolean isDataEnabled() { if (getDcTracker(TransportType.WWAN) != null) { return getDcTracker(TransportType.WWAN).isDataEnabled(); } return false; } @Override public void setUserDataEnabled(boolean enable) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).setUserDataEnabled(enable); if (mDataEnabledSettings.isProvisioning()) { return mDataEnabledSettings.isProvisioningDataEnabled(); } else { return mDataEnabledSettings.isUserDataEnabled(); } } Loading Loading @@ -2676,6 +2685,17 @@ public class GsmCdmaPhone extends Phone { onVoiceRegStateOrRatChanged(vrsRatPair.first, vrsRatPair.second); break; case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; mDataEnabledSettings.setCarrierDataEnabled(enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: mDataEnabledSettings.updateProvisionedChanged(); break; case EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE: mDataEnabledSettings.updateProvisioningDataEnabled(); break; default: super.handleMessage(msg); } Loading Loading @@ -3117,9 +3137,7 @@ public class GsmCdmaPhone extends Phone { // send an Intent sendEmergencyCallbackModeChange(); // Re-initiate data connection if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); } mDataEnabledSettings.setInternalDataEnabled(true); notifyEmergencyCallRegistrants(false); } } Loading src/java/com/android/internal/telephony/Phone.java +8 −25 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ import com.android.ims.ImsConfig; import com.android.ims.ImsManager; import com.android.internal.R; import com.android.internal.telephony.dataconnection.DataConnectionReasons; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -209,8 +210,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { protected static final int EVENT_VRS_OR_RAT_CHANGED = 46; // Radio state change protected static final int EVENT_RADIO_STATE_CHANGED = 47; protected static final int EVENT_SET_CARRIER_DATA_ENABLED = 48; protected static final int EVENT_DEVICE_PROVISIONED_CHANGE = 49; protected static final int EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE = 50; protected static final int EVENT_LAST = EVENT_RADIO_STATE_CHANGED; protected static final int EVENT_LAST = EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE; // For shared prefs. private static final String GSM_ROAMING_LIST_OVERRIDE_PREFIX = "gsm_roaming_list_"; Loading Loading @@ -294,6 +298,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { private final String mActionAttached; protected DeviceStateMonitor mDeviceStateMonitor; protected TransportManager mTransportManager; protected DataEnabledSettings mDataEnabledSettings; protected int mPhoneId; Loading Loading @@ -3739,16 +3744,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mAllDataDisconnectedRegistrants.remove(h); } public void registerForDataEnabledChanged(Handler h, int what, Object obj) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).registerForDataEnabledChanged(h, what, obj); } } public void unregisterForDataEnabledChanged(Handler h) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).unregisterForDataEnabledChanged(h); } public DataEnabledSettings getDataEnabledSettings() { return mDataEnabledSettings; } public IccSmsInterfaceManager getIccSmsInterfaceManager(){ Loading Loading @@ -3821,20 +3818,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return mImsPhone.getVtDataUsage(perUidStats); } /** * Policy control of data connection. Usually used when we hit data limit. * @param enabled True if enabling the data, otherwise disabling. */ public void setPolicyDataEnabled(boolean enabled) { if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (getDcTracker(transport) != null) { getDcTracker(transport).setPolicyDataEnabled(enabled); } } } } /** * SIP URIs aliased to the current subscriber given by the IMS implementation. * Applicable only on IMS; used in absence of line1number. Loading src/java/com/android/internal/telephony/PhoneInternalInterface.java +1 −11 Original line number Diff line number Diff line Loading @@ -123,7 +123,7 @@ public interface PhoneInternalInterface { */ static final String REASON_ROAMING_ON = "roamingOn"; static final String REASON_ROAMING_OFF = "roamingOff"; static final String REASON_DATA_DISABLED = "dataDisabled"; static final String REASON_DATA_DISABLED_INTERNAL = "dataDisabledInternal"; static final String REASON_DATA_ENABLED = "dataEnabled"; static final String REASON_DATA_ATTACHED = "dataAttached"; static final String REASON_DATA_DETACHED = "dataDetached"; Loading Loading @@ -739,16 +739,6 @@ public interface PhoneInternalInterface { */ boolean isUserDataEnabled(); /** * @return true if data is enabled considering all factors */ boolean isDataEnabled(); /** * @param @enable set {@code true} if enable data connection */ void setUserDataEnabled(boolean enable); /** * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones. */ Loading src/java/com/android/internal/telephony/TelephonyComponentFactory.java +6 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.telephony.Rlog; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -371,8 +372,13 @@ public class TelephonyComponentFactory { return IDeviceIdleController.Stub.asInterface( ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER)); } public LocaleTracker makeLocaleTracker(Phone phone, NitzStateMachine nitzStateMachine, Looper looper) { return new LocaleTracker(phone, nitzStateMachine, looper); } public DataEnabledSettings makeDataEnabledSettings(Phone phone) { return new DataEnabledSettings(phone); } } Loading
src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +4 −10 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.os.PersistableBundle; import android.os.Registrant; import android.os.RegistrantList; import android.os.SystemProperties; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CarrierConfigManager; import android.telephony.CellLocation; import android.telephony.DisconnectCause; Loading Loading @@ -173,9 +172,8 @@ public class GsmCdmaCallTracker extends CallTracker { mCi.unregisterForCallWaitingInfo(this); // Prior to phone switch to GSM, if CDMA has any emergency call // data will be in disabled state, after switching to GSM enable data. if (mIsInEmergencyCall && mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); if (mIsInEmergencyCall) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } } else { mConnections = new GsmCdmaConnection[MAX_CONNECTIONS_CDMA]; Loading Loading @@ -376,9 +374,7 @@ public class GsmCdmaCallTracker extends CallTracker { //CDMA public void setIsInEmergencyCall() { mIsInEmergencyCall = true; if (mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(false); } mPhone.getDataEnabledSettings().setInternalDataEnabled(false); mPhone.notifyEmergencyCallRegistrants(true); mPhone.sendEmergencyCallStateChange(true); } Loading Loading @@ -1638,9 +1634,7 @@ public class GsmCdmaCallTracker extends CallTracker { } if (!inEcm) { // Re-initiate data connection if (mPhone.getDcTracker(TransportType.WWAN) != null) { mPhone.getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); } mPhone.getDataEnabledSettings().setInternalDataEnabled(true); mPhone.notifyEmergencyCallRegistrants(false); } mPhone.sendEmergencyCallStateChange(false); Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +39 −21 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -208,6 +209,8 @@ public class GsmCdmaPhone extends Phone { private CarrierKeyDownloadManager mCDM; private CarrierInfoManager mCIM; private final SettingsObserver mSettingsObserver; // Constructors public GsmCdmaPhone(Context context, CommandsInterface ci, PhoneNotifier notifier, int phoneId, Loading Loading @@ -238,6 +241,9 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); // DcTracker uses SST so needs to be created after it is instantiated for (int transport : mTransportManager.getAvailableTransports()) { mDcTrackers.put(transport, mTelephonyComponentFactory.inject(DcTracker.class.getName()) Loading @@ -247,11 +253,23 @@ public class GsmCdmaPhone extends Phone { mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) .makeCarrierResolver(this); getCarrierActionAgent().registerForCarrierAction( CarrierActionAgent.CARRIER_ACTION_SET_METERED_APNS_ENABLED, this, EVENT_SET_CARRIER_DATA_ENABLED, null, false); mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null); mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); mSST.registerForVoiceRegStateOrRatChanged(this, EVENT_VRS_OR_RAT_CHANGED, null); mSettingsObserver = new SettingsObserver(context, this); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), EVENT_DEVICE_PROVISIONED_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED), EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE); logd("GsmCdmaPhone: constructor: sub = " + mPhoneId); } Loading Loading @@ -2128,26 +2146,17 @@ public class GsmCdmaPhone extends Phone { mCT.unregisterForCallWaiting(h); } /** * Whether data is enabled by user. Unlike isDataEnabled, this only * checks user setting stored in {@link android.provider.Settings.Global#MOBILE_DATA} * if not provisioning, or isProvisioningDataEnabled if provisioning. */ @Override public boolean isUserDataEnabled() { if (getDcTracker(TransportType.WWAN) != null) { return getDcTracker(TransportType.WWAN).isUserDataEnabled(); } return false; } @Override public boolean isDataEnabled() { if (getDcTracker(TransportType.WWAN) != null) { return getDcTracker(TransportType.WWAN).isDataEnabled(); } return false; } @Override public void setUserDataEnabled(boolean enable) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).setUserDataEnabled(enable); if (mDataEnabledSettings.isProvisioning()) { return mDataEnabledSettings.isProvisioningDataEnabled(); } else { return mDataEnabledSettings.isUserDataEnabled(); } } Loading Loading @@ -2676,6 +2685,17 @@ public class GsmCdmaPhone extends Phone { onVoiceRegStateOrRatChanged(vrsRatPair.first, vrsRatPair.second); break; case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; mDataEnabledSettings.setCarrierDataEnabled(enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: mDataEnabledSettings.updateProvisionedChanged(); break; case EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE: mDataEnabledSettings.updateProvisioningDataEnabled(); break; default: super.handleMessage(msg); } Loading Loading @@ -3117,9 +3137,7 @@ public class GsmCdmaPhone extends Phone { // send an Intent sendEmergencyCallbackModeChange(); // Re-initiate data connection if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).setInternalDataEnabled(true); } mDataEnabledSettings.setInternalDataEnabled(true); notifyEmergencyCallRegistrants(false); } } Loading
src/java/com/android/internal/telephony/Phone.java +8 −25 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ import com.android.ims.ImsConfig; import com.android.ims.ImsManager; import com.android.internal.R; import com.android.internal.telephony.dataconnection.DataConnectionReasons; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -209,8 +210,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { protected static final int EVENT_VRS_OR_RAT_CHANGED = 46; // Radio state change protected static final int EVENT_RADIO_STATE_CHANGED = 47; protected static final int EVENT_SET_CARRIER_DATA_ENABLED = 48; protected static final int EVENT_DEVICE_PROVISIONED_CHANGE = 49; protected static final int EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE = 50; protected static final int EVENT_LAST = EVENT_RADIO_STATE_CHANGED; protected static final int EVENT_LAST = EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE; // For shared prefs. private static final String GSM_ROAMING_LIST_OVERRIDE_PREFIX = "gsm_roaming_list_"; Loading Loading @@ -294,6 +298,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { private final String mActionAttached; protected DeviceStateMonitor mDeviceStateMonitor; protected TransportManager mTransportManager; protected DataEnabledSettings mDataEnabledSettings; protected int mPhoneId; Loading Loading @@ -3739,16 +3744,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mAllDataDisconnectedRegistrants.remove(h); } public void registerForDataEnabledChanged(Handler h, int what, Object obj) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).registerForDataEnabledChanged(h, what, obj); } } public void unregisterForDataEnabledChanged(Handler h) { if (getDcTracker(TransportType.WWAN) != null) { getDcTracker(TransportType.WWAN).unregisterForDataEnabledChanged(h); } public DataEnabledSettings getDataEnabledSettings() { return mDataEnabledSettings; } public IccSmsInterfaceManager getIccSmsInterfaceManager(){ Loading Loading @@ -3821,20 +3818,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return mImsPhone.getVtDataUsage(perUidStats); } /** * Policy control of data connection. Usually used when we hit data limit. * @param enabled True if enabling the data, otherwise disabling. */ public void setPolicyDataEnabled(boolean enabled) { if (mTransportManager != null) { for (int transport : mTransportManager.getAvailableTransports()) { if (getDcTracker(transport) != null) { getDcTracker(transport).setPolicyDataEnabled(enabled); } } } } /** * SIP URIs aliased to the current subscriber given by the IMS implementation. * Applicable only on IMS; used in absence of line1number. Loading
src/java/com/android/internal/telephony/PhoneInternalInterface.java +1 −11 Original line number Diff line number Diff line Loading @@ -123,7 +123,7 @@ public interface PhoneInternalInterface { */ static final String REASON_ROAMING_ON = "roamingOn"; static final String REASON_ROAMING_OFF = "roamingOff"; static final String REASON_DATA_DISABLED = "dataDisabled"; static final String REASON_DATA_DISABLED_INTERNAL = "dataDisabledInternal"; static final String REASON_DATA_ENABLED = "dataEnabled"; static final String REASON_DATA_ATTACHED = "dataAttached"; static final String REASON_DATA_DETACHED = "dataDetached"; Loading Loading @@ -739,16 +739,6 @@ public interface PhoneInternalInterface { */ boolean isUserDataEnabled(); /** * @return true if data is enabled considering all factors */ boolean isDataEnabled(); /** * @param @enable set {@code true} if enable data connection */ void setUserDataEnabled(boolean enable); /** * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones. */ Loading
src/java/com/android/internal/telephony/TelephonyComponentFactory.java +6 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.telephony.Rlog; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; Loading Loading @@ -371,8 +372,13 @@ public class TelephonyComponentFactory { return IDeviceIdleController.Stub.asInterface( ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER)); } public LocaleTracker makeLocaleTracker(Phone phone, NitzStateMachine nitzStateMachine, Looper looper) { return new LocaleTracker(phone, nitzStateMachine, looper); } public DataEnabledSettings makeDataEnabledSettings(Phone phone) { return new DataEnabledSettings(phone); } }