diff options
| author | 2015-04-02 18:00:02 -0700 | |
|---|---|---|
| committer | 2015-04-20 10:52:35 -0700 | |
| commit | f1fb39763d87dabe254b6ed64ac8f20145035bc0 (patch) | |
| tree | 72547ce7ccccfb5c242c6a5fbce3adf9ba401bf9 | |
| parent | 19f1faa376c08edbd2c7e19ad33107e1b9520777 (diff) | |
Move factoryReset to service and protect.
bug:16161518
Change-Id: I02d1bbae1887c62ee426e6f03e8bc1f18c6666bf
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); } } |