From 3f0ce98cfaa7e712d11af67c93d7d6825ffa5961 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Fri, 29 Nov 2019 22:11:11 +0100 Subject: [PATCH] Do not call SystemConfig.getInstance() from Bluetooth (1/2) Move call to SystemConfig.getInstance into BluetoothManagerService Bug: 145297991 Change-Id: I6edd91b831a240117757cb6683d8a373e861db99 --- .../server/BluetoothManagerService.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index 798a4c663c511..a3188443591fb 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -74,6 +74,7 @@ import com.android.server.pm.UserRestrictionsUtils; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.HashMap; +import java.util.ArrayList; import java.util.LinkedList; import java.util.Locale; import java.util.Map; @@ -695,6 +696,35 @@ class BluetoothManagerService extends IBluetoothManager.Stub { return mIsHearingAidProfileSupported; } + @Override + /** @hide */ + public java.util.List getSystemConfigEnabledProfilesForPackage(String packageName) { + if (Binder.getCallingUid() != Process.BLUETOOTH_UID) { + Slog.w(TAG, "getSystemConfigEnabledProfilesForPackage(): not allowed for non-bluetooth"); + return null; + } + + SystemConfig systemConfig = SystemConfig.getInstance(); + if (systemConfig == null) { + return null; + } + + android.util.ArrayMap componentEnabledStates = + systemConfig.getComponentsEnabledStates(packageName); + if (componentEnabledStates == null) { + return null; + } + + ArrayList enabledProfiles = new ArrayList(); + for (Map.Entry entry : componentEnabledStates.entrySet()) { + if (entry.getValue()) { + enabledProfiles.add(entry.getKey()); + } + } + + return enabledProfiles; + } + // Monitor change of BLE scan only mode settings. private void registerForBleScanModeChange() { ContentObserver contentObserver = new ContentObserver(null) {