Skip to content

Commit 04a71dd

Browse files
committed
skip initial empty document in document hooks
Or the context created in the hook under the empty document will be considered normal context, blocking parser resumption. https://chromium-review.googlesource.com/c/chromium/src/+/2601063 0 0x00005569794df37a in nw::DocumentHook2 (start=true, frame=0x55697b5dd7a0, dispatcher=0x55697b50e9e0) at ../../content/nw/src/renderer/nw_extensions_renderer_hooks.cc:462 1 0x00005569749903f8 in extensions::ExtensionFrameHelper::DidCreateDocumentElement (this=0x55697b5f6f60) at ../../extensions/renderer/extension_frame_helper.cc:270 2 0x000055697498f0ce in extensions::ExtensionFrameHelper::ExtensionFrameHelper (this=0x55697b5f6f60, render_frame=0x55697b5dd7a0, extension_dispatcher=0x55697b50e9e0) at ../../extensions/renderer/extension_frame_helper.cc:132 3 0x0000556979492e49 in ChromeExtensionsRendererClient::RenderFrameCreated(content::RenderFrame*, service_manager::Binde rRegistryWithArgs<>*) (this=0x556979ab5008 <ChromeExtensionsRendererClient::GetInstance()::client+8>, render_frame=0x55697b5dd7a0, registry=0x55697b5f64a0) at ../../chrome/renderer/extensions/chrome_extensions_renderer_client.cc:165 4 0x0000556979404a8a in ChromeContentRendererClient::RenderFrameCreated ( this=0x556979a7b1e8 <g_chrome_content_renderer_client+8>, render_frame=0x55697b5dd7a0) at ../../chrome/renderer/chrome_content_renderer_client.cc:507 5 0x00007f0546398d56 in content::RenderFrameImpl::Initialize (this=0x55697b5dd7a0, parent=0x0) at ../../content/renderer/render_frame_impl.cc:2085 6 0x00007f05463959fc in content::RenderFrameImpl::CreateMainFrame (agent_scheduling_group=..., render_view=0x55697b5d6c40, compositor_deps=0x55697b474700, opener=0x0, params_ptr=0x7ffdfa5bcc98) at ../../content/renderer/render_frame_impl.cc:1637 7 0x00007f054641c27e in content::RenderViewImpl::Initialize (this=0x55697b5d6c40, compositor_deps=0x55697b474700, params=..., was_created_by_renderer=false, task_runner=...) at ../../content/renderer/render_view_impl.cc:159 8 0x00007f054641d1f2 in content::RenderViewImpl::Create (agent_scheduling_group=..., compositor_deps=0x55697b474700, params=..., was_created_by_renderer=false, task_runner=...) at ../../content/renderer/render_view_impl.cc:272 9 0x00007f05462d90b1 in content::AgentSchedulingGroup::CreateView (this=0x55697b489900, params=...) at ../../content/renderer/agent_scheduling_group.cc:173 10 0x00007f0543694407 in content::mojom::AgentSchedulingGroupStubDispatch::Accept (impl=0x55697b489908, message= 0x7ffdfa5bd6c8) at gen/content/common/agent_scheduling_group.mojom.cc:948
1 parent 13d92d8 commit 04a71dd

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/renderer/nw_extensions_renderer_hooks.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ void DocumentHook2(bool start, content::RenderFrame* frame, Dispatcher* dispatch
437437
blink::ScriptForbiddenScope::AllowUserAgentScript script;
438438
blink::WebLocalFrame* web_frame = frame->GetWebFrame();
439439
GURL frame_url = ScriptContext::GetDocumentLoaderURLForFrame(web_frame);
440+
content::RenderFrame* main_frame = frame->GetRenderView()->GetMainRenderFrame();
441+
if (!main_frame)
442+
return;
440443
if (web_frame->Parent() && (!frame_url.is_valid() || frame_url.is_empty()))
441444
return;
442445
v8::Isolate* isolate = v8::Isolate::GetCurrent();
@@ -458,7 +461,6 @@ void DocumentHook2(bool start, content::RenderFrame* frame, Dispatcher* dispatch
458461
arguments.push_back(v8::Boolean::New(isolate, start));
459462
arguments.push_back(window);
460463
if (base::FeatureList::IsEnabled(::features::kNWNewWin)) {
461-
content::RenderFrame* main_frame = frame->GetRenderView()->GetMainRenderFrame();
462464
arguments.push_back(v8::Integer::New(isolate, main_frame->GetRoutingID()));
463465

464466
std::set<ScriptContext*> contexts(dispatcher->script_context_set().contexts());
@@ -495,11 +497,14 @@ void DocumentElementHook(blink::WebLocalFrame* frame,
495497
GURL frame_url = ScriptContext::GetDocumentLoaderURLForFrame(frame);
496498
if (frame->Parent() && (!frame_url.is_valid() || frame_url.is_empty()))
497499
return;
500+
content::RenderFrameImpl* render_frame = content::RenderFrameImpl::FromWebFrame(frame);
501+
content::RenderFrame* main_frame = render_frame->GetRenderView()->GetMainRenderFrame();
502+
if (!main_frame)
503+
return;
498504
v8::Isolate* isolate = v8::Isolate::GetCurrent();
499505
v8::HandleScope hscope(isolate);
500506
frame->GetDocument().GetSecurityOrigin().grantUniversalAccess();
501507
frame->setNodeJS(true);
502-
content::RenderFrameImpl* render_frame = content::RenderFrameImpl::FromWebFrame(frame);
503508
auto* frame_host = render_frame->GetFrameHost();
504509
frame_host->SetNodeJS(true);
505510
std::string path = effective_document_url.path();

0 commit comments

Comments
 (0)