From 8675206a3166290a5c576cddce47ab72d41a41a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Fri, 3 Oct 2025 12:11:05 -0400 Subject: [PATCH 1/5] [Infra] Bump okhttp dependency from 3.12.13 to 4.12.0 This change affects the Functions and Perf SDKs. We moved to the latest version of 4.x since it's the last one requiring kotlin < 2.0.21, which is the version we use. Versions in the 5.x branch require kotlin > 2.1.x --- .../firebase/functions/FirebaseFunctions.kt | 14 +++++++------- .../google/firebase/functions/PublisherStream.kt | 16 ++++++++-------- gradle/libs.versions.toml | 16 ++++++++-------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/firebase-functions/src/main/java/com/google/firebase/functions/FirebaseFunctions.kt b/firebase-functions/src/main/java/com/google/firebase/functions/FirebaseFunctions.kt index 8839763c4a3..b747456aa75 100644 --- a/firebase-functions/src/main/java/com/google/firebase/functions/FirebaseFunctions.kt +++ b/firebase-functions/src/main/java/com/google/firebase/functions/FirebaseFunctions.kt @@ -38,10 +38,10 @@ import java.util.concurrent.Executor import javax.inject.Named import okhttp3.Call import okhttp3.Callback -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response import org.json.JSONException import org.json.JSONObject @@ -87,7 +87,7 @@ internal constructor( try { URL(regionOrCustomDomain) false - } catch (malformedURLException: MalformedURLException) { + } catch (_: MalformedURLException) { true } if (isRegion) { @@ -227,8 +227,8 @@ internal constructor( val encoded = serializer.encode(data) body["data"] = encoded val bodyJSON = JSONObject(body) - val contentType = MediaType.parse("application/json") - val requestBody = RequestBody.create(contentType, bodyJSON.toString()) + val contentType = "application/json".toMediaTypeOrNull() + val requestBody = bodyJSON.toString().toRequestBody(contentType) var request = Request.Builder().url(url).post(requestBody) if (context!!.authToken != null) { request = request.header("Authorization", "Bearer " + context.authToken) @@ -268,8 +268,8 @@ internal constructor( @Throws(IOException::class) override fun onResponse(ignored: Call, response: Response) { - val code = fromHttpStatus(response.code()) - val bodyAsString = response.body()!!.string() + val code = fromHttpStatus(response.code) + val bodyAsString = response.body!!.string() val exception = fromResponse(code, bodyAsString, serializer) if (exception != null) { tcs.setException(exception) diff --git a/firebase-functions/src/main/java/com/google/firebase/functions/PublisherStream.kt b/firebase-functions/src/main/java/com/google/firebase/functions/PublisherStream.kt index d853dfbbb7b..ad5d9f84a26 100644 --- a/firebase-functions/src/main/java/com/google/firebase/functions/PublisherStream.kt +++ b/firebase-functions/src/main/java/com/google/firebase/functions/PublisherStream.kt @@ -28,7 +28,7 @@ import java.util.concurrent.Executor import java.util.concurrent.atomic.AtomicLong import okhttp3.Call import okhttp3.Callback -import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody @@ -133,7 +133,7 @@ internal class PublisherStream( val configuredClient = options.apply(client) val requestBody = RequestBody.create( - MediaType.parse("application/json"), + "application/json".toMediaTypeOrNull(), JSONObject(mapOf("data" to serializer.encode(data))).toString() ) val request = @@ -167,7 +167,7 @@ internal class PublisherStream( override fun onResponse(call: Call, response: Response) { validateResponse(response) - val bodyStream = response.body()?.byteStream() + val bodyStream = response.body?.byteStream() if (bodyStream != null) { processSSEStream(bodyStream) } else { @@ -309,21 +309,21 @@ internal class PublisherStream( val errorMessage: String if ( - response.code() == 404 && - MediaType.parse(response.header("Content-Type") ?: "")?.subtype() == "html" + response.code == 404 && + (response.header("Content-Type") ?: "").toMediaTypeOrNull()?.subtype == "html" ) { - errorMessage = """URL not found. Raw response: ${response.body()?.string()}""".trimMargin() + errorMessage = """URL not found. Raw response: ${response.body?.string()}""".trimMargin() notifyError( FirebaseFunctionsException( errorMessage, - FirebaseFunctionsException.Code.fromHttpStatus(response.code()), + FirebaseFunctionsException.Code.fromHttpStatus(response.code), null ) ) return } - val text = response.body()?.string() ?: "" + val text = response.body?.string() ?: "" val error: Any? try { val json = JSONObject(text) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f4885496b15..5e1762ea048 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -166,7 +166,7 @@ maven-resolver-provider = { module = "org.apache.maven:maven-resolver-provider", maven-resolver-transport-file = { module = "org.apache.maven.resolver:maven-resolver-transport-file", version.ref = "mavenResolverApi" } maven-resolver-transport-http = { module = "org.apache.maven.resolver:maven-resolver-transport-http", version.ref = "mavenResolverApi" } maven-resolver-util = { module = "org.apache.maven.resolver:maven-resolver-util", version.ref = "mavenResolverApi" } -okhttp = { module = "com.squareup.okhttp3:okhttp", version = "3.12.13" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version = "4.12.0" } org-json = { module = "org.json:json", version = "20240303" } play-services-cloud-messaging = { module = "com.google.android.gms:play-services-cloud-messaging", version.ref = "playServicesCloudMessaging" } play-services-stats = { module = "com.google.android.gms:play-services-stats", version.ref = "playServicesStats" } @@ -222,13 +222,13 @@ wiremock-standalone = { module = "com.github.tomakehurst:wiremock-standalone", v kotest = ["kotest-runner", "kotest-assertions", "kotest-property", "kotest-property-arbs"] playservices = ["playservices-base", "playservices-basement", "playservices-tasks"] maven-resolver = [ - "maven-resolver-api", - "maven-resolver-connector-basic", - "maven-resolver-impl", - "maven-resolver-provider", - "maven-resolver-transport-file", - "maven-resolver-transport-http", - "maven-resolver-util" + "maven-resolver-api", + "maven-resolver-connector-basic", + "maven-resolver-impl", + "maven-resolver-provider", + "maven-resolver-transport-file", + "maven-resolver-transport-http", + "maven-resolver-util" ] [plugins] From bf1ef5e87b64ea5625f257a0b459af8e13ee5ac4 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Fri, 3 Oct 2025 12:14:15 -0400 Subject: [PATCH 2/5] Add changelog entries --- firebase-functions/CHANGELOG.md | 2 ++ firebase-perf/CHANGELOG.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/firebase-functions/CHANGELOG.md b/firebase-functions/CHANGELOG.md index 829bf9a431c..a9e9329e6c4 100644 --- a/firebase-functions/CHANGELOG.md +++ b/firebase-functions/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +- [changed] Bump dependency on OkHTTP to version 4.12.0. + # 22.0.1 - [changed] Bumped internal dependencies. diff --git a/firebase-perf/CHANGELOG.md b/firebase-perf/CHANGELOG.md index b859ec94029..72ff77667e6 100644 --- a/firebase-perf/CHANGELOG.md +++ b/firebase-perf/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +- [changed] Bump dependency on OkHTTP to version 4.12.0. + # 22.0.2 - [changed] Bumped internal dependencies. From 088d519b5e5e9373b97f5f0780533ce4d14a43c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Sat, 4 Oct 2025 07:11:02 -0400 Subject: [PATCH 3/5] Improved changelog message --- firebase-functions/CHANGELOG.md | 5 ++++- firebase-perf/CHANGELOG.md | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/firebase-functions/CHANGELOG.md b/firebase-functions/CHANGELOG.md index a9e9329e6c4..8084fc6c549 100644 --- a/firebase-functions/CHANGELOG.md +++ b/firebase-functions/CHANGELOG.md @@ -1,6 +1,9 @@ # Unreleased -- [changed] Bump dependency on OkHTTP to version 4.12.0. +- [changed] Bumped dependency on OkHTTP to version 4.12.0 from version 3.12.13. If your app depends + on OkHTTP version 3.x the change is both binary- and Java source-compatible, with a few small + exceptions. See https://square.github.io/okhttp/changelogs/upgrading_to_okhttp_4/ for more + details. # 22.0.1 diff --git a/firebase-perf/CHANGELOG.md b/firebase-perf/CHANGELOG.md index 72ff77667e6..71fb3dce42d 100644 --- a/firebase-perf/CHANGELOG.md +++ b/firebase-perf/CHANGELOG.md @@ -1,6 +1,9 @@ # Unreleased -- [changed] Bump dependency on OkHTTP to version 4.12.0. +- [changed] Bumped dependency on OkHTTP to version 4.12.0 from version 3.12.13. If your app depends + on OkHTTP version 3.x the change is both binary- and Java source-compatible, with a few small + exceptions. See https://square.github.io/okhttp/changelogs/upgrading_to_okhttp_4/ for more + details. # 22.0.2 From 3f2c8084ad2cb5c9e4b3460d60ae7c9541df64e8 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Sat, 4 Oct 2025 07:12:39 -0400 Subject: [PATCH 4/5] Correctly setting the version for both sdks --- firebase-ai/gradle.properties | 2 +- firebase-functions/gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/firebase-ai/gradle.properties b/firebase-ai/gradle.properties index a61baee5a19..45eee5dd054 100644 --- a/firebase-ai/gradle.properties +++ b/firebase-ai/gradle.properties @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -version=17.4.0 +version=17.5.0 latestReleasedVersion=17.3.0 diff --git a/firebase-functions/gradle.properties b/firebase-functions/gradle.properties index ad317096e94..4d98af6827e 100644 --- a/firebase-functions/gradle.properties +++ b/firebase-functions/gradle.properties @@ -1,3 +1,3 @@ -version=22.0.2 +version=22.1.0 latestReleasedVersion=22.0.1 android.enableUnitTestBinaryResources=true From 0d28900bf3218bce9ec50ddde794989cf3bb6da0 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Sat, 4 Oct 2025 07:17:02 -0400 Subject: [PATCH 5/5] Undo unintendend change --- firebase-ai/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-ai/gradle.properties b/firebase-ai/gradle.properties index 45eee5dd054..a61baee5a19 100644 --- a/firebase-ai/gradle.properties +++ b/firebase-ai/gradle.properties @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -version=17.5.0 +version=17.4.0 latestReleasedVersion=17.3.0