Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ plugins {
}

android {
val minSdkVersion: Int by rootProject

namespace = "com.google.firebase.testing.processor"
compileSdk = 36
defaultConfig {
applicationId = "com.google.firebase.testing.processor"
minSdk = 23
minSdk = minSdkVersion
targetSdk = 36
versionCode = 1
versionName = "1.0"
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ extra["targetSdkVersion"] = 34

extra["compileSdkVersion"] = 34

extra["minSdkVersion"] = 23
extra["minSdkVersion"] = 24

firebaseContinuousIntegration {
ignorePaths =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@
@RunWith(RobolectricTestRunner.class)
@Config(
sdk = {
Build.VERSION_CODES.M,
Build.VERSION_CODES.N,
Build.VERSION_CODES.P
}) // Test on both pre-Oreo (M) and post-Oreo (P) to cover both code paths
}) // Test on both pre-Oreo (N) and post-Oreo (P) to cover both code paths
public class InstallActivityTest {

private ShadowPackageManager shadowPackageManager;
Expand Down
2 changes: 1 addition & 1 deletion firebase-appdistribution/test-app/test-app.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ android {

defaultConfig {
applicationId "com.googletest.firebase.appdistribution.testapp"
minSdk 23
minSdkVersion project.minSdkVersion
targetSdk 34
versionName "3.3"
versionCode 8
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,9 @@ private static ThreadFactory factory(

private static StrictMode.ThreadPolicy bgPolicy() {
StrictMode.ThreadPolicy.Builder builder = new StrictMode.ThreadPolicy.Builder().detectNetwork();
if (Build.VERSION.SDK_INT >= 23) {
builder.detectResourceMismatches();
if (Build.VERSION.SDK_INT >= 26) {
builder.detectUnbufferedIo();
}
builder.detectResourceMismatches();
if (Build.VERSION.SDK_INT >= 26) {
builder.detectUnbufferedIo();
}
if (BuildConfig.DEBUG) {
builder.penaltyDeath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,22 +86,6 @@ public void test_auto_atHighEnoughApiLevel() {
});
}

@Test
@Config(sdk = Config.OLDEST_SDK)
public void test_auto_atNotHighEnoughApiLevel() {
ShadowPackageManager shadowPackageManager =
shadowOf(ApplicationProvider.getApplicationContext().getPackageManager());
shadowPackageManager.setSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true);
withApp(
"myApp",
OPTIONS,
app -> {
UserAgentPublisher ua = app.get(UserAgentPublisher.class);

assertThat(ua.getUserAgent()).containsMatch(Pattern.compile("android-installer/($|\\s)"));
});
}

@Test
@Config(sdk = Build.VERSION_CODES.O)
public void test_embedded_atHighEnoughApiLevel() {
Expand All @@ -119,7 +103,7 @@ public void test_embedded_atHighEnoughApiLevel() {
}

@Test
@Config(sdk = Build.VERSION_CODES.M)
@Config(sdk = Build.VERSION_CODES.N)
public void test_embedded_atNotHighEnoughApiLevel() {
ShadowPackageManager shadowPackageManager =
shadowOf(ApplicationProvider.getApplicationContext().getPackageManager());
Expand Down
2 changes: 1 addition & 1 deletion firebase-dataconnect/demo/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ android {
namespace = "com.google.firebase.dataconnect.minimaldemo"
compileSdk = 36
defaultConfig {
minSdk = 23
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ import android.content.Context.CONNECTIVITY_SERVICE
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED
import android.net.NetworkRequest
import android.os.Build
import androidx.annotation.RequiresApi
import com.google.firebase.dataconnect.util.coroutines.ConflatedSignal
Expand Down Expand Up @@ -55,26 +53,7 @@ internal data object NetworkConnectivityRestored
* @return A cold [Flow] emitting [NetworkConnectivityRestored] on network state transitions that
* suggest that network connectivity is now (or continues to be) available.
*/
internal fun networkConnectivityRestoredFlow(context: Context): Flow<NetworkConnectivityRestored> {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
networkConnectivityRestoredFlowAPI24(context)
} else {
networkConnectivityRestoredFlowAPI23(context)
}
}

private fun networkConnectivityRestoredFlowAPI23(
context: Context
): Flow<NetworkConnectivityRestored> =
networkConnectivityRestoredFlow(context) {
val request = NetworkRequest.Builder().addCapability(NET_CAPABILITY_INTERNET).build()
registerNetworkCallback(request, it)
}

@RequiresApi(Build.VERSION_CODES.N)
private fun networkConnectivityRestoredFlowAPI24(
context: Context
): Flow<NetworkConnectivityRestored> =
internal fun networkConnectivityRestoredFlow(context: Context): Flow<NetworkConnectivityRestored> =
networkConnectivityRestoredFlow(context) { registerDefaultNetworkCallback(it) }

private fun networkConnectivityRestoredFlow(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,41 +130,9 @@ class NetworkConnectivityRestoredFlowUnitTest {
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.M])
fun `networkConnectivityRestoredFlow() collection registers and unregisters callback API 23`() =
runTest {
val connectivityManager: ConnectivityManager = mockk(relaxed = true)
val context: Context = mockk {
every { getSystemService(CONNECTIVITY_SERVICE) } returns connectivityManager
}

turbineScope {
val flow = networkConnectivityRestoredFlow(context)
val collector = flow.testIn(backgroundScope)

val networkRequestSlot = slot<NetworkRequest>()
val callbackSlot = slot<NetworkCallback>()
verify(exactly = 1) {
connectivityManager.registerNetworkCallback(
capture(networkRequestSlot),
capture(callbackSlot)
)
}

val networkRequest = networkRequestSlot.captured
val expectedNetworkRequest =
NetworkRequest.Builder().addCapability(NET_CAPABILITY_INTERNET).build()
networkRequest shouldBe expectedNetworkRequest

collector.cancelAndIgnoreRemainingEvents()
verify(exactly = 1) { connectivityManager.unregisterNetworkCallback(callbackSlot.captured) }
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.N])
fun `networkConnectivityRestoredFlow() collection registers and unregisters callback API 24`() =
fun `networkConnectivityRestoredFlow() collection registers and unregisters callback`() =
runTest {
val connectivityManager: ConnectivityManager = mockk(relaxed = true)
val context: Context = mockk {
Expand All @@ -185,19 +153,9 @@ class NetworkConnectivityRestoredFlowUnitTest {
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.M])
fun `networkConnectivityRestoredFlow() collection unregisters callback on exception API 23`() =
`networkConnectivityRestoredFlow() collection unregisters callback on exception` { callback ->
every { registerNetworkCallback(any(), any<NetworkCallback>()) } answers
{
callback(secondArg())
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.N])
fun `networkConnectivityRestoredFlow() collection unregisters callback on exception API 24`() =
fun `networkConnectivityRestoredFlow() collection unregisters callback on exception`() =
`networkConnectivityRestoredFlow() collection unregisters callback on exception` { callback ->
every { registerDefaultNetworkCallback(any<NetworkCallback>()) } answers
{
Expand Down Expand Up @@ -234,18 +192,9 @@ class NetworkConnectivityRestoredFlowUnitTest {
callbackUnregisteredSignal.await() shouldBe registeredCallback
}

@Test
@Config(sdk = [Build.VERSION_CODES.M])
fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback API 23`() =
`networkConnectivityRestoredFlow() sequential collection registers and unregisters callback` {
networkRequest,
networkCallback ->
registerNetworkCallback(networkRequest(), networkCallback)
}

@Test
@Config(sdk = [Build.VERSION_CODES.N])
fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback API 24`() =
fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback`() =
`networkConnectivityRestoredFlow() sequential collection registers and unregisters callback` {
_,
networkCallback ->
Expand Down Expand Up @@ -283,20 +232,9 @@ class NetworkConnectivityRestoredFlowUnitTest {
callbacks.shouldBeUnique()
}

@Test
@Config(sdk = [Build.VERSION_CODES.M])
fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback API 23`() =
`networkConnectivityRestoredFlow() parallel collection registers and unregisters callback` {
onRegisterCallback ->
every { registerNetworkCallback(any(), any<NetworkCallback>()) } coAnswers
{
onRegisterCallback(secondArg())
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.N])
fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback API 24`() =
fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback`() =
`networkConnectivityRestoredFlow() parallel collection registers and unregisters callback` {
onRegisterCallback ->
every { registerDefaultNetworkCallback(any<NetworkCallback>()) } coAnswers
Expand Down Expand Up @@ -353,11 +291,6 @@ class NetworkConnectivityRestoredFlowUnitTest {
}
}

@Test
@Config(sdk = [Build.VERSION_CODES.M])
fun `networkConnectivityRestoredFlow() emits expected events API 23`() =
testNetworkCallbackSequences(includeBlockedStatusChanged = false, api23CaptureCallback)

@Test
@Config(sdk = [Build.VERSION_CODES.N])
fun `networkConnectivityRestoredFlow() emits expected events API 24`() =
Expand Down Expand Up @@ -646,12 +579,6 @@ private fun networkCallbackSequenceArb(
}
}

private val api23CaptureCallback:
MockKVerificationScope.(ConnectivityManager, CapturingSlot<NetworkCallback>) -> Unit =
{ connectivityManager, slot ->
connectivityManager.registerNetworkCallback(any(), capture(slot))
}

private val api24CaptureCallback:
MockKVerificationScope.(ConnectivityManager, CapturingSlot<NetworkCallback>) -> Unit =
{ connectivityManager, slot ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@Config(sdk = 23, manifest = Config.NONE)
@Config(manifest = Config.NONE)
public class MemorySpecTest extends SpecTestCase {

private static final String DURABLE_PERSISTENCE = "durable-persistence";
Expand Down
Loading
Loading