Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions include/views/cef_view_delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,17 @@ class CefViewDelegate : public virtual CefBaseRefCounted {
///
/*--cef()--*/
virtual void OnThemeChanged(CefRefPtr<CefView> view) {}

#if CEF_API_ADDED(CEF_NEXT)
///
/// Called by CefBrowserPlatformDelegateChromeViews::BrowserDestroyed()
///
/// We have to drop our reference to the native delegate, because it's
/// going to be destroyed very soon.
///
/*--cef(added=next)--*/
virtual void ClearNativeDelegate() {}
#endif
};

#endif // CEF_INCLUDE_VIEWS_CEF_WINDOW_DELEGATE_H_
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,12 @@ void CefBrowserPlatformDelegateChromeViews::BrowserDestroyed(
CefBrowserPlatformDelegateChrome::BrowserDestroyed(browser);
// |browser_view_| may be destroyed before this callback arrives.
if (browser_view_) {
CefRefPtr<CefWindow> window = browser_view_->GetWindow();
if (window) {
CefRefPtr<CefViewDelegate> delegate = window->GetDelegate();
if (delegate)
delegate->ClearNativeDelegate();
}
browser_view_->BrowserDestroyed(browser);
}
browser_view_ = nullptr;
Expand Down
6 changes: 5 additions & 1 deletion libcef/browser/chrome/views/chrome_child_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ class ChildWindowDelegate : public CefWindowDelegate {
void OnWindowDestroyed(CefRefPtr<CefWindow> window) override {
browser_view_ = nullptr;
window_ = nullptr;
#if BUILDFLAG(IS_WIN)
native_delegate_ = nullptr;
}

void ClearNativeDelegate() override {
#if defined(USE_AURA)
native_delegate_ = nullptr;
#endif
}
Expand Down