Skip to content

Commit 276ad84

Browse files
authored
Send App Id when Firestore SDK delivers heartbeat (#1055)
Send GMP App Id along with Firestore requests for desktop platform similar to for [Apple platform](https://github.com/firebase/firebase-ios-sdk/blob/eb30b6fdd809cbfe3a9eb7f3ccf1dd46326bef2d/Firestore/core/src/remote/firebase_metadata_provider_apple.mm#L66). This is required for the backend to process heartbeat properly for desktop usage.
1 parent f884cdb commit 276ad84

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

firestore/src/main/create_firebase_metadata_provider_desktop.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ namespace firestore {
2323

2424
using remote::FirebaseMetadataProvider;
2525

26-
std::unique_ptr<FirebaseMetadataProvider> CreateFirebaseMetadataProvider(App&) {
27-
return absl::make_unique<FirebaseMetadataProviderCpp>();
26+
std::unique_ptr<FirebaseMetadataProvider> CreateFirebaseMetadataProvider(
27+
App& app) {
28+
return absl::make_unique<FirebaseMetadataProviderCpp>(app);
2829
}
2930

3031
} // namespace firestore

firestore/src/main/firebase_metadata_provider_desktop.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
namespace firebase {
2323
namespace firestore {
2424

25+
FirebaseMetadataProviderCpp::FirebaseMetadataProviderCpp(const App& app)
26+
: gmp_app_id_(app.options().app_id()) {}
27+
2528
void FirebaseMetadataProviderCpp::UpdateMetadata(grpc::ClientContext& context) {
2629
HeartbeatInfo::Code heartbeat = HeartbeatInfo::GetHeartbeatCode("fire-fst");
2730

@@ -34,6 +37,10 @@ void FirebaseMetadataProviderCpp::UpdateMetadata(grpc::ClientContext& context) {
3437
}
3538

3639
context.AddMetadata(kXFirebaseClientHeader, App::GetUserAgent());
40+
41+
if (!gmp_app_id_.empty()) {
42+
context.AddMetadata(kXFirebaseGmpIdHeader, gmp_app_id_);
43+
}
3744
}
3845

3946
} // namespace firestore

firestore/src/main/firebase_metadata_provider_desktop.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
#ifndef FIREBASE_FIRESTORE_SRC_MAIN_FIREBASE_METADATA_PROVIDER_DESKTOP_H_
1818
#define FIREBASE_FIRESTORE_SRC_MAIN_FIREBASE_METADATA_PROVIDER_DESKTOP_H_
1919

20+
#include <string>
21+
2022
#include "Firestore/core/src/remote/firebase_metadata_provider.h"
23+
#include "app/src/include/firebase/app.h"
2124

2225
#if defined(__ANDROID__)
2326
#error "This header should not be used on Android."
@@ -29,7 +32,12 @@ namespace firestore {
2932

3033
class FirebaseMetadataProviderCpp : public remote::FirebaseMetadataProvider {
3134
public:
35+
explicit FirebaseMetadataProviderCpp(const App& app);
36+
3237
void UpdateMetadata(grpc::ClientContext& context) override;
38+
39+
private:
40+
std::string gmp_app_id_;
3341
};
3442

3543
} // namespace firestore

0 commit comments

Comments
 (0)