Skip to content

Commit 54b7dd7

Browse files
committed
Merge remote-tracking branch 'origin/master' into mph-googledatalogger
2 parents 2c41e7d + 0074c79 commit 54b7dd7

30 files changed

+571
-484
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseMessaging.podspec
6969
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseStorage.podspec
7070
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseFunctions.podspec
71+
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessaging.podspec
7172
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessagingDisplay.podspec
7273

7374
- stage: test
@@ -98,6 +99,7 @@ jobs:
9899
- travis_retry ./scripts/if_cron.sh ./scripts/pod_lib_lint.sh FirebaseMessaging.podspec --use-libraries --allow-warnings
99100
- travis_retry ./scripts/if_cron.sh ./scripts/pod_lib_lint.sh FirebaseStorage.podspec --use-libraries
100101
- travis_retry ./scripts/if_cron.sh ./scripts/pod_lib_lint.sh FirebaseFunctions.podspec --use-libraries
102+
- travis_retry ./scripts/if_cron.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessaging.podspec --use-libraries
101103
- travis_retry ./scripts/if_cron.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessagingDisplay.podspec --use-libraries
102104

103105
- stage: test
@@ -196,6 +198,7 @@ jobs:
196198
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseMessaging.podspec
197199
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseStorage.podspec
198200
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseFunctions.podspec
201+
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessaging.podspec
199202
- travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.sh FirebaseInAppMessagingDisplay.podspec
200203

201204
- stage: test

Carthage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseStorageBinary.jso
6565
into the Xcode project and make sure they're added to the
6666
`Copy Bundle Resources` Build Phase :
6767
- For Firestore:
68-
- ./Carthage/Build/iOS/FirebaseFirestore.framework/gRPCCertificates-Firestore.bundle
68+
- ./Carthage/Build/iOS/FirebaseFirestore.framework/gRPCCertificates.bundle
6969
- For Invites:
7070
- ./Carthage/Build/iOS/FirebaseInvites.framework/GoogleSignIn.bundle
7171
- ./Carthage/Build/iOS/FirebaseInvites.framework/GPPACLPickerResources.bundle

Example/Firebase.xcodeproj/project.pbxproj

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5760,7 +5760,7 @@
57605760
DEBUG_INFORMATION_FORMAT = dwarf;
57615761
DEVELOPMENT_TEAM = 4ANB9W7R3P;
57625762
GCC_C_LANGUAGE_STANDARD = gnu11;
5763-
INFOPLIST_FILE = $SRCROOT/DynamicLinks/FDLBuilderTestAppObjC/Info.plist;
5763+
INFOPLIST_FILE = "$SRCROOT/DynamicLinks/FDLBuilderTestAppObjC/Info.plist";
57645764
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
57655765
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
57665766
MTL_ENABLE_DEBUG_INFO = YES;
@@ -5794,7 +5794,7 @@
57945794
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
57955795
DEVELOPMENT_TEAM = 4ANB9W7R3P;
57965796
GCC_C_LANGUAGE_STANDARD = gnu11;
5797-
INFOPLIST_FILE = $SRCROOT/DynamicLinks/FDLBuilderTestAppObjC/Info.plist;
5797+
INFOPLIST_FILE = "$SRCROOT/DynamicLinks/FDLBuilderTestAppObjC/Info.plist";
57985798
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
57995799
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
58005800
MTL_ENABLE_DEBUG_INFO = NO;
@@ -6458,6 +6458,7 @@
64586458
buildSettings = {
64596459
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
64606460
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
6461+
BUNDLE_LOADER = "$(TEST_HOST)";
64616462
CLANG_ANALYZER_NONNULL = YES;
64626463
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
64636464
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -6482,11 +6483,6 @@
64826483
INFOPLIST_FILE = "$(SRCROOT)/Auth/App/iOS/Auth-Info.plist";
64836484
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
64846485
MTL_ENABLE_DEBUG_INFO = YES;
6485-
OTHER_LDFLAGS = (
6486-
"$(inherited)",
6487-
"-framework",
6488-
FirebaseAuth,
6489-
);
64906486
PRODUCT_BUNDLE_IDENTIFIER = "com.google.Auth-Example-tvOS";
64916487
PRODUCT_NAME = "$(TARGET_NAME)";
64926488
SDKROOT = appletvos;
@@ -6501,6 +6497,7 @@
65016497
buildSettings = {
65026498
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
65036499
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
6500+
BUNDLE_LOADER = "$(TEST_HOST)";
65046501
CLANG_ANALYZER_NONNULL = YES;
65056502
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
65066503
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -6526,11 +6523,6 @@
65266523
INFOPLIST_FILE = "$(SRCROOT)/Auth/App/iOS/Auth-Info.plist";
65276524
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
65286525
MTL_ENABLE_DEBUG_INFO = NO;
6529-
OTHER_LDFLAGS = (
6530-
"$(inherited)",
6531-
"-framework",
6532-
FirebaseAuth,
6533-
);
65346526
PRODUCT_BUNDLE_IDENTIFIER = "com.google.Auth-Example-tvOS";
65356527
PRODUCT_NAME = "$(TARGET_NAME)";
65366528
SDKROOT = appletvos;

Firebase/Auth/Source/AuthProviders/GameCenter/FIRGameCenterAuthCredential.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#import "FIRGameCenterAuthProvider.h"
2222
#import "FIRVerifyAssertionRequest.h"
2323

24+
NS_ASSUME_NONNULL_BEGIN
25+
2426
@implementation FIRGameCenterAuthCredential
2527

2628
- (nullable instancetype)initWithProvider:(NSString *)provider {
@@ -84,3 +86,5 @@ - (void)encodeWithCoder:(NSCoder *)aCoder {
8486
}
8587

8688
@end
89+
90+
NS_ASSUME_NONNULL_END

Firebase/Auth/Source/AuthProviders/GameCenter/FIRGameCenterAuthProvider.m

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#import "FIRAuthExceptionUtils.h"
2323
#import "FIRGameCenterAuthCredential.h"
2424

25+
NS_ASSUME_NONNULL_BEGIN
26+
2527
@implementation FIRGameCenterAuthProvider
2628

2729
- (instancetype)init {
@@ -31,7 +33,22 @@ - (instancetype)init {
3133
}
3234

3335
+ (void)getCredentialWithCompletion:(FIRGameCenterCredentialCallback)completion {
34-
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
36+
/**
37+
Linking GameKit.framework without using it on macOS results in App Store rejection.
38+
Thus we don't link GameKit.framework to our SDK directly. `optionalLocalPlayer` is used for
39+
checking whether the APP that consuming our SDK has linked GameKit.framework. If not, a
40+
`GameKitNotLinkedError` will be raised.
41+
**/
42+
GKLocalPlayer * _Nullable optionalLocalPlayer = [[NSClassFromString(@"GKLocalPlayer") alloc] init];
43+
44+
if (!optionalLocalPlayer) {
45+
if (completion) {
46+
completion(nil, [FIRAuthErrorUtils gameKitNotLinkedError]);
47+
}
48+
return;
49+
}
50+
51+
__weak GKLocalPlayer *localPlayer = [[optionalLocalPlayer class] localPlayer];
3552
if (!localPlayer.isAuthenticated) {
3653
if (completion) {
3754
completion(nil, [FIRAuthErrorUtils localPlayerNotAuthenticatedError]);
@@ -67,3 +84,5 @@ + (void)getCredentialWithCompletion:(FIRGameCenterCredentialCallback)completion
6784
}
6885

6986
@end
87+
88+
NS_ASSUME_NONNULL_END

Firebase/Auth/Source/FIRAuthErrorUtils.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,12 @@ NS_ASSUME_NONNULL_BEGIN
451451
*/
452452
+ (NSError *)localPlayerNotAuthenticatedError;
453453

454+
/** @fn gameKitNotLinkedError
455+
@brief Constructs an @c NSError with the @c FIRAuthErrorCodeGameKitNotLinked code.
456+
@return The NSError instance associated with the given FIRAuthError.
457+
*/
458+
+ (NSError *)gameKitNotLinkedError;
459+
454460
/** @fn notificationNotForwardedError
455461
@brief Constructs an @c NSError with the @c FIRAuthErrorCodeNotificationNotForwarded code.
456462
@return The NSError instance associated with the given FIRAuthError.

Firebase/Auth/Source/FIRAuthErrorUtils.m

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,17 @@
312312
@"The verification ID used to create the phone auth credential is invalid.";
313313

314314
/** @var kFIRAuthErrorMessageLocalPlayerNotAuthenticated
315-
@brief Message for @c FIRAuthErrorCodeLocalPlayerNotAuthenticated error code.
315+
@brief Message for @c FIRAuthErrorCodeLocalPlayerNotAuthenticated error code.
316316
*/
317317
static NSString *const kFIRAuthErrorMessageLocalPlayerNotAuthenticated =
318318
@"The local player is not authenticated. Please log the local player in to Game Center.";
319319

320+
/** @var kFIRAuthErrorMessageGameKitNotLinked
321+
@brief Message for @c kFIRAuthErrorMessageGameKitNotLinked error code.
322+
*/
323+
static NSString *const kFIRAuthErrorMessageGameKitNotLinked =
324+
@"The GameKit framework is not linked. Please turn on the Game Center capability.";
325+
320326
/** @var kFIRAuthErrorMessageSessionExpired
321327
@brief Message for @c FIRAuthErrorCodeSessionExpired error code.
322328
*/
@@ -556,6 +562,8 @@
556562
return kFIRAuthErrorMessageMalformedJWT;
557563
case FIRAuthErrorCodeLocalPlayerNotAuthenticated:
558564
return kFIRAuthErrorMessageLocalPlayerNotAuthenticated;
565+
case FIRAuthErrorCodeGameKitNotLinked:
566+
return kFIRAuthErrorMessageGameKitNotLinked;
559567
}
560568
}
561569

@@ -683,6 +691,8 @@
683691
return @"ERROR_MALFORMED_JWT";
684692
case FIRAuthErrorCodeLocalPlayerNotAuthenticated:
685693
return @"ERROR_LOCAL_PLAYER_NOT_AUTHENTICATED";
694+
case FIRAuthErrorCodeGameKitNotLinked:
695+
return @"ERROR_GAME_KIT_NOT_LINKED";
686696
}
687697
}
688698

@@ -1000,6 +1010,10 @@ + (NSError *)localPlayerNotAuthenticatedError {
10001010
return [self errorWithCode:FIRAuthInternalErrorCodeLocalPlayerNotAuthenticated];
10011011
}
10021012

1013+
+ (NSError *)gameKitNotLinkedError {
1014+
return [self errorWithCode:FIRAuthInternalErrorCodeGameKitNotLinked];
1015+
}
1016+
10031017
+ (NSError *)notificationNotForwardedError {
10041018
return [self errorWithCode:FIRAuthInternalErrorCodeNotificationNotForwarded];
10051019
}

Firebase/Auth/Source/FIRAuthInternalErrors.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,11 @@ typedef NS_ENUM(NSInteger, FIRAuthInternalErrorCode) {
375375
FIRAuthInternalErrorCodeLocalPlayerNotAuthenticated =
376376
FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeLocalPlayerNotAuthenticated,
377377

378+
/** Indicates that the Game Center local player was not authenticated.
379+
*/
380+
FIRAuthInternalErrorCodeGameKitNotLinked =
381+
FIRAuthPublicErrorCodeFlag | FIRAuthErrorCodeGameKitNotLinked,
382+
378383
/** Indicates that a non-null user was expected as an argmument to the operation but a null
379384
user was provided.
380385
*/

Firebase/Auth/Source/Public/FIRAuthErrors.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,10 @@ typedef NS_ENUM(NSInteger, FIRAuthErrorCode) {
313313
*/
314314
FIRAuthErrorCodeInvalidDynamicLinkDomain = 17074,
315315

316+
/** Indicates that the GameKit framework is not linked prior to attempting Game Center signin.
317+
*/
318+
FIRAuthErrorCodeGameKitNotLinked = 17076,
319+
316320
/** Indicates an error occurred while attempting to access the keychain.
317321
*/
318322
FIRAuthErrorCodeKeychainError = 17995,

Firebase/InAppMessaging/FIRInAppMessaging.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ + (void)disableAutoBootstrapWithFIRApp {
5050
+ (void)load {
5151
[FIRApp
5252
registerInternalLibrary:(Class<FIRLibrary>)self
53-
withName:@"fire-iam"
53+
withName:@"fire-fiam"
5454
withVersion:[NSString stringWithUTF8String:STR(FIRInAppMessaging_LIB_VERSION)]];
5555
}
5656

Firestore/Example/Tests/Local/FSTLocalStoreTests.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ - (void)acknowledgeMutationWithVersion:(FSTTestSnapshotVersion)documentVersion {
153153
transformResults:nil];
154154
FSTMutationBatchResult *result = [FSTMutationBatchResult resultWithBatch:batch
155155
commitVersion:version
156-
mutationResults:@[ mutationResult ]
156+
mutationResults:{mutationResult}
157157
streamToken:nil];
158158
_lastChanges = [self.localStore acknowledgeBatchWithResult:result];
159159
}

Firestore/Example/Tests/SpecTests/FSTMockDatastore.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include <memory>
2020
#include <unordered_map>
21+
#include <vector>
2122

2223
#include "Firestore/core/src/firebase/firestore/model/snapshot_version.h"
2324
#include "Firestore/core/src/firebase/firestore/model/types.h"
@@ -40,7 +41,7 @@ class MockDatastore : public Datastore {
4041
auth::CredentialsProvider* credentials);
4142

4243
std::shared_ptr<WatchStream> CreateWatchStream(WatchStreamCallback* callback) override;
43-
std::shared_ptr<WriteStream> CreateWriteStream(id<FSTWriteStreamDelegate> delegate) override;
44+
std::shared_ptr<WriteStream> CreateWriteStream(WriteStreamCallback* callback) override;
4445

4546
/**
4647
* A count of the total number of requests sent to the watch stream since the beginning of the
@@ -82,7 +83,7 @@ class MockDatastore : public Datastore {
8283
int WritesSent() const;
8384

8485
/** Injects a write ack as though it had come from the backend in response to a write. */
85-
void AckWrite(const model::SnapshotVersion& version, NSArray<FSTMutationResult*>* results);
86+
void AckWrite(const model::SnapshotVersion& version, std::vector<FSTMutationResult*> results);
8687

8788
/** Injects a stream failure as though it had come from the backend. */
8889
void FailWrite(const util::Status& error);

Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#import "Firestore/Source/Local/FSTQueryData.h"
2626
#import "Firestore/Source/Model/FSTMutation.h"
2727
#import "Firestore/Source/Remote/FSTSerializerBeta.h"
28-
#import "Firestore/Source/Remote/FSTStream.h"
2928

3029
#include "Firestore/core/src/firebase/firestore/auth/credentials_provider.h"
3130
#include "Firestore/core/src/firebase/firestore/auth/empty_credentials_provider.h"
@@ -161,18 +160,18 @@ void WriteWatchChange(const WatchChange& change, SnapshotVersion snap) {
161160
CredentialsProvider* credentials_provider,
162161
FSTSerializerBeta* serializer,
163162
GrpcConnection* grpc_connection,
164-
id<FSTWriteStreamDelegate> delegate,
163+
WriteStreamCallback* callback,
165164
MockDatastore* datastore)
166-
: WriteStream{worker_queue, credentials_provider, serializer, grpc_connection, delegate},
165+
: WriteStream{worker_queue, credentials_provider, serializer, grpc_connection, callback},
167166
datastore_{datastore},
168-
delegate_{delegate} {
167+
callback_{callback} {
169168
}
170169

171170
void Start() override {
172171
HARD_ASSERT(!open_, "Trying to start already started write stream");
173172
open_ = true;
174173
sent_mutations_ = {};
175-
[delegate_ writeStreamDidOpen];
174+
callback_->OnWriteStreamOpen();
176175
}
177176

178177
void Stop() override {
@@ -194,7 +193,7 @@ bool IsOpen() const override {
194193
void WriteHandshake() override {
195194
datastore_->IncrementWriteStreamRequests();
196195
SetHandshakeComplete();
197-
[delegate_ writeStreamDidCompleteHandshake];
196+
callback_->OnWriteStreamHandshakeComplete();
198197
}
199198

200199
void WriteMutations(NSArray<FSTMutation*>* mutations) override {
@@ -203,14 +202,14 @@ void WriteMutations(NSArray<FSTMutation*>* mutations) override {
203202
}
204203

205204
/** Injects a write ack as though it had come from the backend in response to a write. */
206-
void AckWrite(const SnapshotVersion& commitVersion, NSArray<FSTMutationResult*>* results) {
207-
[delegate_ writeStreamDidReceiveResponseWithVersion:commitVersion mutationResults:results];
205+
void AckWrite(const SnapshotVersion& commitVersion, std::vector<FSTMutationResult*> results) {
206+
callback_->OnWriteStreamMutationResult(commitVersion, std::move(results));
208207
}
209208

210209
/** Injects a failed write response as though it had come from the backend. */
211210
void FailStream(const Status& error) {
212211
open_ = false;
213-
[delegate_ writeStreamWasInterruptedWithError:error];
212+
callback_->OnWriteStreamClose(error);
214213
}
215214

216215
/**
@@ -236,7 +235,7 @@ int sent_mutations_count() const {
236235
bool open_ = false;
237236
std::queue<NSArray<FSTMutation*>*> sent_mutations_;
238237
MockDatastore* datastore_ = nullptr;
239-
id<FSTWriteStreamDelegate> delegate_ = nullptr;
238+
WriteStreamCallback* callback_ = nullptr;
240239
};
241240

242241
MockDatastore::MockDatastore(const core::DatabaseInfo& database_info,
@@ -257,11 +256,11 @@ int sent_mutations_count() const {
257256
return watch_stream_;
258257
}
259258

260-
std::shared_ptr<WriteStream> MockDatastore::CreateWriteStream(id<FSTWriteStreamDelegate> delegate) {
259+
std::shared_ptr<WriteStream> MockDatastore::CreateWriteStream(WriteStreamCallback* callback) {
261260
write_stream_ = std::make_shared<MockWriteStream>(
262261
worker_queue_, credentials_,
263262
[[FSTSerializerBeta alloc] initWithDatabaseID:&database_info_->database_id()],
264-
grpc_connection(), delegate, this);
263+
grpc_connection(), callback, this);
265264

266265
return write_stream_;
267266
}
@@ -290,8 +289,9 @@ int sent_mutations_count() const {
290289
return write_stream_->sent_mutations_count();
291290
}
292291

293-
void MockDatastore::AckWrite(const SnapshotVersion& version, NSArray<FSTMutationResult*>* results) {
294-
write_stream_->AckWrite(version, results);
292+
void MockDatastore::AckWrite(const SnapshotVersion& version,
293+
std::vector<FSTMutationResult*> results) {
294+
write_stream_->AckWrite(version, std::move(results));
295295
}
296296

297297
void MockDatastore::FailWrite(const Status& error) {

Firestore/Example/Tests/SpecTests/FSTSpecTests.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ - (void)doWriteAck:(NSDictionary *)spec {
363363

364364
FSTMutationResult *mutationResult = [[FSTMutationResult alloc] initWithVersion:version
365365
transformResults:nil];
366-
[self.driver receiveWriteAckWithVersion:version mutationResults:@[ mutationResult ]];
366+
[self.driver receiveWriteAckWithVersion:version mutationResults:{mutationResult}];
367367
}
368368

369369
- (void)doFailWrite:(NSDictionary *)spec {

Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include <map>
2020
#include <unordered_map>
21+
#include <vector>
2122

2223
#import "Firestore/Source/Remote/FSTRemoteStore.h"
2324

@@ -195,9 +196,9 @@ typedef std::unordered_map<firebase::firestore::auth::User,
195196
* the mutation. Snapshot versions must be monotonically increasing.
196197
* @param mutationResults The mutation results for the write that is being acked.
197198
*/
198-
- (FSTOutstandingWrite *)receiveWriteAckWithVersion:
199-
(const firebase::firestore::model::SnapshotVersion &)commitVersion
200-
mutationResults:(NSArray<FSTMutationResult *> *)mutationResults;
199+
- (FSTOutstandingWrite *)
200+
receiveWriteAckWithVersion:(const firebase::firestore::model::SnapshotVersion &)commitVersion
201+
mutationResults:(std::vector<FSTMutationResult *>)mutationResults;
201202

202203
/**
203204
* A count of the mutations written to the write stream by the FSTSyncEngine, but not yet

0 commit comments

Comments
 (0)