summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Stuart Scott <stuartscott@google.com> 2015-04-02 18:00:02 -0700
committer Stuart Scott <stuartscott@google.com> 2015-04-20 10:52:35 -0700
commitf1fb39763d87dabe254b6ed64ac8f20145035bc0 (patch)
tree72547ce7ccccfb5c242c6a5fbce3adf9ba401bf9
parent19f1faa376c08edbd2c7e19ad33107e1b9520777 (diff)
Move factoryReset to service and protect.
bug:16161518 Change-Id: I02d1bbae1887c62ee426e6f03e8bc1f18c6666bf
-rw-r--r--core/java/android/net/ConnectivityManager.java24
-rw-r--r--core/java/android/net/IConnectivityManager.aidl2
-rw-r--r--core/java/android/net/INetworkPolicyManager.aidl2
-rw-r--r--core/java/android/net/NetworkPolicyManager.java21
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java26
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java25
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java15
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl2
-rw-r--r--wifi/java/android/net/wifi/IWifiManager.aidl2
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java15
10 files changed, 72 insertions, 62 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index b34160061ca2..e75f33774040 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 9d9b1bfa3326..d6c06932d558 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/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index db7c35cd047b..c722fbce32bf 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -58,4 +58,6 @@ interface INetworkPolicyManager {
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 25ad92853b48..bc036376735d 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -187,24 +187,9 @@ public class NetworkPolicyManager {
* @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) {
}
}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index b785d3dc0ce4..4e3abade3b61 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);
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index d7658162caca..5d205fbbcecf 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -2301,4 +2301,29 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
fout.print("]");
}
+
+ @Override
+ public void factoryReset(String subscriber) {
+ mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+
+ // 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, POLICY_NONE);
+ }
+ }
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 7c68de274742..6d763e77c2a5 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -4550,15 +4550,12 @@ public class TelephonyManager {
* @hide
*/
public void factoryReset(int subId) {
- if (SubscriptionManager.isUsableSubIdValue(subId)) {
- // Enable data
- setDataEnabled(subId, true);
- // Set network selection mode to automatic
- setNetworkSelectionModeAutomatic(subId);
- // Set preferred mobile network type to the best available
- setPreferredNetworkType(subId, RILConstants.PREFERRED_NETWORK_MODE);
- // Turn off roaming
- SubscriptionManager.from(mContext).setDataRoaming(0, subId);
+ try {
+ Log.d(TAG, "factoryReset: subId=" + subId);
+ ITelephony telephony = getITelephony();
+ if (telephony != null)
+ telephony.factoryReset(subId);
+ } catch (RemoteException e) {
}
}
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 0b77c26a8b1d..73f38da857bd 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -942,4 +942,6 @@ interface ITelephony {
* Returns the subscription ID associated with the specified PhoneAccount.
*/
int getSubIdForPhoneAccount(in PhoneAccount phoneAccount);
+
+ void factoryReset(int subId);
}
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 6e6d6f6758ff..0e888e8b3c3b 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -166,5 +166,7 @@ interface IWifiManager
WifiConnectionStatistics getConnectionStatistics();
void disableEphemeralNetwork(String SSID);
+
+ void factoryReset();
}
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 18f90d80b9a1..0f7dd61ccb1c 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -2791,18 +2791,9 @@ public class WifiManager {
* @hide
*/
public void factoryReset() {
- // Enable wifi
- setWifiEnabled(true);
- // Delete all Wifi SSIDs
- List<WifiConfiguration> networks = getConfiguredNetworks();
- if (networks != null) {
- for (WifiConfiguration config : networks) {
- removeNetwork(config.networkId);
- }
- saveConfiguration();
+ try {
+ mService.factoryReset();
+ } catch (RemoteException e) {
}
-
- // Turn mobile hotspot off
- setWifiApEnabled(null, false);
}
}