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 17
17
18
18
#include < map>
19
19
20
+ #include " app/memory/unique_ptr.h"
21
+ #include " app/src/util_ios.h"
20
22
#include " firebase/app_check.h"
21
23
22
24
#ifdef __OBJC__
@@ -27,6 +29,11 @@ namespace firebase {
27
29
namespace app_check {
28
30
namespace internal {
29
31
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
+
30
37
class DebugAppCheckProviderFactoryInternal : public AppCheckProviderFactory {
31
38
public:
32
39
DebugAppCheckProviderFactoryInternal ();
@@ -37,9 +44,14 @@ class DebugAppCheckProviderFactoryInternal : public AppCheckProviderFactory {
37
44
38
45
private:
39
46
#ifdef __OBJC__
40
- FIRAppCheckDebugProviderFactory* ios_provider_factory_;
47
+ FIRAppCheckDebugProviderFactory* ios_provider_factory () const {
48
+ return ios_provider_factory_->get ();
49
+ }
41
50
#endif // __OBJC__
42
51
52
+ // Object lifetime managed by Objective C ARC.
53
+ UniquePtr<FIRAppCheckDebugProviderFactoryPointer> ios_provider_factory_;
54
+
43
55
std::map<App*, AppCheckProvider*> created_providers_;
44
56
};
45
57
Original file line number Diff line number Diff line change @@ -59,7 +59,8 @@ virtual void GetToken(
59
59
60
60
DebugAppCheckProviderFactoryInternal::DebugAppCheckProviderFactoryInternal ()
61
61
: created_providers_() {
62
- ios_provider_factory_ = [[FIRAppCheckDebugProviderFactory alloc ] init ];
62
+ ios_provider_factory_ = MakeUnique<FIRAppCheckDebugProviderFactoryPointer>(
63
+ [[FIRAppCheckDebugProviderFactory alloc ] init ]);
63
64
}
64
65
65
66
DebugAppCheckProviderFactoryInternal::~DebugAppCheckProviderFactoryInternal () {
@@ -78,7 +79,7 @@ virtual void GetToken(
78
79
}
79
80
// Otherwise, create a new provider
80
81
FIRAppCheckDebugProvider* ios_provider =
81
- [ios_provider_factory_ createProviderWithApp: app->GetPlatformApp ()];
82
+ [ios_provider_factory () createProviderWithApp: app->GetPlatformApp ()];
82
83
AppCheckProvider* cpp_provider = new internal::DebugAppCheckProvider (ios_provider);
83
84
created_providers_[app] = cpp_provider;
84
85
return cpp_provider;
Original file line number Diff line number Diff line change 17
17
18
18
#include < map>
19
19
20
+ #include " app/memory/unique_ptr.h"
21
+ #include " app/src/util_ios.h"
20
22
#include " firebase/app_check.h"
21
23
22
24
#ifdef __OBJC__
@@ -27,6 +29,10 @@ namespace firebase {
27
29
namespace app_check {
28
30
namespace internal {
29
31
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
+
30
36
class DeviceCheckProviderFactoryInternal : public AppCheckProviderFactory {
31
37
public:
32
38
DeviceCheckProviderFactoryInternal ();
@@ -37,9 +43,14 @@ class DeviceCheckProviderFactoryInternal : public AppCheckProviderFactory {
37
43
38
44
private:
39
45
#ifdef __OBJC__
40
- FIRDeviceCheckProviderFactory* ios_provider_factory_;
46
+ FIRDeviceCheckProviderFactory* ios_provider_factory () const {
47
+ return ios_provider_factory_->get ();
48
+ }
41
49
#endif // __OBJC__
42
50
51
+ // Object lifetime managed by Objective C ARC.
52
+ UniquePtr<FIRDeviceCheckProviderFactoryPointer> ios_provider_factory_;
53
+
43
54
std::map<App*, AppCheckProvider*> created_providers_;
44
55
};
45
56
Original file line number Diff line number Diff line change @@ -58,7 +58,8 @@ virtual void GetToken(
58
58
}
59
59
60
60
DeviceCheckProviderFactoryInternal::DeviceCheckProviderFactoryInternal () : created_providers_() {
61
- ios_provider_factory_ = [[FIRDeviceCheckProviderFactory alloc ] init ];
61
+ ios_provider_factory_ = MakeUnique<FIRDeviceCheckProviderFactoryPointer>(
62
+ [[FIRDeviceCheckProviderFactory alloc ] init ]);
62
63
}
63
64
64
65
DeviceCheckProviderFactoryInternal::~DeviceCheckProviderFactoryInternal () {
@@ -77,7 +78,7 @@ virtual void GetToken(
77
78
}
78
79
// Otherwise, create a new provider
79
80
FIRDeviceCheckProvider* ios_provider =
80
- [ios_provider_factory_ createProviderWithApp: app->GetPlatformApp ()];
81
+ [ios_provider_factory () createProviderWithApp: app->GetPlatformApp ()];
81
82
AppCheckProvider* cpp_provider = new internal::DeviceCheckProvider (ios_provider);
82
83
created_providers_[app] = cpp_provider;
83
84
return cpp_provider;
You can’t perform that action at this time.
0 commit comments