fix: clean up devtools frontend_host on webcontents destroy (#40666)

* fix: clean up devtools frontend_host on destroy

* chore: use IsInPrimaryMainFrame instead of IsInMainFrame

* test: add a test for re-opening devtools
This commit is contained in:
Albert Xing 2023-12-01 11:37:52 -08:00 committed by GitHub
parent 344b7f0d06
commit 3609fc7402
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -1007,6 +1007,7 @@ void InspectableWebContents::WebContentsDestroyed() {
Observe(nullptr);
Detach();
embedder_message_dispatcher_.reset();
frontend_host_.reset();
if (view_ && view_->GetDelegate())
view_->GetDelegate()->DevToolsClosed();
@ -1052,7 +1053,7 @@ void InspectableWebContents::OnWebContentsFocused(
void InspectableWebContents::ReadyToCommitNavigation(
content::NavigationHandle* navigation_handle) {
if (navigation_handle->IsInMainFrame()) {
if (navigation_handle->IsInPrimaryMainFrame()) {
if (navigation_handle->GetRenderFrameHost() ==
GetDevToolsWebContents()->GetPrimaryMainFrame() &&
frontend_host_) {
@ -1069,7 +1070,7 @@ void InspectableWebContents::ReadyToCommitNavigation(
void InspectableWebContents::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
if (navigation_handle->IsInMainFrame() ||
if (navigation_handle->IsInPrimaryMainFrame() ||
!navigation_handle->GetURL().SchemeIs("chrome-extension") ||
!navigation_handle->HasCommitted())
return;