Loading src/java/com/android/internal/telephony/dataconnection/DcAsyncChannel.java +5 −3 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ public class DcAsyncChannel extends AsyncChannel { sCmdToString[RSP_RESET - BASE] = "RSP_RESET"; } ConnectionParams mLastConnectionParams; // Convert cmd to string or null if unknown protected static String cmdToString(int cmd) { cmd -= BASE; Loading Loading @@ -377,9 +379,9 @@ public class DcAsyncChannel extends AsyncChannel { log("bringUp: apnContext=" + apnContext + "unmeteredUseOnly=" + unmeteredUseOnly + " onCompletedMsg=" + onCompletedMsg); } sendMessage(DataConnection.EVENT_CONNECT, new ConnectionParams(apnContext, profileId, rilRadioTechnology, unmeteredUseOnly, onCompletedMsg, connectionGeneration)); mLastConnectionParams = new ConnectionParams(apnContext, profileId, rilRadioTechnology, unmeteredUseOnly, onCompletedMsg, connectionGeneration); sendMessage(DataConnection.EVENT_CONNECT, mLastConnectionParams); } /** Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +31 −4 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class DcTracker extends Handler { private AsyncChannel mReplyAc = new AsyncChannel(); private final LocalLog mDataRoamingLeakageLog = new LocalLog(50); private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver () { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -328,7 +330,7 @@ public class DcTracker extends Handler { mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + simSuffix), DctConstants.EVENT_ROAMING_ON); DctConstants.EVENT_ROAMING_SETTING_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE); Loading Loading @@ -2774,8 +2776,10 @@ public class DcTracker extends Handler { // This method is called // 1. When the data roaming status changes from non-roaming to roaming. // 2. When allowed data roaming settings is changed by the user. private void onDataRoamingOnOrSettingsChanged() { private void onDataRoamingOnOrSettingsChanged(int messageType) { if (DBG) log("onDataRoamingOnOrSettingsChanged"); // Used to differentiate data roaming turned on vs settings changed. boolean settingChanged = (messageType == DctConstants.EVENT_ROAMING_SETTING_CHANGE); // Check if the device is actually data roaming if (!mPhone.getServiceState().getDataRoaming()) { Loading @@ -2783,6 +2787,8 @@ public class DcTracker extends Handler { return; } checkDataRoamingStatus(settingChanged); if (getDataRoamingEnabled()) { if (DBG) log("onDataRoamingOnOrSettingsChanged: setup data on roaming"); Loading @@ -2798,6 +2804,22 @@ public class DcTracker extends Handler { } } // We want to track possible roaming data leakage. Which is, if roaming setting // is disabled, yet we still setup a roaming data connection or have a connected ApnContext // switched to roaming. When this happens, we log it in a local log. private void checkDataRoamingStatus(boolean settingChanged) { if (!settingChanged && !getDataRoamingEnabled() && mPhone.getServiceState().getDataRoaming()) { for (ApnContext apnContext : mApnContexts.values()) { if (apnContext.getState() == DctConstants.State.CONNECTED) { mDataRoamingLeakageLog.log("PossibleRoamingLeakage " + " connection params: " + (apnContext.getDcAc() != null ? apnContext.getDcAc().mLastConnectionParams : "")); } } } } private void onRadioAvailable() { if (DBG) log("onRadioAvailable"); if (mPhone.getSimulatedRadioControl() != null) { Loading Loading @@ -2951,6 +2973,8 @@ public class DcTracker extends Handler { // A connection is setup apnContext.setState(DctConstants.State.CONNECTED); checkDataRoamingStatus(false); boolean isProvApn = apnContext.isProvisioningApn(); final ConnectivityManager cm = ConnectivityManager.from(mPhone.getContext()); if (mProvisionBroadcastReceiver != null) { Loading Loading @@ -3762,7 +3786,8 @@ public class DcTracker extends Handler { break; case DctConstants.EVENT_ROAMING_ON: onDataRoamingOnOrSettingsChanged(); case DctConstants.EVENT_ROAMING_SETTING_CHANGE: onDataRoamingOnOrSettingsChanged(msg.what); break; case DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE: Loading Loading @@ -4176,6 +4201,8 @@ public class DcTracker extends Handler { pw.println(" mAutoAttachOnCreation=" + mAutoAttachOnCreation.get()); pw.println(" mIsScreenOn=" + mIsScreenOn); pw.println(" mUniqueIdGenerator=" + mUniqueIdGenerator); pw.println(" mDataRoamingLeakageLog= "); mDataRoamingLeakageLog.dump(fd, pw, args); pw.flush(); pw.println(" ***************************************"); DcController dcc = mDcc; Loading Loading
src/java/com/android/internal/telephony/dataconnection/DcAsyncChannel.java +5 −3 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ public class DcAsyncChannel extends AsyncChannel { sCmdToString[RSP_RESET - BASE] = "RSP_RESET"; } ConnectionParams mLastConnectionParams; // Convert cmd to string or null if unknown protected static String cmdToString(int cmd) { cmd -= BASE; Loading Loading @@ -377,9 +379,9 @@ public class DcAsyncChannel extends AsyncChannel { log("bringUp: apnContext=" + apnContext + "unmeteredUseOnly=" + unmeteredUseOnly + " onCompletedMsg=" + onCompletedMsg); } sendMessage(DataConnection.EVENT_CONNECT, new ConnectionParams(apnContext, profileId, rilRadioTechnology, unmeteredUseOnly, onCompletedMsg, connectionGeneration)); mLastConnectionParams = new ConnectionParams(apnContext, profileId, rilRadioTechnology, unmeteredUseOnly, onCompletedMsg, connectionGeneration); sendMessage(DataConnection.EVENT_CONNECT, mLastConnectionParams); } /** Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +31 −4 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class DcTracker extends Handler { private AsyncChannel mReplyAc = new AsyncChannel(); private final LocalLog mDataRoamingLeakageLog = new LocalLog(50); private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver () { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -328,7 +330,7 @@ public class DcTracker extends Handler { mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + simSuffix), DctConstants.EVENT_ROAMING_ON); DctConstants.EVENT_ROAMING_SETTING_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE); Loading Loading @@ -2774,8 +2776,10 @@ public class DcTracker extends Handler { // This method is called // 1. When the data roaming status changes from non-roaming to roaming. // 2. When allowed data roaming settings is changed by the user. private void onDataRoamingOnOrSettingsChanged() { private void onDataRoamingOnOrSettingsChanged(int messageType) { if (DBG) log("onDataRoamingOnOrSettingsChanged"); // Used to differentiate data roaming turned on vs settings changed. boolean settingChanged = (messageType == DctConstants.EVENT_ROAMING_SETTING_CHANGE); // Check if the device is actually data roaming if (!mPhone.getServiceState().getDataRoaming()) { Loading @@ -2783,6 +2787,8 @@ public class DcTracker extends Handler { return; } checkDataRoamingStatus(settingChanged); if (getDataRoamingEnabled()) { if (DBG) log("onDataRoamingOnOrSettingsChanged: setup data on roaming"); Loading @@ -2798,6 +2804,22 @@ public class DcTracker extends Handler { } } // We want to track possible roaming data leakage. Which is, if roaming setting // is disabled, yet we still setup a roaming data connection or have a connected ApnContext // switched to roaming. When this happens, we log it in a local log. private void checkDataRoamingStatus(boolean settingChanged) { if (!settingChanged && !getDataRoamingEnabled() && mPhone.getServiceState().getDataRoaming()) { for (ApnContext apnContext : mApnContexts.values()) { if (apnContext.getState() == DctConstants.State.CONNECTED) { mDataRoamingLeakageLog.log("PossibleRoamingLeakage " + " connection params: " + (apnContext.getDcAc() != null ? apnContext.getDcAc().mLastConnectionParams : "")); } } } } private void onRadioAvailable() { if (DBG) log("onRadioAvailable"); if (mPhone.getSimulatedRadioControl() != null) { Loading Loading @@ -2951,6 +2973,8 @@ public class DcTracker extends Handler { // A connection is setup apnContext.setState(DctConstants.State.CONNECTED); checkDataRoamingStatus(false); boolean isProvApn = apnContext.isProvisioningApn(); final ConnectivityManager cm = ConnectivityManager.from(mPhone.getContext()); if (mProvisionBroadcastReceiver != null) { Loading Loading @@ -3762,7 +3786,8 @@ public class DcTracker extends Handler { break; case DctConstants.EVENT_ROAMING_ON: onDataRoamingOnOrSettingsChanged(); case DctConstants.EVENT_ROAMING_SETTING_CHANGE: onDataRoamingOnOrSettingsChanged(msg.what); break; case DctConstants.EVENT_DEVICE_PROVISIONED_CHANGE: Loading Loading @@ -4176,6 +4201,8 @@ public class DcTracker extends Handler { pw.println(" mAutoAttachOnCreation=" + mAutoAttachOnCreation.get()); pw.println(" mIsScreenOn=" + mIsScreenOn); pw.println(" mUniqueIdGenerator=" + mUniqueIdGenerator); pw.println(" mDataRoamingLeakageLog= "); mDataRoamingLeakageLog.dump(fd, pw, args); pw.flush(); pw.println(" ***************************************"); DcController dcc = mDcc; Loading