From cfdec92624a82fa59119e0aeb2d4744978f0c9c8 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Wed, 18 Aug 2021 17:55:03 -0400 Subject: [PATCH] Fix ExecuteJavaScript failure with null CefRenderProcessHandler (see issue #2421) When CefApp::GetRenderProcessHandler returned null CefRenderFrameObserver::DidCreateScriptContext was returning early (not calling CefFrameImpl::OnContextCreated) and consequently queued actions such as JavaScript were never executed. --- libcef/renderer/render_frame_observer.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libcef/renderer/render_frame_observer.cc b/libcef/renderer/render_frame_observer.cc index 1d987cb2e..fda8a6acb 100644 --- a/libcef/renderer/render_frame_observer.cc +++ b/libcef/renderer/render_frame_observer.cc @@ -126,20 +126,20 @@ void CefRenderFrameObserver::DidCreateScriptContext( CefRefPtr application = CefAppManager::Get()->GetApplication(); if (application) handler = application->GetRenderProcessHandler(); - if (!handler) - return; CefRefPtr framePtr = browserPtr->GetWebFrameImpl(frame); - v8::Isolate* isolate = blink::MainThreadIsolate(); - v8::HandleScope handle_scope(isolate); - v8::Context::Scope scope(context); - v8::MicrotasksScope microtasks_scope(isolate, - v8::MicrotasksScope::kRunMicrotasks); + if (handler) { + v8::Isolate* isolate = blink::MainThreadIsolate(); + v8::HandleScope handle_scope(isolate); + v8::Context::Scope scope(context); + v8::MicrotasksScope microtasks_scope(isolate, + v8::MicrotasksScope::kRunMicrotasks); - CefRefPtr contextPtr(new CefV8ContextImpl(isolate, context)); + CefRefPtr contextPtr(new CefV8ContextImpl(isolate, context)); - handler->OnContextCreated(browserPtr.get(), framePtr.get(), contextPtr); + handler->OnContextCreated(browserPtr.get(), framePtr.get(), contextPtr); + } // Do this last, in case the client callback modified the window object. framePtr->OnContextCreated();