diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index b34160061c..e75f337740 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -40,7 +40,6 @@ import android.telephony.SubscriptionManager; import android.util.ArrayMap; import android.util.Log; -import com.android.internal.net.VpnConfig; import com.android.internal.telephony.ITelephony; import com.android.internal.telephony.PhoneConstants; import com.android.internal.util.Protocol; @@ -2515,30 +2514,9 @@ public class ConnectivityManager { * @hide */ public void factoryReset() { - // Turn airplane mode off - setAirplaneMode(false); - - // Untether - for (String tether : getTetheredIfaces()) { - untether(tether); - } - - // Turn VPN off try { - VpnConfig vpnConfig = mService.getVpnConfig(); - if (vpnConfig != null) { - if (vpnConfig.legacy) { - mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN); - } else { - // Prevent this app from initiating VPN connections in the future without - // user intervention. - mService.setVpnPackageAuthorization(false); - - mService.prepareVpn(vpnConfig.user, VpnConfig.LEGACY_VPN); - } - } + mService.factoryReset(); } catch (RemoteException e) { - // Well, we tried } } diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index 9d9b1bfa33..d6c06932d5 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -164,4 +164,6 @@ interface IConnectivityManager boolean addVpnAddress(String address, int prefixLength); boolean removeVpnAddress(String address, int prefixLength); boolean setUnderlyingNetworksForVpn(in Network[] networks); + + void factoryReset(); } diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index b785d3dc0c..4e3abade3b 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -4444,4 +4444,30 @@ public class ConnectivityService extends IConnectivityManager.Stub } return success; } + + @Override + public void factoryReset() { + enforceConnectivityInternalPermission(); + // Turn airplane mode off + setAirplaneMode(false); + + // Untether + for (String tether : getTetheredIfaces()) { + untether(tether); + } + + // Turn VPN off + VpnConfig vpnConfig = getVpnConfig(); + if (vpnConfig != null) { + if (vpnConfig.legacy) { + prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN); + } else { + // Prevent this app from initiating VPN connections in the future without + // user intervention. + setVpnPackageAuthorization(false); + + prepareVpn(vpnConfig.user, VpnConfig.LEGACY_VPN); + } + } + } }