Skip to content

Commit 8d26eb5

Browse files
authored
Merge branch 'main' into dconeybe/dataconnect/Emulator_2_13_0
2 parents c841065 + f8717ad commit 8d26eb5

File tree

12 files changed

+51
-43
lines changed

12 files changed

+51
-43
lines changed

firebase-ai/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Unreleased
22

33
- [changed] **Breaking Change**: Removed the `candidateCount` option from `LiveGenerationConfig`
4+
- [changed] Added better error messages to `ServiceConnectionHandshakeFailedException`
45

56
# 17.3.0
67

firebase-ai/src/androidTest/kotlin/com/google/firebase/ai/AIModels.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ class AIModels {
5151
flash2Model =
5252
FirebaseAI.getInstance(app!!, GenerativeBackend.vertexAI())
5353
.generativeModel(
54-
modelName = "gemini-2.0-flash",
54+
modelName = "gemini-2.5-flash",
5555
)
5656
flash2LiteModel =
5757
FirebaseAI.getInstance(app!!, GenerativeBackend.vertexAI())
5858
.generativeModel(
59-
modelName = "gemini-2.0-flash-lite",
59+
modelName = "gemini-2.5-flash-lite",
6060
)
6161
}
6262
}

firebase-ai/src/androidTest/kotlin/com/google/firebase/ai/ToolTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ class ToolTests {
299299
val model =
300300
FirebaseAI.getInstance(app(), GenerativeBackend.vertexAI())
301301
.generativeModel(
302-
modelName = "gemini-2.0-flash",
302+
modelName = "gemini-2.5-flash",
303303
toolConfig =
304304
ToolConfig(
305305
functionCallingConfig = FunctionCallingConfig(FunctionCallingConfig.Mode.ANY)

firebase-ai/src/main/kotlin/com/google/firebase/ai/LiveGenerativeModel.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.google.firebase.ai.type.Tool
3232
import com.google.firebase.annotations.concurrent.Blocking
3333
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider
3434
import com.google.firebase.auth.internal.InternalAuthProvider
35+
import io.ktor.client.plugins.websocket.DefaultClientWebSocketSession
3536
import io.ktor.websocket.Frame
3637
import io.ktor.websocket.close
3738
import io.ktor.websocket.readBytes
@@ -114,8 +115,9 @@ internal constructor(
114115
)
115116
.toInternal()
116117
val data: String = Json.encodeToString(clientMessage)
118+
var webSession: DefaultClientWebSocketSession? = null
117119
try {
118-
val webSession = controller.getWebSocketSession(location)
120+
webSession = controller.getWebSocketSession(location)
119121
webSession.send(Frame.Text(data))
120122
val receivedJsonStr = webSession.incoming.receive().readBytes().toString(Charsets.UTF_8)
121123
val receivedJson = JSON.parseToJsonElement(receivedJsonStr)
@@ -131,7 +133,10 @@ internal constructor(
131133
throw ServiceConnectionHandshakeFailedException("Unable to connect to the server")
132134
}
133135
} catch (e: ClosedReceiveChannelException) {
134-
throw ServiceConnectionHandshakeFailedException("Channel was closed by the server", e)
136+
val reason = webSession?.closeReason?.await()
137+
val message =
138+
"Channel was closed by the server.${if(reason!=null) " Details: ${reason.message}" else "" }"
139+
throw ServiceConnectionHandshakeFailedException(message, e)
135140
}
136141
}
137142

firebase-ai/src/main/kotlin/com/google/firebase/ai/common/APIController.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import io.ktor.client.engine.HttpClientEngine
3838
import io.ktor.client.engine.okhttp.OkHttp
3939
import io.ktor.client.plugins.HttpTimeout
4040
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
41-
import io.ktor.client.plugins.websocket.ClientWebSocketSession
41+
import io.ktor.client.plugins.websocket.DefaultClientWebSocketSession
4242
import io.ktor.client.plugins.websocket.WebSockets
4343
import io.ktor.client.plugins.websocket.webSocketSession
4444
import io.ktor.client.request.HttpRequestBuilder
@@ -174,7 +174,7 @@ internal constructor(
174174
"wss://firebasevertexai.googleapis.com/ws/google.firebase.vertexai.v1beta.GenerativeService/BidiGenerateContent?key=$key"
175175
}
176176

177-
suspend fun getWebSocketSession(location: String): ClientWebSocketSession =
177+
suspend fun getWebSocketSession(location: String): DefaultClientWebSocketSession =
178178
client.webSocketSession(getBidiEndpoint(location)) { applyCommonHeaders() }
179179

180180
fun generateContentStream(

firebase-ai/src/main/kotlin/com/google/firebase/ai/type/LiveSession.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import com.google.firebase.ai.common.util.CancelledCoroutineScope
2929
import com.google.firebase.ai.common.util.accumulateUntil
3030
import com.google.firebase.ai.common.util.childJob
3131
import com.google.firebase.annotations.concurrent.Blocking
32-
import io.ktor.client.plugins.websocket.ClientWebSocketSession
32+
import io.ktor.client.plugins.websocket.DefaultClientWebSocketSession
3333
import io.ktor.websocket.Frame
3434
import io.ktor.websocket.close
3535
import io.ktor.websocket.readBytes
@@ -59,7 +59,7 @@ import kotlinx.serialization.json.Json
5959
@OptIn(ExperimentalSerializationApi::class)
6060
public class LiveSession
6161
internal constructor(
62-
private val session: ClientWebSocketSession,
62+
private val session: DefaultClientWebSocketSession,
6363
@Blocking private val blockingDispatcher: CoroutineContext,
6464
private var audioHelper: AudioHelper? = null,
6565
private val firebaseApp: FirebaseApp,

firebase-ai/src/test/java/com/google/firebase/ai/GenerativeModelTesting.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ internal class GenerativeModelTesting {
7272
val apiController =
7373
APIController(
7474
"super_cool_test_key",
75-
"gemini-1.5-flash",
75+
"gemini-2.5-flash",
7676
RequestOptions(timeout = 5.seconds, endpoint = "https://my.custom.endpoint"),
7777
mockEngine,
7878
TEST_CLIENT_ID,
@@ -84,7 +84,7 @@ internal class GenerativeModelTesting {
8484

8585
val generativeModel =
8686
GenerativeModel(
87-
"gemini-1.5-flash",
87+
"gemini-2.5-flash",
8888
systemInstruction = content { text("system instruction") },
8989
controller = apiController
9090
)
@@ -120,7 +120,7 @@ internal class GenerativeModelTesting {
120120
val apiController =
121121
APIController(
122122
"super_cool_test_key",
123-
"gemini-1.5-flash",
123+
"gemini-2.5-flash",
124124
RequestOptions(),
125125
mockEngine,
126126
TEST_CLIENT_ID,
@@ -133,7 +133,7 @@ internal class GenerativeModelTesting {
133133
// Creating the
134134
val generativeModel =
135135
GenerativeModel(
136-
"projects/PROJECTID/locations/INVALID_LOCATION/publishers/google/models/gemini-1.5-flash",
136+
"projects/PROJECTID/locations/INVALID_LOCATION/publishers/google/models/gemini-2.5-flash",
137137
controller = apiController
138138
)
139139

firebase-ai/src/test/java/com/google/firebase/ai/common/APIControllerTests.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ internal class RequestFormatTests {
112112
val controller =
113113
APIController(
114114
"super_cool_test_key",
115-
"gemini-pro-1.5",
115+
"gemini-pro-2.5",
116116
RequestOptions(),
117117
mockEngine,
118118
"genai-android/${BuildConfig.VERSION_NAME}",
@@ -142,7 +142,7 @@ internal class RequestFormatTests {
142142
val controller =
143143
APIController(
144144
"super_cool_test_key",
145-
"gemini-pro-1.5",
145+
"gemini-pro-2.5",
146146
RequestOptions(timeout = 5.seconds, endpoint = "https://my.custom.endpoint"),
147147
mockEngine,
148148
TEST_CLIENT_ID,
@@ -172,7 +172,7 @@ internal class RequestFormatTests {
172172
val controller =
173173
APIController(
174174
"super_cool_test_key",
175-
"gemini-pro-1.5",
175+
"gemini-pro-2.5",
176176
RequestOptions(),
177177
mockEngine,
178178
TEST_CLIENT_ID,
@@ -199,7 +199,7 @@ internal class RequestFormatTests {
199199
val controller =
200200
APIController(
201201
"super_cool_test_key",
202-
"gemini-pro-1.5",
202+
"gemini-pro-2.5",
203203
RequestOptions(),
204204
mockEngine,
205205
TEST_CLIENT_ID,
@@ -227,7 +227,7 @@ internal class RequestFormatTests {
227227
val controller =
228228
APIController(
229229
"super_cool_test_key",
230-
"gemini-pro-1.5",
230+
"gemini-pro-2.5",
231231
RequestOptions(),
232232
mockEngine,
233233
TEST_CLIENT_ID,
@@ -319,7 +319,7 @@ internal class RequestFormatTests {
319319
val controller =
320320
APIController(
321321
"super_cool_test_key",
322-
"gemini-pro-1.5",
322+
"gemini-pro-2.5",
323323
RequestOptions(),
324324
mockEngine,
325325
TEST_CLIENT_ID,
@@ -356,7 +356,7 @@ internal class RequestFormatTests {
356356
val controller =
357357
APIController(
358358
"super_cool_test_key",
359-
"gemini-pro-1.5",
359+
"gemini-pro-2.5",
360360
RequestOptions(),
361361
mockEngine,
362362
TEST_CLIENT_ID,
@@ -382,7 +382,7 @@ internal class RequestFormatTests {
382382
val controller =
383383
APIController(
384384
"super_cool_test_key",
385-
"gemini-pro-1.5",
385+
"gemini-pro-2.5",
386386
RequestOptions(),
387387
mockEngine,
388388
TEST_CLIENT_ID,

firebase-firestore/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
[#7376](//github.com/firebase/firebase-android-sdk/issues/7376)
1111
- [changed] Improve query performance via internal memoization of calculated document data.
1212
[#7370](//github.com/firebase/firebase-android-sdk/issues/7370)
13+
- [changed] Improve query performance by avoiding excessive Comparator instance creation.
14+
[#7388](//github.com/firebase/firebase-android-sdk/pull/7388)
15+
- [changed] Improve query performance by using an unsorted HashMap instead of a sorted TreeMap.
16+
[#7389](//github.com/firebase/firebase-android-sdk/pull/7389)
1317

1418
# 26.0.0
1519

firebase-firestore/src/main/java/com/google/firebase/firestore/core/DocumentViewChangeSet.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,15 @@
1919
import com.google.firebase.firestore.core.DocumentViewChange.Type;
2020
import com.google.firebase.firestore.model.DocumentKey;
2121
import java.util.ArrayList;
22+
import java.util.HashMap;
2223
import java.util.List;
23-
import java.util.TreeMap;
2424

2525
/** A set of changes to documents with respect to a view. This set is mutable. */
2626
public class DocumentViewChangeSet {
27-
// This map is sorted to make the unit tests simpler.
28-
private final TreeMap<DocumentKey, DocumentViewChange> changes;
27+
private final HashMap<DocumentKey, DocumentViewChange> changes;
2928

3029
public DocumentViewChangeSet() {
31-
changes = new TreeMap<>();
30+
changes = new HashMap<>();
3231
}
3332

3433
public void addChange(DocumentViewChange change) {

0 commit comments

Comments
 (0)