Loading android/app/OWNERS +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ cmanton@google.com eruffieux@google.com hallstrom@google.com henrichataing@google.com jpawlowski@google.com mylesgw@google.com okamil@google.com Loading android/app/aidl/android/bluetooth/IBluetooth.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -50,8 +50,8 @@ interface IBluetooth @JavaPassthrough(annotation="@android.annotation.RequiresNoPermission") int getState(); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)") oneway void enable(boolean quietMode, in AttributionSource attributionSource); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED)") oneway void offToBleOn(boolean quietMode, in AttributionSource attributionSource); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)") oneway void disable(in AttributionSource attributionSource); Loading android/app/src/com/android/bluetooth/btservice/AdapterService.java +8 −8 Original line number Diff line number Diff line Loading @@ -2304,16 +2304,16 @@ public class AdapterService extends Service { } @Override public void enable(boolean quietMode, AttributionSource source) { public void offToBleOn(boolean quietMode, AttributionSource source) { AdapterService service = getService(); if (service == null || !callerIsSystemOrActiveOrManagedUser(service, TAG, "enable") || !Utils.checkConnectPermissionForDataDelivery( service, source, "AdapterService enable")) { || !callerIsSystemOrActiveOrManagedUser(service, TAG, "offToBleOn")) { return; } service.enable(quietMode); service.enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED, null); service.offToBleOn(quietMode); } @Override Loading Loading @@ -4611,11 +4611,11 @@ public class AdapterService extends Service { return BluetoothAdapter.STATE_OFF; } public synchronized void enable(boolean quietMode) { public synchronized void offToBleOn(boolean quietMode) { // Enforce the user restriction for disallowing Bluetooth if it was set. if (mUserManager.hasUserRestrictionForUser( UserManager.DISALLOW_BLUETOOTH, UserHandle.SYSTEM)) { Log.d(TAG, "enable() called when Bluetooth was disallowed"); Log.d(TAG, "offToBleOn() called when Bluetooth was disallowed"); return; } if (Flags.fastBindToApp()) { Loading @@ -4623,7 +4623,7 @@ public class AdapterService extends Service { mHandler.post(() -> init()); } Log.i(TAG, "enable() - Enable called with quiet mode status = " + quietMode); Log.i(TAG, "offToBleOn() - Enable called with quiet mode status = " + quietMode); mQuietmode = quietMode; mAdapterStateMachine.sendMessage(AdapterState.BLE_TURN_ON); } Loading android/app/src/com/android/bluetooth/le_scan/AppScanStats.java +22 −6 Original line number Diff line number Diff line Loading @@ -619,8 +619,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { logger.logRadioScanStopped( sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), sRadioScanType, convertScanMode(sRadioScanMode), sRadioScanIntervalMs, Loading @@ -644,6 +644,22 @@ public class AppScanStats { } } private static int[] getRadioScanUids() { synchronized (sLock) { return sRadioScanWorkSourceUtil != null ? sRadioScanWorkSourceUtil.getUids() : new int[] {0}; } } private static String[] getRadioScanTags() { synchronized (sLock) { return sRadioScanWorkSourceUtil != null ? sRadioScanWorkSourceUtil.getTags() : new String[] {""}; } } @GuardedBy("sLock") private static void recordScreenOnOffMetrics(boolean isScreenOn) { if (isScreenOn) { Loading Loading @@ -680,8 +696,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { BluetoothStatsLog.write( BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED, sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), 1 /* num_results */, BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED__LE_SCAN_TYPE__SCAN_TYPE_REGULAR, sIsScreenOn); Loading @@ -704,8 +720,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { BluetoothStatsLog.write( BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED, sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), numRecords, BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED__LE_SCAN_TYPE__SCAN_TYPE_BATCH, sIsScreenOn); Loading android/app/src/com/android/bluetooth/le_scan/ScanManager.java +13 −12 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; /** Class that handles Bluetooth LE scan related operations. */ public class ScanManager { Loading Loading @@ -120,8 +121,6 @@ public class ScanManager { private final Context mContext; private final TransitionalScanHelper mScanHelper; private final AdapterService mAdapterService; private BroadcastReceiver mBatchAlarmReceiver; private boolean mBatchAlarmReceiverRegistered; private ScanNative mScanNative; private volatile ClientHandler mHandler; private BluetoothAdapterProxy mBluetoothAdapterProxy; Loading Loading @@ -993,9 +992,12 @@ public class ScanManager { private final Set<Integer> mAllPassRegularClients = new HashSet<>(); private final Set<Integer> mAllPassBatchClients = new HashSet<>(); private AlarmManager mAlarmManager; private PendingIntent mBatchScanIntervalIntent; private ScanNativeInterface mNativeInterface; private final AtomicReference<BroadcastReceiver> mBatchAlarmReceiver = new AtomicReference<>(); private final AlarmManager mAlarmManager; private final PendingIntent mBatchScanIntervalIntent; private final ScanNativeInterface mNativeInterface; ScanNative(TransitionalScanHelper scanHelper) { mNativeInterface = ScanObjectsFactory.getInstance().getScanNativeInterface(); Loading @@ -1011,7 +1013,7 @@ public class ScanManager { IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); filter.addAction(ACTION_REFRESH_BATCHED_SCAN); mBatchAlarmReceiver = mBatchAlarmReceiver.set( new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading @@ -1028,9 +1030,8 @@ public class ScanManager { } } } }; mContext.registerReceiver(mBatchAlarmReceiver, filter); mBatchAlarmReceiverRegistered = true; }); mContext.registerReceiver(mBatchAlarmReceiver.get(), filter); } private void callbackDone(int scannerId, int status) { Loading Loading @@ -1484,10 +1485,10 @@ public class ScanManager { void cleanup() { mAlarmManager.cancel(mBatchScanIntervalIntent); // Protect against multiple calls of cleanup. if (mBatchAlarmReceiverRegistered) { mContext.unregisterReceiver(mBatchAlarmReceiver); BroadcastReceiver receiver = mBatchAlarmReceiver.getAndSet(null); if (receiver != null) { mContext.unregisterReceiver(receiver); } mBatchAlarmReceiverRegistered = false; mNativeInterface.cleanup(); } Loading Loading
android/app/OWNERS +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ cmanton@google.com eruffieux@google.com hallstrom@google.com henrichataing@google.com jpawlowski@google.com mylesgw@google.com okamil@google.com Loading
android/app/aidl/android/bluetooth/IBluetooth.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -50,8 +50,8 @@ interface IBluetooth @JavaPassthrough(annotation="@android.annotation.RequiresNoPermission") int getState(); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)") oneway void enable(boolean quietMode, in AttributionSource attributionSource); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED)") oneway void offToBleOn(boolean quietMode, in AttributionSource attributionSource); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)") oneway void disable(in AttributionSource attributionSource); Loading
android/app/src/com/android/bluetooth/btservice/AdapterService.java +8 −8 Original line number Diff line number Diff line Loading @@ -2304,16 +2304,16 @@ public class AdapterService extends Service { } @Override public void enable(boolean quietMode, AttributionSource source) { public void offToBleOn(boolean quietMode, AttributionSource source) { AdapterService service = getService(); if (service == null || !callerIsSystemOrActiveOrManagedUser(service, TAG, "enable") || !Utils.checkConnectPermissionForDataDelivery( service, source, "AdapterService enable")) { || !callerIsSystemOrActiveOrManagedUser(service, TAG, "offToBleOn")) { return; } service.enable(quietMode); service.enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED, null); service.offToBleOn(quietMode); } @Override Loading Loading @@ -4611,11 +4611,11 @@ public class AdapterService extends Service { return BluetoothAdapter.STATE_OFF; } public synchronized void enable(boolean quietMode) { public synchronized void offToBleOn(boolean quietMode) { // Enforce the user restriction for disallowing Bluetooth if it was set. if (mUserManager.hasUserRestrictionForUser( UserManager.DISALLOW_BLUETOOTH, UserHandle.SYSTEM)) { Log.d(TAG, "enable() called when Bluetooth was disallowed"); Log.d(TAG, "offToBleOn() called when Bluetooth was disallowed"); return; } if (Flags.fastBindToApp()) { Loading @@ -4623,7 +4623,7 @@ public class AdapterService extends Service { mHandler.post(() -> init()); } Log.i(TAG, "enable() - Enable called with quiet mode status = " + quietMode); Log.i(TAG, "offToBleOn() - Enable called with quiet mode status = " + quietMode); mQuietmode = quietMode; mAdapterStateMachine.sendMessage(AdapterState.BLE_TURN_ON); } Loading
android/app/src/com/android/bluetooth/le_scan/AppScanStats.java +22 −6 Original line number Diff line number Diff line Loading @@ -619,8 +619,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { logger.logRadioScanStopped( sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), sRadioScanType, convertScanMode(sRadioScanMode), sRadioScanIntervalMs, Loading @@ -644,6 +644,22 @@ public class AppScanStats { } } private static int[] getRadioScanUids() { synchronized (sLock) { return sRadioScanWorkSourceUtil != null ? sRadioScanWorkSourceUtil.getUids() : new int[] {0}; } } private static String[] getRadioScanTags() { synchronized (sLock) { return sRadioScanWorkSourceUtil != null ? sRadioScanWorkSourceUtil.getTags() : new String[] {""}; } } @GuardedBy("sLock") private static void recordScreenOnOffMetrics(boolean isScreenOn) { if (isScreenOn) { Loading Loading @@ -680,8 +696,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { BluetoothStatsLog.write( BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED, sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), 1 /* num_results */, BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED__LE_SCAN_TYPE__SCAN_TYPE_REGULAR, sIsScreenOn); Loading @@ -704,8 +720,8 @@ public class AppScanStats { if (Flags.bleScanAdvMetricsRedesign()) { BluetoothStatsLog.write( BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED, sRadioScanWorkSourceUtil.getUids(), sRadioScanWorkSourceUtil.getTags(), getRadioScanUids(), getRadioScanTags(), numRecords, BluetoothStatsLog.LE_SCAN_RESULT_RECEIVED__LE_SCAN_TYPE__SCAN_TYPE_BATCH, sIsScreenOn); Loading
android/app/src/com/android/bluetooth/le_scan/ScanManager.java +13 −12 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; /** Class that handles Bluetooth LE scan related operations. */ public class ScanManager { Loading Loading @@ -120,8 +121,6 @@ public class ScanManager { private final Context mContext; private final TransitionalScanHelper mScanHelper; private final AdapterService mAdapterService; private BroadcastReceiver mBatchAlarmReceiver; private boolean mBatchAlarmReceiverRegistered; private ScanNative mScanNative; private volatile ClientHandler mHandler; private BluetoothAdapterProxy mBluetoothAdapterProxy; Loading Loading @@ -993,9 +992,12 @@ public class ScanManager { private final Set<Integer> mAllPassRegularClients = new HashSet<>(); private final Set<Integer> mAllPassBatchClients = new HashSet<>(); private AlarmManager mAlarmManager; private PendingIntent mBatchScanIntervalIntent; private ScanNativeInterface mNativeInterface; private final AtomicReference<BroadcastReceiver> mBatchAlarmReceiver = new AtomicReference<>(); private final AlarmManager mAlarmManager; private final PendingIntent mBatchScanIntervalIntent; private final ScanNativeInterface mNativeInterface; ScanNative(TransitionalScanHelper scanHelper) { mNativeInterface = ScanObjectsFactory.getInstance().getScanNativeInterface(); Loading @@ -1011,7 +1013,7 @@ public class ScanManager { IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); filter.addAction(ACTION_REFRESH_BATCHED_SCAN); mBatchAlarmReceiver = mBatchAlarmReceiver.set( new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading @@ -1028,9 +1030,8 @@ public class ScanManager { } } } }; mContext.registerReceiver(mBatchAlarmReceiver, filter); mBatchAlarmReceiverRegistered = true; }); mContext.registerReceiver(mBatchAlarmReceiver.get(), filter); } private void callbackDone(int scannerId, int status) { Loading Loading @@ -1484,10 +1485,10 @@ public class ScanManager { void cleanup() { mAlarmManager.cancel(mBatchScanIntervalIntent); // Protect against multiple calls of cleanup. if (mBatchAlarmReceiverRegistered) { mContext.unregisterReceiver(mBatchAlarmReceiver); BroadcastReceiver receiver = mBatchAlarmReceiver.getAndSet(null); if (receiver != null) { mContext.unregisterReceiver(receiver); } mBatchAlarmReceiverRegistered = false; mNativeInterface.cleanup(); } Loading