diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index fb2f037b7808..41ed4592a2f7 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -2147,8 +2147,11 @@ void WebContents::DevToolsOpened() { // Inherit owner window in devtools when it doesn't have one. auto* devtools = inspectable_web_contents_->GetDevToolsWebContents(); bool has_window = devtools->GetUserData(NativeWindowRelay::UserDataKey()); - if (owner_window() && !has_window) + if (owner_window_ && !has_window) { + DCHECK(!owner_window_.WasInvalidated()); + DCHECK_EQ(handle->owner_window(), nullptr); handle->SetOwnerWindow(devtools, owner_window()); + } Emit("devtools-opened"); } diff --git a/shell/browser/ui/inspectable_web_contents.cc b/shell/browser/ui/inspectable_web_contents.cc index 60d481a9d5ca..e80d6a6d7662 100644 --- a/shell/browser/ui/inspectable_web_contents.cc +++ b/shell/browser/ui/inspectable_web_contents.cc @@ -530,6 +530,8 @@ void InspectableWebContents::CloseWindow() { } void InspectableWebContents::LoadCompleted() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + frontend_loaded_ = true; if (managed_devtools_web_contents_) view_->ShowDevTools(activate_); diff --git a/shell/browser/ui/inspectable_web_contents.h b/shell/browser/ui/inspectable_web_contents.h index 012f613895e3..87fe41aaad7f 100644 --- a/shell/browser/ui/inspectable_web_contents.h +++ b/shell/browser/ui/inspectable_web_contents.h @@ -15,6 +15,7 @@ #include "base/containers/unique_ptr_adapters.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/sequence_checker.h" #include "chrome/browser/devtools/devtools_embedder_message_dispatcher.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_frontend_host.h" @@ -271,6 +272,8 @@ class InspectableWebContents // use, which guarantees that this set must not be persisted. base::flat_set synced_setting_names_; + SEQUENCE_CHECKER(sequence_checker_); + base::WeakPtrFactory weak_factory_{this}; };