Add notification for aborted popups (fixes #3776)

Pass a new |popup_id| parameter to OnBeforePopup and call a new
OnBeforePopupAborted callback if the popup is aborted before
OnAfterCreated is called for the popup browser. Add new
CefBrowserHost::GetBrowserByIdentifier and GetOpenerIdentifier
methods to assist with retrieval of associated browsers.

In cefclient, clean up state when a popup is aborted and close
any associated popup browsers when the opener browser is closed.
This also works when running with `--use-default-popup`.
This commit is contained in:
Marshall Greenblatt
2024-11-08 19:05:04 -05:00
parent b660522983
commit e513077eac
45 changed files with 773 additions and 109 deletions

View File

@@ -480,6 +480,10 @@ void CefBrowserHostBase::SetFocus(bool focus) {
}
}
int CefBrowserHostBase::GetOpenerIdentifier() {
return opener_id_;
}
void CefBrowserHostBase::RunFileDialog(
FileDialogMode mode,
const CefString& title,
@@ -1445,6 +1449,11 @@ bool CefBrowserHostBase::IsVisible() const {
return false;
}
int CefBrowserHostBase::GetNextPopupId() {
CEF_REQUIRE_UIT();
return next_popup_id_++;
}
bool CefBrowserHostBase::EnsureDevToolsProtocolManager() {
CEF_REQUIRE_UIT();
if (!contents_delegate_.web_contents()) {