File tree Expand file tree Collapse file tree 4 files changed +31
-6
lines changed Expand file tree Collapse file tree 4 files changed +31
-6
lines changed Original file line number Diff line number Diff line change 1717
1818#include < map>
1919
20+ #include " app/memory/unique_ptr.h"
21+ #include " app/src/util_ios.h"
2022#include " firebase/app_check.h"
2123
2224#ifdef __OBJC__
@@ -27,6 +29,11 @@ namespace firebase {
2729namespace app_check {
2830namespace internal {
2931
32+ // This defines the class FIRAppCheckDebugProviderFactoryPointer, which is a
33+ // C++-compatible wrapper around the FIRAppCheckDebugProviderFactory Obj-C
34+ // class.
35+ OBJ_C_PTR_WRAPPER (FIRAppCheckDebugProviderFactory);
36+
3037class DebugAppCheckProviderFactoryInternal : public AppCheckProviderFactory {
3138 public:
3239 DebugAppCheckProviderFactoryInternal ();
@@ -37,9 +44,14 @@ class DebugAppCheckProviderFactoryInternal : public AppCheckProviderFactory {
3744
3845 private:
3946#ifdef __OBJC__
40- FIRAppCheckDebugProviderFactory* ios_provider_factory_;
47+ FIRAppCheckDebugProviderFactory* ios_provider_factory () const {
48+ return ios_provider_factory_->get ();
49+ }
4150#endif // __OBJC__
4251
52+ // Object lifetime managed by Objective C ARC.
53+ UniquePtr<FIRAppCheckDebugProviderFactoryPointer> ios_provider_factory_;
54+
4355 std::map<App*, AppCheckProvider*> created_providers_;
4456};
4557
Original file line number Diff line number Diff line change @@ -59,7 +59,8 @@ virtual void GetToken(
5959
6060DebugAppCheckProviderFactoryInternal::DebugAppCheckProviderFactoryInternal ()
6161 : created_providers_() {
62- ios_provider_factory_ = [[FIRAppCheckDebugProviderFactory alloc ] init ];
62+ ios_provider_factory_ = MakeUnique<FIRAppCheckDebugProviderFactoryPointer>(
63+ [[FIRAppCheckDebugProviderFactory alloc ] init ]);
6364}
6465
6566DebugAppCheckProviderFactoryInternal::~DebugAppCheckProviderFactoryInternal () {
@@ -78,7 +79,7 @@ virtual void GetToken(
7879 }
7980 // Otherwise, create a new provider
8081 FIRAppCheckDebugProvider* ios_provider =
81- [ios_provider_factory_ createProviderWithApp: app->GetPlatformApp ()];
82+ [ios_provider_factory () createProviderWithApp: app->GetPlatformApp ()];
8283 AppCheckProvider* cpp_provider = new internal::DebugAppCheckProvider (ios_provider);
8384 created_providers_[app] = cpp_provider;
8485 return cpp_provider;
Original file line number Diff line number Diff line change 1717
1818#include < map>
1919
20+ #include " app/memory/unique_ptr.h"
21+ #include " app/src/util_ios.h"
2022#include " firebase/app_check.h"
2123
2224#ifdef __OBJC__
@@ -27,6 +29,10 @@ namespace firebase {
2729namespace app_check {
2830namespace internal {
2931
32+ // This defines the class FIRDeviceCheckProviderFactoryPointer, which is a
33+ // C++-compatible wrapper around the FIRDeviceCheckProviderFactory Obj-C class.
34+ OBJ_C_PTR_WRAPPER (FIRDeviceCheckProviderFactory);
35+
3036class DeviceCheckProviderFactoryInternal : public AppCheckProviderFactory {
3137 public:
3238 DeviceCheckProviderFactoryInternal ();
@@ -37,9 +43,14 @@ class DeviceCheckProviderFactoryInternal : public AppCheckProviderFactory {
3743
3844 private:
3945#ifdef __OBJC__
40- FIRDeviceCheckProviderFactory* ios_provider_factory_;
46+ FIRDeviceCheckProviderFactory* ios_provider_factory () const {
47+ return ios_provider_factory_->get ();
48+ }
4149#endif // __OBJC__
4250
51+ // Object lifetime managed by Objective C ARC.
52+ UniquePtr<FIRDeviceCheckProviderFactoryPointer> ios_provider_factory_;
53+
4354 std::map<App*, AppCheckProvider*> created_providers_;
4455};
4556
Original file line number Diff line number Diff line change @@ -58,7 +58,8 @@ virtual void GetToken(
5858}
5959
6060DeviceCheckProviderFactoryInternal::DeviceCheckProviderFactoryInternal () : created_providers_() {
61- ios_provider_factory_ = [[FIRDeviceCheckProviderFactory alloc ] init ];
61+ ios_provider_factory_ = MakeUnique<FIRDeviceCheckProviderFactoryPointer>(
62+ [[FIRDeviceCheckProviderFactory alloc ] init ]);
6263}
6364
6465DeviceCheckProviderFactoryInternal::~DeviceCheckProviderFactoryInternal () {
@@ -77,7 +78,7 @@ virtual void GetToken(
7778 }
7879 // Otherwise, create a new provider
7980 FIRDeviceCheckProvider* ios_provider =
80- [ios_provider_factory_ createProviderWithApp: app->GetPlatformApp ()];
81+ [ios_provider_factory () createProviderWithApp: app->GetPlatformApp ()];
8182 AppCheckProvider* cpp_provider = new internal::DeviceCheckProvider (ios_provider);
8283 created_providers_[app] = cpp_provider;
8384 return cpp_provider;
You can’t perform that action at this time.
0 commit comments