chore: debug crash on DevTools SetOwnerWindow (#47243)

This commit is contained in:
Shelley Vohr 2025-05-26 09:45:43 +02:00 committed by GitHub
parent 5e3b5ef04c
commit c6f368acc6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 1 deletions

View file

@ -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");
}

View file

@ -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_);

View file

@ -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<std::string> synced_setting_names_;
SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<InspectableWebContents> weak_factory_{this};
};