[nearby] Add nearby_enable_ble_in_init flag
Bug: 312430336 Ignore-AOSP-First: nearby_not_in_aosp_yet Test: -m Change-Id: I5bafa8a85d4f2169fcdef73e2d9f21534553ff72
This commit is contained in:
@@ -54,6 +54,11 @@ public class NearbyConfiguration {
|
||||
public static final String NEARBY_REFACTOR_DISCOVERY_MANAGER =
|
||||
"nearby_refactor_discovery_manager";
|
||||
|
||||
/**
|
||||
* Flag to guard enable BLE during Nearby Service init time.
|
||||
*/
|
||||
public static final String NEARBY_ENABLE_BLE_IN_INIT = "nearby_enable_ble_in_init";
|
||||
|
||||
private static final boolean IS_USER_BUILD = "user".equals(Build.TYPE);
|
||||
|
||||
private final DeviceConfigListener mDeviceConfigListener = new DeviceConfigListener();
|
||||
@@ -67,6 +72,8 @@ public class NearbyConfiguration {
|
||||
private boolean mSupportTestApp;
|
||||
@GuardedBy("mDeviceConfigLock")
|
||||
private boolean mRefactorDiscoveryManager;
|
||||
@GuardedBy("mDeviceConfigLock")
|
||||
private boolean mEnableBleInInit;
|
||||
|
||||
public NearbyConfiguration() {
|
||||
mDeviceConfigListener.start();
|
||||
@@ -131,6 +138,15 @@ public class NearbyConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} if enableBLE() is called during NearbyService init time.
|
||||
*/
|
||||
public boolean enableBleInInit() {
|
||||
synchronized (mDeviceConfigLock) {
|
||||
return mEnableBleInInit;
|
||||
}
|
||||
}
|
||||
|
||||
private class DeviceConfigListener implements DeviceConfig.OnPropertiesChangedListener {
|
||||
public void start() {
|
||||
DeviceConfig.addOnPropertiesChangedListener(getNamespace(),
|
||||
@@ -149,6 +165,8 @@ public class NearbyConfiguration {
|
||||
NEARBY_SUPPORT_TEST_APP, false /* defaultValue */);
|
||||
mRefactorDiscoveryManager = getDeviceConfigBoolean(
|
||||
NEARBY_REFACTOR_DISCOVERY_MANAGER, false /* defaultValue */);
|
||||
mEnableBleInInit = getDeviceConfigBoolean(
|
||||
NEARBY_ENABLE_BLE_IN_INIT, true /* defaultValue */);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.server.nearby.NearbyConfiguration;
|
||||
import com.android.server.nearby.injector.Injector;
|
||||
import com.android.server.nearby.managers.registration.DiscoveryRegistration;
|
||||
import com.android.server.nearby.provider.AbstractDiscoveryProvider;
|
||||
@@ -67,6 +68,7 @@ public class DiscoveryProviderManager extends
|
||||
private final BleDiscoveryProvider mBleDiscoveryProvider;
|
||||
private final Injector mInjector;
|
||||
private final Executor mExecutor;
|
||||
private final NearbyConfiguration mNearbyConfiguration;
|
||||
|
||||
public DiscoveryProviderManager(Context context, Injector injector) {
|
||||
Log.v(TAG, "DiscoveryProviderManager: ");
|
||||
@@ -76,6 +78,7 @@ public class DiscoveryProviderManager extends
|
||||
mChreDiscoveryProvider = new ChreDiscoveryProvider(mContext,
|
||||
new ChreCommunication(injector, mContext, mExecutor), mExecutor);
|
||||
mInjector = injector;
|
||||
mNearbyConfiguration = new NearbyConfiguration();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -87,6 +90,7 @@ public class DiscoveryProviderManager extends
|
||||
mInjector = injector;
|
||||
mBleDiscoveryProvider = bleDiscoveryProvider;
|
||||
mChreDiscoveryProvider = chreDiscoveryProvider;
|
||||
mNearbyConfiguration = new NearbyConfiguration();
|
||||
}
|
||||
|
||||
private static boolean isChreOnly(Set<ScanFilter> scanFilters) {
|
||||
@@ -143,7 +147,9 @@ public class DiscoveryProviderManager extends
|
||||
/** Called after boot completed. */
|
||||
public void init() {
|
||||
// Register BLE only scan when Bluetooth is turned off
|
||||
setBleScanEnabled();
|
||||
if (mNearbyConfiguration.enableBleInInit()) {
|
||||
setBleScanEnabled();
|
||||
}
|
||||
if (mInjector.getContextHubManager() != null) {
|
||||
mChreDiscoveryProvider.init();
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.server.nearby.NearbyConfiguration;
|
||||
import com.android.server.nearby.injector.Injector;
|
||||
import com.android.server.nearby.metrics.NearbyMetrics;
|
||||
import com.android.server.nearby.presence.PresenceDiscoveryResult;
|
||||
@@ -70,6 +71,7 @@ public class DiscoveryProviderManagerLegacy implements AbstractDiscoveryProvider
|
||||
private final Context mContext;
|
||||
private final BleDiscoveryProvider mBleDiscoveryProvider;
|
||||
private final Injector mInjector;
|
||||
private final NearbyConfiguration mNearbyConfiguration;
|
||||
@ScanRequest.ScanMode
|
||||
private int mScanMode;
|
||||
@GuardedBy("mLock")
|
||||
@@ -84,6 +86,7 @@ public class DiscoveryProviderManagerLegacy implements AbstractDiscoveryProvider
|
||||
mContext, new ChreCommunication(injector, mContext, executor), executor);
|
||||
mScanTypeScanListenerRecordMap = new HashMap<>();
|
||||
mInjector = injector;
|
||||
mNearbyConfiguration = new NearbyConfiguration();
|
||||
Log.v(TAG, "DiscoveryProviderManagerLegacy: ");
|
||||
}
|
||||
|
||||
@@ -97,6 +100,7 @@ public class DiscoveryProviderManagerLegacy implements AbstractDiscoveryProvider
|
||||
mBleDiscoveryProvider = bleDiscoveryProvider;
|
||||
mChreDiscoveryProvider = chreDiscoveryProvider;
|
||||
mScanTypeScanListenerRecordMap = scanTypeScanListenerRecordMap;
|
||||
mNearbyConfiguration = new NearbyConfiguration();
|
||||
}
|
||||
|
||||
private static boolean isChreOnly(List<ScanFilter> scanFilters) {
|
||||
@@ -222,7 +226,9 @@ public class DiscoveryProviderManagerLegacy implements AbstractDiscoveryProvider
|
||||
/** Called after boot completed. */
|
||||
public void init() {
|
||||
// Register BLE only scan when Bluetooth is turned off
|
||||
setBleScanEnabled();
|
||||
if (mNearbyConfiguration.enableBleInInit()) {
|
||||
setBleScanEnabled();
|
||||
}
|
||||
if (mInjector.getContextHubManager() != null) {
|
||||
mChreDiscoveryProvider.init();
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.server.nearby.managers;
|
||||
|
||||
import static android.Manifest.permission.READ_DEVICE_CONFIG;
|
||||
import static android.nearby.PresenceCredential.IDENTITY_TYPE_PRIVATE;
|
||||
import static android.nearby.ScanRequest.SCAN_TYPE_NEARBY_PRESENCE;
|
||||
|
||||
@@ -38,6 +39,8 @@ import android.nearby.PublicCredential;
|
||||
import android.nearby.ScanRequest;
|
||||
import android.os.IBinder;
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
|
||||
import com.android.server.nearby.injector.Injector;
|
||||
import com.android.server.nearby.provider.BleDiscoveryProvider;
|
||||
import com.android.server.nearby.provider.ChreCommunication;
|
||||
@@ -139,6 +142,8 @@ public class DiscoveryProviderManagerLegacyTest {
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
InstrumentationRegistry.getInstrumentation().getUiAutomation().adoptShellPermissionIdentity(
|
||||
READ_DEVICE_CONFIG);
|
||||
MockitoAnnotations.initMocks(this);
|
||||
when(mInjector.getAppOpsManager()).thenReturn(mAppOpsManager);
|
||||
when(mInjector.getBluetoothAdapter()).thenReturn(mBluetoothAdapter);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.server.nearby.managers;
|
||||
|
||||
import static android.Manifest.permission.READ_DEVICE_CONFIG;
|
||||
import static android.nearby.PresenceCredential.IDENTITY_TYPE_PRIVATE;
|
||||
import static android.nearby.ScanRequest.SCAN_TYPE_NEARBY_PRESENCE;
|
||||
|
||||
@@ -39,6 +40,8 @@ import android.nearby.PublicCredential;
|
||||
import android.nearby.ScanRequest;
|
||||
import android.os.IBinder;
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
|
||||
import com.android.server.nearby.injector.Injector;
|
||||
import com.android.server.nearby.provider.BleDiscoveryProvider;
|
||||
import com.android.server.nearby.provider.ChreCommunication;
|
||||
@@ -132,6 +135,8 @@ public class DiscoveryProviderManagerTest {
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
InstrumentationRegistry.getInstrumentation().getUiAutomation().adoptShellPermissionIdentity(
|
||||
READ_DEVICE_CONFIG);
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mExecutor = Executors.newSingleThreadExecutor();
|
||||
when(mInjector.getAppOpsManager()).thenReturn(mAppOpsManager);
|
||||
|
||||
Reference in New Issue
Block a user