diff options
author | Roshan Pius <rpius@google.com> | 2018-04-13 23:15:53 +0000 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2018-04-13 23:16:08 +0000 |
commit | 4b41c8af276b307a10bb5751596fda11079070bb (patch) | |
tree | 073949c6d664d893f82204e02fa403b30e93766e /service | |
parent | 102b0edddadbd08d9e252ae87f873ce1bd84d138 (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.java | 44 |
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 |