From f4a2e1df940f75534af364b7d7dad46a4b25bd44 Mon Sep 17 00:00:00 2001 From: David Stevens Date: Thu, 6 Apr 2017 20:48:34 -0700 Subject: [PATCH] Reset the default usb package less often This CL makes logic for resetting the default package for handling USB intents less agressive (added in ag/101452). First, instead of listening for package changed events, we now listen for package replaced broadcasts. Second, we don't reset the default package if the app being added/updated is already the default package. Bug: 35491880 Test: Manually tested with a work profile Change-Id: Id1992239b5d8ace87fefeb4acd6ca1031c3c1085 --- .../usb/UsbProfileGroupSettingsManager.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java index 01e36f57d1bed..93cfd11b3d466 100644 --- a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java +++ b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java @@ -543,9 +543,8 @@ class UsbProfileGroupSettingsManager { } @Override - public boolean onPackageChanged(String packageName, int uid, String[] components) { + public void onPackageUpdateFinished(String packageName, int uid) { handlePackageUpdate(packageName); - return false; } @Override @@ -1207,8 +1206,11 @@ class UsbProfileGroupSettingsManager { boolean changed = false; for (DeviceFilter test : mDevicePreferenceMap.keySet()) { if (filter.matches(test)) { - mDevicePreferenceMap.remove(test); - changed = true; + UserPackage currentMatch = mDevicePreferenceMap.get(test); + if (!currentMatch.packageName.equals(packageName)) { + mDevicePreferenceMap.remove(test); + changed = true; + } } } return changed; @@ -1218,8 +1220,11 @@ class UsbProfileGroupSettingsManager { boolean changed = false; for (AccessoryFilter test : mAccessoryPreferenceMap.keySet()) { if (filter.matches(test)) { - mAccessoryPreferenceMap.remove(test); - changed = true; + UserPackage currentMatch = mAccessoryPreferenceMap.get(test); + if (!currentMatch.packageName.equals(packageName)) { + mAccessoryPreferenceMap.remove(test); + changed = true; + } } } return changed;