Move factoryReset to service and protect.

bug:16161518
Change-Id: I02d1bbae1887c62ee426e6f03e8bc1f18c6666bf
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index b341600..e75f337 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -40,7 +40,6 @@
 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 @@
      * @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 9d9b1bf..d6c0693 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -164,4 +164,6 @@
     boolean addVpnAddress(String address, int prefixLength);
     boolean removeVpnAddress(String address, int prefixLength);
     boolean setUnderlyingNetworksForVpn(in Network[] networks);
+
+    void factoryReset();
 }
diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index db7c35c..c722fbc 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -58,4 +58,6 @@
 
     NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state);
     boolean isNetworkMetered(in NetworkState state);
+
+    void factoryReset(String subscriber);
 }
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index 25ad9285..bc03637 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -187,24 +187,9 @@
      * @hide
      */
     public void factoryReset(String subscriber) {
-        // Turn mobile data limit off
-        NetworkPolicy[] policies = getNetworkPolicies();
-        NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriber);
-        for (NetworkPolicy policy : policies) {
-            if (policy.template.equals(template)) {
-                policy.limitBytes = NetworkPolicy.LIMIT_DISABLED;
-                policy.inferred = false;
-                policy.clearSnooze();
-            }
-        }
-        setNetworkPolicies(policies);
-
-        // Turn restrict background data off
-        setRestrictBackground(false);
-
-        // Remove app's "restrict background data" flag
-        for (int uid : getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND)) {
-            setUidPolicy(uid, NetworkPolicyManager.POLICY_NONE);
+        try {
+            mService.factoryReset(subscriber);
+        } catch (RemoteException e) {
         }
     }