summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-04-13 23:15:53 +0000
committerRoshan Pius <rpius@google.com>2018-04-13 23:16:08 +0000
commit4b41c8af276b307a10bb5751596fda11079070bb (patch)
tree073949c6d664d893f82204e02fa403b30e93766e /service
parent102b0edddadbd08d9e252ae87f873ce1bd84d138 (diff)
Revert "WifiServiceImpl: Fix package removal broadcast handling"
This reverts commit 102b0edddadbd08d9e252ae87f873ce1bd84d138. Reason for revert: b/78018868 Bug: b/78018868 Change-Id: Idd3146a64a1fc5ee18839aba020a24ff99208396
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java44
1 files changed, 27 insertions, 17 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 49f00f88f..7d6c109c1 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -567,6 +567,7 @@ public class WifiServiceImpl extends IWifiManager.Stub {
// can result in race conditions when apps toggle wifi in the background
// without active user involvement. Always receive broadcasts.
registerForBroadcasts();
+ registerForPackageOrUserRemoval();
mInIdleMode = mPowerManager.isDeviceIdleMode();
if (!mWifiStateMachine.syncInitialize(mWifiStateMachineChannel)) {
@@ -2302,9 +2303,6 @@ public class WifiServiceImpl extends IWifiManager.Stub {
String action = intent.getAction();
if (action.equals(Intent.ACTION_USER_PRESENT)) {
mWifiController.sendMessage(CMD_USER_PRESENT);
- } else if (action.equals(Intent.ACTION_USER_REMOVED)) {
- int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
- mWifiStateMachine.removeUserConfigs(userHandle);
} else if (action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE,
BluetoothAdapter.STATE_DISCONNECTED);
@@ -2370,7 +2368,6 @@ public class WifiServiceImpl extends IWifiManager.Stub {
private void registerForBroadcasts() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_USER_PRESENT);
- intentFilter.addAction(Intent.ACTION_USER_REMOVED);
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
intentFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
intentFilter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED);
@@ -2381,26 +2378,39 @@ public class WifiServiceImpl extends IWifiManager.Stub {
if (trackEmergencyCallState) {
intentFilter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED);
}
+
mContext.registerReceiver(mReceiver, intentFilter);
+ }
- intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_PACKAGE_FULLY_REMOVED);
- intentFilter.addDataScheme("package");
- mContext.registerReceiver(new BroadcastReceiver() {
+ private void registerForPackageOrUserRemoval() {
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ intentFilter.addAction(Intent.ACTION_USER_REMOVED);
+ mContext.registerReceiverAsUser(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(Intent.ACTION_PACKAGE_FULLY_REMOVED)) {
- int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- Uri uri = intent.getData();
- if (uid == -1 || uri == null) {
- return;
+ switch (intent.getAction()) {
+ case Intent.ACTION_PACKAGE_REMOVED: {
+ if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
+ return;
+ }
+ int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+ Uri uri = intent.getData();
+ if (uid == -1 || uri == null) {
+ return;
+ }
+ String pkgName = uri.getSchemeSpecificPart();
+ mWifiStateMachine.removeAppConfigs(pkgName, uid);
+ break;
+ }
+ case Intent.ACTION_USER_REMOVED: {
+ int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
+ mWifiStateMachine.removeUserConfigs(userHandle);
+ break;
}
- String pkgName = uri.getSchemeSpecificPart();
- mWifiStateMachine.removeAppConfigs(pkgName, uid);
}
}
- }, intentFilter);
+ }, UserHandle.ALL, intentFilter, null, null);
}
@Override