@@ -24,33 +24,19 @@ BraveAdsJSHandler::BraveAdsJSHandler(content::RenderFrame* render_frame)
24
24
25
25
BraveAdsJSHandler::~BraveAdsJSHandler () = default ;
26
26
27
- bool BraveAdsJSHandler::EnsureConnected () {
28
- if (!brave_ads_.is_bound ()) {
29
- render_frame_->GetBrowserInterfaceBroker ()->GetInterface (
30
- brave_ads_.BindNewPipeAndPassReceiver ());
31
- }
32
-
33
- return brave_ads_.is_bound ();
34
- }
35
-
36
27
void BraveAdsJSHandler::AddJavaScriptObjectToFrame (
37
28
v8::Local<v8::Context> context) {
38
29
v8::Isolate* isolate = blink::MainThreadIsolate ();
39
30
v8::HandleScope handle_scope (isolate);
40
- if (context.IsEmpty ())
31
+ if (context.IsEmpty ()) {
41
32
return ;
33
+ }
42
34
43
35
v8::Context::Scope context_scope (context);
44
36
45
37
BindFunctionsToObject (isolate, context);
46
38
}
47
39
48
- void BraveAdsJSHandler::ResetRemote (content::RenderFrame* render_frame) {
49
- render_frame_ = render_frame;
50
- brave_ads_.reset ();
51
- EnsureConnected ();
52
- }
53
-
54
40
void BraveAdsJSHandler::BindFunctionsToObject (v8::Isolate* isolate,
55
41
v8::Local<v8::Context> context) {
56
42
v8::Local<v8::Object> global = context->Global ();
@@ -87,10 +73,27 @@ void BraveAdsJSHandler::BindFunctionToObject(
87
73
.Check ();
88
74
}
89
75
76
+ bool BraveAdsJSHandler::EnsureConnected () {
77
+ if (!brave_ads_.is_bound ()) {
78
+ render_frame_->GetBrowserInterfaceBroker ()->GetInterface (
79
+ brave_ads_.BindNewPipeAndPassReceiver ());
80
+ brave_ads_.set_disconnect_handler (base::BindOnce (
81
+ &BraveAdsJSHandler::OnRemoteDisconnect, base::Unretained (this )));
82
+ }
83
+
84
+ return brave_ads_.is_bound ();
85
+ }
86
+
87
+ void BraveAdsJSHandler::OnRemoteDisconnect () {
88
+ brave_ads_.reset ();
89
+ EnsureConnected ();
90
+ }
91
+
90
92
v8::Local<v8::Promise> BraveAdsJSHandler::RequestAdsEnabled (
91
93
v8::Isolate* isolate) {
92
- if (!EnsureConnected ())
94
+ if (!EnsureConnected ()) {
93
95
return v8::Local<v8::Promise>();
96
+ }
94
97
95
98
v8::MaybeLocal<v8::Promise::Resolver> resolver =
96
99
v8::Promise::Resolver::New (isolate->GetCurrentContext ());
0 commit comments