Merge changes I2b50eb83,I439cb5a4 into tm-dev
* changes:
Update the event timeout seconds according to snippet side.
Refactor Fast Pair provider side.
diff --git a/nearby/framework/java/android/nearby/NearbyManager.java b/nearby/framework/java/android/nearby/NearbyManager.java
index 7fb14ef..a217677 100644
--- a/nearby/framework/java/android/nearby/NearbyManager.java
+++ b/nearby/framework/java/android/nearby/NearbyManager.java
@@ -24,6 +24,7 @@
import android.annotation.SystemService;
import android.content.Context;
import android.os.RemoteException;
+import android.provider.Settings;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
@@ -46,7 +47,15 @@
@SystemService(Context.NEARBY_SERVICE)
public class NearbyManager {
- private static final String TAG = "NearbyManager";
+ /**
+ * Whether allows Fast Pair to scan.
+ *
+ * (0 = disabled, 1 = enabled)
+ *
+ * @hide
+ */
+ public static final String FAST_PAIR_SCAN_ENABLED = "fast_pair_scan_enabled";
+
@GuardedBy("sScanListeners")
private static final WeakHashMap<ScanCallback, WeakReference<ScanListenerTransport>>
sScanListeners = new WeakHashMap<>();
@@ -139,7 +148,6 @@
}
}
-
/**
* Start broadcasting the request using nearby specification.
*
@@ -162,6 +170,30 @@
// TODO(b/218187205): implement broadcast.
}
+ /**
+ * Read from {@link Settings} whether Fast Pair scan is enabled.
+ *
+ * @param context the {@link Context} to query the setting.
+ * @param def the default value if no setting value.
+ * @return whether the Fast Pair is enabled.
+ */
+ public static boolean getFastPairScanEnabled(@NonNull Context context, boolean def) {
+ final int enabled = Settings.Secure.getInt(
+ context.getContentResolver(), FAST_PAIR_SCAN_ENABLED, (def ? 1 : 0));
+ return enabled != 0;
+ }
+
+ /**
+ * Write into {@link Settings} whether Fast Pair scan is enabled
+ *
+ * @param context the {@link Context} to set the setting.
+ * @param enable whether the Fast Pair scan should be enabled.
+ */
+ public static void setFastPairScanEnabled(@NonNull Context context, boolean enable) {
+ Settings.Secure.putInt(
+ context.getContentResolver(), FAST_PAIR_SCAN_ENABLED, enable ? 1 : 0);
+ }
+
private static class ScanListenerTransport extends IScanListener.Stub {
private @ScanRequest.ScanType int mScanType;
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
index cb4e6cb..7604771 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
@@ -16,7 +16,6 @@
package com.android.server.nearby.fastpair;
-import static com.android.server.nearby.fastpair.Constant.SETTINGS_TRUE_VALUE;
import static com.android.server.nearby.fastpair.Constant.TAG;
import android.annotation.Nullable;
@@ -152,13 +151,8 @@
.registerReceiver(mScreenBroadcastReceiver, mIntentFilter);
Locator.getFromContextWrapper(mLocatorContextWrapper, FastPairCacheManager.class);
- try {
- mScanEnabled = getScanEnabledFromSettings();
- mScanEnabled = ENFORCED_SCAN_ENABLED_VALUE;
- } catch (Settings.SettingNotFoundException e) {
- Log.w(TAG,
- "initiate: Failed to get initial scan enabled status from Settings.", e);
- }
+ mScanEnabled = NearbyManager.getFastPairScanEnabled(mLocatorContextWrapper, true);
+ mScanEnabled = ENFORCED_SCAN_ENABLED_VALUE;
registerFastPairScanChangeContentObserver(mLocatorContextWrapper.getContentResolver());
}
@@ -359,16 +353,13 @@
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
- try {
- setScanEnabled(getScanEnabledFromSettings());
- } catch (Settings.SettingNotFoundException e) {
- Log.e(TAG, "Failed to get scan switch updates in Settings page.", e);
- }
+ setScanEnabled(
+ NearbyManager.getFastPairScanEnabled(mLocatorContextWrapper, mScanEnabled));
}
};
try {
resolver.registerContentObserver(
- Settings.Secure.getUriFor(Settings.Secure.FAST_PAIR_SCAN_ENABLED),
+ Settings.Secure.getUriFor(NearbyManager.FAST_PAIR_SCAN_ENABLED),
/* notifyForDescendants= */ false,
mFastPairScanChangeContentObserver);
} catch (SecurityException e) {
@@ -403,13 +394,6 @@
return (NearbyManager) mLocatorContextWrapper
.getApplicationContext().getSystemService(Context.NEARBY_SERVICE);
}
-
- private boolean getScanEnabledFromSettings() throws Settings.SettingNotFoundException {
- return Settings.Secure.getInt(
- mLocatorContextWrapper.getContext().getContentResolver(),
- Settings.Secure.FAST_PAIR_SCAN_ENABLED) == SETTINGS_TRUE_VALUE;
- }
-
private void setScanEnabled(boolean scanEnabled) {
if (mScanEnabled == scanEnabled) {
return;
diff --git a/nearby/tests/cts/fastpair/AndroidManifest.xml b/nearby/tests/cts/fastpair/AndroidManifest.xml
index 463a926..e77d70f 100644
--- a/nearby/tests/cts/fastpair/AndroidManifest.xml
+++ b/nearby/tests/cts/fastpair/AndroidManifest.xml
@@ -18,6 +18,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.nearby.cts">
<uses-sdk android:minSdkVersion="32" android:targetSdkVersion="32" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+
<application>
<uses-library android:name="android.test.runner"/>
</application>
diff --git a/nearby/tests/cts/fastpair/AndroidTest.xml b/nearby/tests/cts/fastpair/AndroidTest.xml
index 59cc779..360bbf3 100644
--- a/nearby/tests/cts/fastpair/AndroidTest.xml
+++ b/nearby/tests/cts/fastpair/AndroidTest.xml
@@ -16,7 +16,8 @@
<configuration description="Config for CTS Nearby Fast Pair test cases">
<option name="test-suite-tag" value="cts" />
<option name="config-descriptor:metadata" key="component" value="location" />
- <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+ <!-- Instant cannot access NearbyManager. -->
+ <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
<option name="config-descriptor:metadata" key="parameter" value="all_foldable_states" />
@@ -32,4 +33,4 @@
class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
<option name="mainline-module-package-name" value="com.google.android.tethering" />
</object>
-</configuration>
\ No newline at end of file
+</configuration>
diff --git a/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java b/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
index 938eab2..eedcce1 100644
--- a/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
+++ b/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
@@ -18,6 +18,8 @@
import static android.nearby.PresenceCredential.IDENTITY_TYPE_PRIVATE;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
@@ -36,6 +38,7 @@
import androidx.annotation.RequiresApi;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SdkSuppress;
+import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.Before;
import org.junit.Test;
@@ -63,7 +66,10 @@
@Before
public void setUp() {
initMocks(this);
+
when(mContext.getSystemService(Context.NEARBY_SERVICE)).thenReturn(mNearbyManager);
+ when(mContext.getContentResolver()).thenReturn(
+ InstrumentationRegistry.getInstrumentation().getContext().getContentResolver());
}
@Test
@@ -110,4 +116,11 @@
callback);
mNearbyManager.stopBroadcast(callback);
}
+
+ @Test
+ @SdkSuppress(minSdkVersion = 32, codeName = "T")
+ public void testSettingsEnable() {
+ NearbyManager.setFastPairScanEnabled(mContext, false);
+ assertThat(NearbyManager.getFastPairScanEnabled(mContext, true)).isFalse();
+ }
}
diff --git a/nearby/tests/integration/privileged/src/android/nearby/integration/privileged/FastPairSettingsProviderTest.kt b/nearby/tests/integration/privileged/src/android/nearby/integration/privileged/FastPairSettingsProviderTest.kt
index 761aaf6..af3f75f 100644
--- a/nearby/tests/integration/privileged/src/android/nearby/integration/privileged/FastPairSettingsProviderTest.kt
+++ b/nearby/tests/integration/privileged/src/android/nearby/integration/privileged/FastPairSettingsProviderTest.kt
@@ -38,10 +38,10 @@
val appContext = ApplicationProvider.getApplicationContext<Context>()
val contentResolver = appContext.contentResolver
- Settings.Secure.putInt(contentResolver, Settings.Secure.FAST_PAIR_SCAN_ENABLED, flag.value)
+ Settings.Secure.putInt(contentResolver, "fast_pair_scan_enabled", flag.value)
val actualValue = Settings.Secure.getInt(
- contentResolver, Settings.Secure.FAST_PAIR_SCAN_ENABLED, /* default value */ -1)
+ contentResolver, "fast_pair_scan_enabled", /* default value */ -1)
assertThat(actualValue).isEqualTo(flag.value)
}
diff --git a/nearby/tests/integration/untrusted/src/android/nearby/integration/untrusted/FastPairSettingsProviderTest.kt b/nearby/tests/integration/untrusted/src/android/nearby/integration/untrusted/FastPairSettingsProviderTest.kt
index b73e737..c549073 100644
--- a/nearby/tests/integration/untrusted/src/android/nearby/integration/untrusted/FastPairSettingsProviderTest.kt
+++ b/nearby/tests/integration/untrusted/src/android/nearby/integration/untrusted/FastPairSettingsProviderTest.kt
@@ -40,14 +40,14 @@
@Test
fun testSettingsFastPairScan_fromUnTrustedApp_readsSucceed() {
Settings.Secure.getInt(contentResolver,
- Settings.Secure.FAST_PAIR_SCAN_ENABLED, /* default value */ -1)
+ "fast_pair_scan_enabled", /* default value */ -1)
}
/** Verify untrusted app can't write Fast Pair scan enabled setting. */
@Test
fun testSettingsFastPairScan_fromUnTrustedApp_writesFailed() {
assertFailsWith<SecurityException> {
- Settings.Secure.putInt(contentResolver, Settings.Secure.FAST_PAIR_SCAN_ENABLED, 1)
+ Settings.Secure.putInt(contentResolver, "fast_pair_scan_enabled", 1)
}
}
}
diff --git a/nearby/tests/multidevices/clients/AndroidManifest.xml b/nearby/tests/multidevices/clients/AndroidManifest.xml
index b6dc5e8..9641756 100644
--- a/nearby/tests/multidevices/clients/AndroidManifest.xml
+++ b/nearby/tests/multidevices/clients/AndroidManifest.xml
@@ -44,7 +44,7 @@
Must stay in the same process as Nearby Discovery Service.
-->
<service
- android:name=".fastpair.seeker.FastPairTestDataProviderService"
+ android:name=".fastpair.seeker.dataprovider.FastPairTestDataProviderService"
android:exported="true"
android:permission="android.permission.WRITE_SECURE_SETTINGS"
android:visibleToInstantApps="true">
diff --git a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairSeekerSnippet.kt b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairSeekerSnippet.kt
index 6c28b97..8f5d120 100644
--- a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairSeekerSnippet.kt
+++ b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairSeekerSnippet.kt
@@ -21,6 +21,7 @@
import android.nearby.NearbyManager
import android.nearby.ScanCallback
import android.nearby.ScanRequest
+import android.nearby.multidevices.fastpair.seeker.dataprovider.FastPairTestDataCache
import androidx.test.core.app.ApplicationProvider
import com.google.android.mobly.snippet.Snippet
import com.google.android.mobly.snippet.rpc.AsyncRpc
diff --git a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataCache.kt b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataCache.kt
similarity index 98%
rename from nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataCache.kt
rename to nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataCache.kt
index 28523c1..ad2b40d 100644
--- a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataCache.kt
+++ b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataCache.kt
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package android.nearby.multidevices.fastpair.seeker
+package android.nearby.multidevices.fastpair.seeker.dataprovider
import android.nearby.FastPairAccountKeyDeviceMetadata
import android.nearby.FastPairAntispoofkeyDeviceMetadata
import android.nearby.FastPairDeviceMetadata
import android.nearby.FastPairDiscoveryItem
-import com.google.common.io.BaseEncoding.base64
+import com.google.common.io.BaseEncoding
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
@@ -297,6 +297,6 @@
}
}
- private fun String.base64Decode(): ByteArray = base64().decode(this)
- private fun ByteArray.base64Encode(): String = base64().encode(this)
+ private fun String.base64Decode(): ByteArray = BaseEncoding.base64().decode(this)
+ private fun ByteArray.base64Encode(): String = BaseEncoding.base64().encode(this)
}
\ No newline at end of file
diff --git a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProvider.kt b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProvider.kt
similarity index 98%
rename from nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProvider.kt
rename to nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProvider.kt
index a1f0369..9ff513a 100644
--- a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProvider.kt
+++ b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProvider.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.nearby.multidevices.fastpair.seeker
+package android.nearby.multidevices.fastpair.seeker.dataprovider
import android.accounts.Account
import android.nearby.FastPairDataProviderBase
diff --git a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProviderService.kt b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProviderService.kt
similarity index 95%
rename from nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProviderService.kt
rename to nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProviderService.kt
index 5a1c832..3c0c84c 100644
--- a/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/FastPairTestDataProviderService.kt
+++ b/nearby/tests/multidevices/clients/src/android/nearby/multidevices/fastpair/seeker/dataprovider/FastPairTestDataProviderService.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.nearby.multidevices.fastpair.seeker
+package android.nearby.multidevices.fastpair.seeker.dataprovider
import android.app.Service
import android.content.Intent