summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2024-05-30 17:24:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-05-30 17:24:32 +0000
commit057e8a500d3211cb47d000b0520f8c8f4dfc5e00 (patch)
tree71e440b84be8000040489c3a8f9bc3ed1b8c869f /tests
parent813b8c3690d4fcf1c3e9a185d56741a5ffd3c571 (diff)
parent5c9c3a7462dc45907ee30516f43aff68ada3d06d (diff)
Merge "Disable sharing when device is under active FRP lock" into main
Diffstat (limited to 'tests')
-rw-r--r--tests/activity/src/com/android/intentresolver/ChooserActivityTest.java15
-rw-r--r--tests/activity/src/com/android/intentresolver/platform/FakeSettingsModule.kt33
-rw-r--r--tests/shared/src/com/android/intentresolver/platform/FakeSecureSettings.kt60
-rw-r--r--tests/shared/src/com/android/intentresolver/platform/FakeSettings.kt43
-rw-r--r--tests/unit/src/com/android/intentresolver/platform/FakeSettingsTest.kt (renamed from tests/unit/src/com/android/intentresolver/platform/FakeSecureSettingsTest.kt)44
-rw-r--r--tests/unit/src/com/android/intentresolver/platform/NearbyShareModuleTest.kt6
6 files changed, 118 insertions, 83 deletions
diff --git a/tests/activity/src/com/android/intentresolver/ChooserActivityTest.java b/tests/activity/src/com/android/intentresolver/ChooserActivityTest.java
index a16e201b..a8b8b2e9 100644
--- a/tests/activity/src/com/android/intentresolver/ChooserActivityTest.java
+++ b/tests/activity/src/com/android/intentresolver/ChooserActivityTest.java
@@ -91,6 +91,7 @@ import android.os.UserHandle;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.DeviceConfig;
+import android.provider.Settings;
import android.service.chooser.ChooserAction;
import android.service.chooser.ChooserTarget;
import android.text.Spannable;
@@ -134,6 +135,7 @@ import com.android.intentresolver.logging.EventLog;
import com.android.intentresolver.logging.FakeEventLog;
import com.android.intentresolver.platform.AppPredictionAvailable;
import com.android.intentresolver.platform.AppPredictionModule;
+import com.android.intentresolver.platform.GlobalSettings;
import com.android.intentresolver.platform.ImageEditor;
import com.android.intentresolver.platform.ImageEditorModule;
import com.android.intentresolver.shared.model.User;
@@ -237,6 +239,9 @@ public class ChooserActivityTest {
@ApplicationContext
Context mContext;
+ @Inject
+ GlobalSettings mGlobalSettings;
+
/** An arbitrary pre-installed activity that handles this type of intent. */
@BindValue
@ImageEditor
@@ -2769,6 +2774,16 @@ public class ChooserActivityTest {
assertThat(activity.getCurrentUserHandle(), is(PERSONAL_USER_HANDLE));
}
+ @Test
+ public void chooserDisabledWhileDeviceFrpLocked() {
+ mGlobalSettings.putBoolean(Settings.Global.SECURE_FRP_MODE, true);
+ Intent viewIntent = createSendTextIntent();
+ ChooserWrapperActivity activity = mActivityRule.launchActivity(
+ Intent.createChooser(viewIntent, "chooser test"));
+ waitForIdle();
+ assertTrue(activity.isFinishing());
+ }
+
private Intent createChooserIntent(Intent intent, Intent[] initialIntents) {
Intent chooserIntent = new Intent();
chooserIntent.setAction(Intent.ACTION_CHOOSER);
diff --git a/tests/activity/src/com/android/intentresolver/platform/FakeSettingsModule.kt b/tests/activity/src/com/android/intentresolver/platform/FakeSettingsModule.kt
new file mode 100644
index 00000000..9295f054
--- /dev/null
+++ b/tests/activity/src/com/android/intentresolver/platform/FakeSettingsModule.kt
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver.platform
+
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.components.SingletonComponent
+import dagger.hilt.testing.TestInstallIn
+import javax.inject.Singleton
+
+@Module
+@TestInstallIn(components = [SingletonComponent::class], replaces = [SettingsModule::class])
+object FakeSettingsModule {
+ @Provides @Singleton fun secureSettings(): SecureSettings = FakeSettings()
+
+ @Provides @Singleton fun systemSettings(): SystemSettings = FakeSettings()
+
+ @Provides @Singleton fun globalSettings(): GlobalSettings = FakeSettings()
+}
diff --git a/tests/shared/src/com/android/intentresolver/platform/FakeSecureSettings.kt b/tests/shared/src/com/android/intentresolver/platform/FakeSecureSettings.kt
deleted file mode 100644
index 862be76f..00000000
--- a/tests/shared/src/com/android/intentresolver/platform/FakeSecureSettings.kt
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.platform
-
-/**
- * Creates a SecureSettings instance with predefined values:
- *
- * val settings = fakeSecureSettings {
- * putString("stringValue", "example")
- * putInt("intValue", 42)
- * }
- */
-fun fakeSecureSettings(block: FakeSecureSettings.Builder.() -> Unit): SecureSettings {
- return FakeSecureSettings.Builder().apply(block).build()
-}
-
-/** An in memory implementation of [SecureSettings]. */
-class FakeSecureSettings private constructor(private val map: Map<String, String>) :
- SecureSettings {
-
- override fun getString(name: String): String? = map[name]
- override fun getInt(name: String): Int? = getString(name)?.toIntOrNull()
- override fun getLong(name: String): Long? = getString(name)?.toLongOrNull()
- override fun getFloat(name: String): Float? = getString(name)?.toFloatOrNull()
-
- class Builder {
- private val map = mutableMapOf<String, String>()
-
- fun putString(name: String, value: String) {
- map[name] = value
- }
- fun putInt(name: String, value: Int) {
- map[name] = value.toString()
- }
- fun putLong(name: String, value: Long) {
- map[name] = value.toString()
- }
- fun putFloat(name: String, value: Float) {
- map[name] = value.toString()
- }
-
- fun build(): SecureSettings {
- return FakeSecureSettings(map.toMap())
- }
- }
-}
diff --git a/tests/shared/src/com/android/intentresolver/platform/FakeSettings.kt b/tests/shared/src/com/android/intentresolver/platform/FakeSettings.kt
new file mode 100644
index 00000000..55cd7127
--- /dev/null
+++ b/tests/shared/src/com/android/intentresolver/platform/FakeSettings.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver.platform
+
+/**
+ * Creates a Settings instance with predefined values:
+ *
+ * val settings: SecureSettings = fakeSettings {
+ * putString("stringValue", "example")
+ * putInt("intValue", 42)
+ * }
+ */
+inline fun <reified T : SettingsProxy> fakeSettings(block: SettingsProxy.() -> Unit): T {
+ return FakeSettings(mutableMapOf()).apply(block) as T
+}
+
+/** A memory-only implementation of [SettingsProxy]. */
+class FakeSettings(
+ private val map: MutableMap<String, String>,
+) : GlobalSettings, SecureSettings, SystemSettings {
+ constructor() : this(mutableMapOf())
+
+ override fun getStringOrNull(name: String): String? = map[name]
+
+ override fun putString(name: String, value: String): Boolean {
+ map[name] = value
+ return true
+ }
+}
diff --git a/tests/unit/src/com/android/intentresolver/platform/FakeSecureSettingsTest.kt b/tests/unit/src/com/android/intentresolver/platform/FakeSettingsTest.kt
index fd74b50a..82daca55 100644
--- a/tests/unit/src/com/android/intentresolver/platform/FakeSecureSettingsTest.kt
+++ b/tests/unit/src/com/android/intentresolver/platform/FakeSettingsTest.kt
@@ -17,48 +17,52 @@
package com.android.intentresolver.platform
import com.google.common.truth.Truth.assertThat
+import org.junit.Test
-class FakeSecureSettingsTest {
+class FakeSettingsTest {
- private val secureSettings = fakeSecureSettings {
+ private val settings: FakeSettings = fakeSettings {
putInt(intKey, intVal)
putString(stringKey, stringVal)
putFloat(floatKey, floatVal)
putLong(longKey, longVal)
}
+ @Test
fun testExpectedValues_returned() {
- assertThat(secureSettings.getInt(intKey)).isEqualTo(intVal)
- assertThat(secureSettings.getString(stringKey)).isEqualTo(stringVal)
- assertThat(secureSettings.getFloat(floatKey)).isEqualTo(floatVal)
- assertThat(secureSettings.getLong(longKey)).isEqualTo(longVal)
+ assertThat(settings.getIntOrNull(intKey)).isEqualTo(intVal)
+ assertThat(settings.getStringOrNull(stringKey)).isEqualTo(stringVal)
+ assertThat(settings.getFloatOrNull(floatKey)).isEqualTo(floatVal)
+ assertThat(settings.getLongOrNull(longKey)).isEqualTo(longVal)
}
+ @Test
fun testUndefinedValues_returnNull() {
- assertThat(secureSettings.getInt("unknown")).isNull()
- assertThat(secureSettings.getString("unknown")).isNull()
- assertThat(secureSettings.getFloat("unknown")).isNull()
- assertThat(secureSettings.getLong("unknown")).isNull()
+ assertThat(settings.getIntOrNull("unknown")).isNull()
+ assertThat(settings.getStringOrNull("unknown")).isNull()
+ assertThat(settings.getFloatOrNull("unknown")).isNull()
+ assertThat(settings.getLongOrNull("unknown")).isNull()
}
/**
* FakeSecureSettings models the real secure settings by storing values in String form. The
* value is returned if/when it can be parsed from the string value, otherwise null.
*/
+ @Test
fun testMismatchedTypes() {
- assertThat(secureSettings.getString(intKey)).isEqualTo(intVal.toString())
- assertThat(secureSettings.getString(floatKey)).isEqualTo(floatVal.toString())
- assertThat(secureSettings.getString(longKey)).isEqualTo(longVal.toString())
+ assertThat(settings.getStringOrNull(intKey)).isEqualTo(intVal.toString())
+ assertThat(settings.getStringOrNull(floatKey)).isEqualTo(floatVal.toString())
+ assertThat(settings.getStringOrNull(longKey)).isEqualTo(longVal.toString())
- assertThat(secureSettings.getInt(stringKey)).isNull()
- assertThat(secureSettings.getLong(stringKey)).isNull()
- assertThat(secureSettings.getFloat(stringKey)).isNull()
+ assertThat(settings.getIntOrNull(stringKey)).isNull()
+ assertThat(settings.getLongOrNull(stringKey)).isNull()
+ assertThat(settings.getFloatOrNull(stringKey)).isNull()
- assertThat(secureSettings.getInt(longKey)).isNull()
- assertThat(secureSettings.getFloat(longKey)).isNull() // TODO: verify Long.MAX > Float.MAX ?
+ assertThat(settings.getIntOrNull(longKey)).isNull()
+ assertThat(settings.getFloatOrNull(longKey)).isWithin(0.00001f).of(Long.MAX_VALUE.toFloat())
- assertThat(secureSettings.getLong(floatKey)).isNull() // TODO: or is Float.MAX > Long.MAX?
- assertThat(secureSettings.getInt(floatKey)).isNull()
+ assertThat(settings.getLongOrNull(floatKey)).isNull()
+ assertThat(settings.getIntOrNull(floatKey)).isNull()
}
companion object Data {
diff --git a/tests/unit/src/com/android/intentresolver/platform/NearbyShareModuleTest.kt b/tests/unit/src/com/android/intentresolver/platform/NearbyShareModuleTest.kt
index 71ef2919..6e5c97c2 100644
--- a/tests/unit/src/com/android/intentresolver/platform/NearbyShareModuleTest.kt
+++ b/tests/unit/src/com/android/intentresolver/platform/NearbyShareModuleTest.kt
@@ -49,7 +49,7 @@ class NearbyShareModuleTest {
@Test
fun valueIsAbsent_whenUnset() {
- val secureSettings = fakeSecureSettings {}
+ val secureSettings: SecureSettings = fakeSettings {}
val resources =
context.fakeResources { addOverride(R.string.config_defaultNearbySharingComponent, "") }
@@ -59,7 +59,7 @@ class NearbyShareModuleTest {
@Test
fun defaultValue_readFromResources() {
- val secureSettings = fakeSecureSettings {}
+ val secureSettings: SecureSettings = fakeSettings {}
val resources =
context.fakeResources {
addOverride(
@@ -76,7 +76,7 @@ class NearbyShareModuleTest {
@Test
fun secureSettings_overridesDefault() {
- val secureSettings = fakeSecureSettings {
+ val secureSettings: SecureSettings = fakeSettings {
putString(Settings.Secure.NEARBY_SHARING_COMPONENT, "com.example/.BComponent")
}
val resources =