Loading src/java/com/android/internal/telephony/CarrierActionAgent.java +41 −7 Original line number Original line Diff line number Diff line Loading @@ -59,6 +59,8 @@ public class CarrierActionAgent extends Handler { public static final int CARRIER_ACTION_RESET = 2; public static final int CARRIER_ACTION_RESET = 2; public static final int EVENT_APM_SETTINGS_CHANGED = 3; public static final int EVENT_APM_SETTINGS_CHANGED = 3; public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 4; public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 4; public static final int EVENT_DATA_ROAMING_OFF = 5; public static final int EVENT_SIM_STATE_CHANGED = 6; /** Member variables */ /** Member variables */ private final Phone mPhone; private final Phone mPhone; Loading Loading @@ -128,22 +130,46 @@ public class CarrierActionAgent extends Handler { break; break; case CARRIER_ACTION_RESET: case CARRIER_ACTION_RESET: log("CARRIER_ACTION_RESET"); log("CARRIER_ACTION_RESET"); carrierActionSetMeteredApnsEnabled(true); carrierActionReset(); carrierActionSetRadioEnabled(true); // notify configured carrier apps for reset mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers( new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET)); break; break; case EVENT_APM_SETTINGS_CHANGED: case EVENT_APM_SETTINGS_CHANGED: log("EVENT_APM_SETTINGS_CHANGED"); log("EVENT_APM_SETTINGS_CHANGED"); if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(), if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) { Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) { sendEmptyMessage(CARRIER_ACTION_RESET); carrierActionReset(); } } break; break; case EVENT_MOBILE_DATA_SETTINGS_CHANGED: case EVENT_MOBILE_DATA_SETTINGS_CHANGED: log("EVENT_MOBILE_DATA_SETTINGS_CHANGED"); log("EVENT_MOBILE_DATA_SETTINGS_CHANGED"); if (!mPhone.getDataEnabled()) sendEmptyMessage(CARRIER_ACTION_RESET); if (!mPhone.getDataEnabled()) carrierActionReset(); break; case EVENT_DATA_ROAMING_OFF: log("EVENT_DATA_ROAMING_OFF"); // reset carrier actions when exit roaming state. carrierActionReset(); break; case EVENT_SIM_STATE_CHANGED: String iccState = (String) msg.obj; if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(iccState)) { log("EVENT_SIM_STATE_CHANGED status: " + iccState); carrierActionReset(); String mobileData = Settings.Global.MOBILE_DATA; if (TelephonyManager.getDefault().getSimCount() != 1) { mobileData = mobileData + mPhone.getSubId(); } mSettingsObserver.observe(Settings.Global.getUriFor(mobileData), EVENT_MOBILE_DATA_SETTINGS_CHANGED); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON), EVENT_APM_SETTINGS_CHANGED); mPhone.getServiceStateTracker().registerForDataRoamingOff( this, EVENT_DATA_ROAMING_OFF, null, false); } else if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(iccState)) { log("EVENT_SIM_STATE_CHANGED status: " + iccState); carrierActionReset(); mSettingsObserver.unobserve(); mPhone.getServiceStateTracker().unregisterForDataRoamingOff(this); } break; break; default: default: loge("Unknown carrier action: " + msg.what); loge("Unknown carrier action: " + msg.what); Loading Loading @@ -175,6 +201,14 @@ public class CarrierActionAgent extends Handler { sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled)); sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled)); } } private void carrierActionReset() { carrierActionSetMeteredApnsEnabled(true); carrierActionSetRadioEnabled(true); // notify configured carrier apps for reset mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers( new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET)); } private RegistrantList getRegistrantsFromAction(int action) { private RegistrantList getRegistrantsFromAction(int action) { switch (action) { switch (action) { case CARRIER_ACTION_SET_METERED_APNS_ENABLED: case CARRIER_ACTION_SET_METERED_APNS_ENABLED: Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -843,12 +843,13 @@ public class ServiceStateTracker extends Handler { * @param h handler to notify * @param h handler to notify * @param what what code of message when delivered * @param what what code of message when delivered * @param obj placed in Message.obj * @param obj placed in Message.obj * @param notifyNow notify upon registration if data roaming is off */ */ public void registerForDataRoamingOff(Handler h, int what, Object obj) { public void registerForDataRoamingOff(Handler h, int what, Object obj, boolean notifyNow) { Registrant r = new Registrant(h, what, obj); Registrant r = new Registrant(h, what, obj); mDataRoamingOffRegistrants.add(r); mDataRoamingOffRegistrants.add(r); if (!mSS.getDataRoaming()) { if (notifyNow && !mSS.getDataRoaming()) { r.notifyRegistrant(); r.notifyRegistrant(); } } } } Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1053,7 +1053,7 @@ public class DataConnection extends StateMachine { mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(), mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(), DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null); DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null); mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(), mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(), DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null); DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null, true); // Add ourselves to the list of data connections // Add ourselves to the list of data connections mDcController.addDc(DataConnection.this); mDcController.addDc(DataConnection.this); Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -681,7 +681,7 @@ public class DcTracker extends Handler { mPhone.getServiceStateTracker().registerForDataRoamingOn(this, mPhone.getServiceStateTracker().registerForDataRoamingOn(this, DctConstants.EVENT_ROAMING_ON, null); DctConstants.EVENT_ROAMING_ON, null); mPhone.getServiceStateTracker().registerForDataRoamingOff(this, mPhone.getServiceStateTracker().registerForDataRoamingOff(this, DctConstants.EVENT_ROAMING_OFF, null); DctConstants.EVENT_ROAMING_OFF, null, true); mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this, mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this, DctConstants.EVENT_PS_RESTRICT_ENABLED, null); DctConstants.EVENT_PS_RESTRICT_ENABLED, null); mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this, mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this, Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -577,7 +577,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { waitForMs(100); waitForMs(100); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true); // Disable roaming // Disable roaming doReturn(true).when(mPhone).isPhoneTypeGsm(); doReturn(true).when(mPhone).isPhoneTypeGsm(); Loading Loading @@ -1001,7 +1001,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { waitForMs(200); waitForMs(200); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true); sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null); sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null); sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null); sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null); Loading Loading
src/java/com/android/internal/telephony/CarrierActionAgent.java +41 −7 Original line number Original line Diff line number Diff line Loading @@ -59,6 +59,8 @@ public class CarrierActionAgent extends Handler { public static final int CARRIER_ACTION_RESET = 2; public static final int CARRIER_ACTION_RESET = 2; public static final int EVENT_APM_SETTINGS_CHANGED = 3; public static final int EVENT_APM_SETTINGS_CHANGED = 3; public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 4; public static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 4; public static final int EVENT_DATA_ROAMING_OFF = 5; public static final int EVENT_SIM_STATE_CHANGED = 6; /** Member variables */ /** Member variables */ private final Phone mPhone; private final Phone mPhone; Loading Loading @@ -128,22 +130,46 @@ public class CarrierActionAgent extends Handler { break; break; case CARRIER_ACTION_RESET: case CARRIER_ACTION_RESET: log("CARRIER_ACTION_RESET"); log("CARRIER_ACTION_RESET"); carrierActionSetMeteredApnsEnabled(true); carrierActionReset(); carrierActionSetRadioEnabled(true); // notify configured carrier apps for reset mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers( new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET)); break; break; case EVENT_APM_SETTINGS_CHANGED: case EVENT_APM_SETTINGS_CHANGED: log("EVENT_APM_SETTINGS_CHANGED"); log("EVENT_APM_SETTINGS_CHANGED"); if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(), if ((Settings.Global.getInt(mPhone.getContext().getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) { Settings.Global.AIRPLANE_MODE_ON, 0) != 0)) { sendEmptyMessage(CARRIER_ACTION_RESET); carrierActionReset(); } } break; break; case EVENT_MOBILE_DATA_SETTINGS_CHANGED: case EVENT_MOBILE_DATA_SETTINGS_CHANGED: log("EVENT_MOBILE_DATA_SETTINGS_CHANGED"); log("EVENT_MOBILE_DATA_SETTINGS_CHANGED"); if (!mPhone.getDataEnabled()) sendEmptyMessage(CARRIER_ACTION_RESET); if (!mPhone.getDataEnabled()) carrierActionReset(); break; case EVENT_DATA_ROAMING_OFF: log("EVENT_DATA_ROAMING_OFF"); // reset carrier actions when exit roaming state. carrierActionReset(); break; case EVENT_SIM_STATE_CHANGED: String iccState = (String) msg.obj; if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(iccState)) { log("EVENT_SIM_STATE_CHANGED status: " + iccState); carrierActionReset(); String mobileData = Settings.Global.MOBILE_DATA; if (TelephonyManager.getDefault().getSimCount() != 1) { mobileData = mobileData + mPhone.getSubId(); } mSettingsObserver.observe(Settings.Global.getUriFor(mobileData), EVENT_MOBILE_DATA_SETTINGS_CHANGED); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON), EVENT_APM_SETTINGS_CHANGED); mPhone.getServiceStateTracker().registerForDataRoamingOff( this, EVENT_DATA_ROAMING_OFF, null, false); } else if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(iccState)) { log("EVENT_SIM_STATE_CHANGED status: " + iccState); carrierActionReset(); mSettingsObserver.unobserve(); mPhone.getServiceStateTracker().unregisterForDataRoamingOff(this); } break; break; default: default: loge("Unknown carrier action: " + msg.what); loge("Unknown carrier action: " + msg.what); Loading Loading @@ -175,6 +201,14 @@ public class CarrierActionAgent extends Handler { sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled)); sendMessage(obtainMessage(CARRIER_ACTION_SET_METERED_APNS_ENABLED, enabled)); } } private void carrierActionReset() { carrierActionSetMeteredApnsEnabled(true); carrierActionSetRadioEnabled(true); // notify configured carrier apps for reset mPhone.getCarrierSignalAgent().notifyCarrierSignalReceivers( new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_RESET)); } private RegistrantList getRegistrantsFromAction(int action) { private RegistrantList getRegistrantsFromAction(int action) { switch (action) { switch (action) { case CARRIER_ACTION_SET_METERED_APNS_ENABLED: case CARRIER_ACTION_SET_METERED_APNS_ENABLED: Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -843,12 +843,13 @@ public class ServiceStateTracker extends Handler { * @param h handler to notify * @param h handler to notify * @param what what code of message when delivered * @param what what code of message when delivered * @param obj placed in Message.obj * @param obj placed in Message.obj * @param notifyNow notify upon registration if data roaming is off */ */ public void registerForDataRoamingOff(Handler h, int what, Object obj) { public void registerForDataRoamingOff(Handler h, int what, Object obj, boolean notifyNow) { Registrant r = new Registrant(h, what, obj); Registrant r = new Registrant(h, what, obj); mDataRoamingOffRegistrants.add(r); mDataRoamingOffRegistrants.add(r); if (!mSS.getDataRoaming()) { if (notifyNow && !mSS.getDataRoaming()) { r.notifyRegistrant(); r.notifyRegistrant(); } } } } Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1053,7 +1053,7 @@ public class DataConnection extends StateMachine { mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(), mPhone.getServiceStateTracker().registerForDataRoamingOn(getHandler(), DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null); DataConnection.EVENT_DATA_CONNECTION_ROAM_ON, null); mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(), mPhone.getServiceStateTracker().registerForDataRoamingOff(getHandler(), DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null); DataConnection.EVENT_DATA_CONNECTION_ROAM_OFF, null, true); // Add ourselves to the list of data connections // Add ourselves to the list of data connections mDcController.addDc(DataConnection.this); mDcController.addDc(DataConnection.this); Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -681,7 +681,7 @@ public class DcTracker extends Handler { mPhone.getServiceStateTracker().registerForDataRoamingOn(this, mPhone.getServiceStateTracker().registerForDataRoamingOn(this, DctConstants.EVENT_ROAMING_ON, null); DctConstants.EVENT_ROAMING_ON, null); mPhone.getServiceStateTracker().registerForDataRoamingOff(this, mPhone.getServiceStateTracker().registerForDataRoamingOff(this, DctConstants.EVENT_ROAMING_OFF, null); DctConstants.EVENT_ROAMING_OFF, null, true); mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this, mPhone.getServiceStateTracker().registerForPsRestrictedEnabled(this, DctConstants.EVENT_PS_RESTRICT_ENABLED, null); DctConstants.EVENT_PS_RESTRICT_ENABLED, null); mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this, mPhone.getServiceStateTracker().registerForPsRestrictedDisabled(this, Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -577,7 +577,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { waitForMs(100); waitForMs(100); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true); // Disable roaming // Disable roaming doReturn(true).when(mPhone).isPhoneTypeGsm(); doReturn(true).when(mPhone).isPhoneTypeGsm(); Loading Loading @@ -1001,7 +1001,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { waitForMs(200); waitForMs(200); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null); sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null, true); sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null); sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null); sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null); sst.registerForDataConnectionDetached(mTestHandler, EVENT_DATA_CONNECTION_DETACHED, null); Loading