chrome: Add CefJSDialogHandler support (fixes #3702)

This commit is contained in:
Yuta Sekiguchi
2024-06-04 12:19:14 -04:00
committed by Marshall Greenblatt
parent fd7444c7a4
commit e4bb51f6f6
8 changed files with 58 additions and 24 deletions

View File

@ -131,7 +131,7 @@ index 6ca4ed42a601d..feec87943fee4 100644
]
}
diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc
index a1d50c2e47056..5519a1c7714d5 100644
index a1d50c2e47056..e85ee7027bd19 100644
--- chrome/browser/ui/browser.cc
+++ chrome/browser/ui/browser.cc
@@ -269,6 +269,25 @@
@ -341,7 +341,23 @@ index a1d50c2e47056..5519a1c7714d5 100644
RenderWidgetHostView* view = render_widget_host->GetView();
if (view && !render_widget_host->GetView()->IsHTMLFormPopup()) {
TabDialogs::FromWebContents(source)->HideHungRendererDialog(
@@ -2089,6 +2195,11 @@ void Browser::DraggableRegionsChanged(
@@ -2045,6 +2151,15 @@ void Browser::RendererResponsive(
content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager(
WebContents* source) {
+#if BUILDFLAG(ENABLE_CEF)
+ if (cef_browser_delegate_) {
+ auto* cef_js_dialog_manager =
+ cef_browser_delegate_->GetJavaScriptDialogManager(source);
+ if (cef_js_dialog_manager) {
+ return cef_js_dialog_manager;
+ }
+ }
+#endif
return javascript_dialogs::TabModalDialogManager::FromWebContents(source);
}
@@ -2089,6 +2204,11 @@ void Browser::DraggableRegionsChanged(
if (app_controller_) {
app_controller_->DraggableRegionsChanged(regions, contents);
}
@ -353,7 +369,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
}
void Browser::DidFinishNavigation(
@@ -2169,11 +2280,15 @@ void Browser::EnterFullscreenModeForTab(
@@ -2169,11 +2289,15 @@ void Browser::EnterFullscreenModeForTab(
const blink::mojom::FullscreenOptions& options) {
exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab(
requesting_frame, options.display_id);
@ -369,7 +385,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
}
bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) {
@@ -2373,6 +2488,15 @@ void Browser::RequestMediaAccessPermission(
@@ -2373,6 +2497,15 @@ void Browser::RequestMediaAccessPermission(
content::WebContents* web_contents,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) {
@ -385,7 +401,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
const extensions::Extension* extension =
GetExtensionForOrigin(profile_, request.security_origin);
MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
@@ -2917,9 +3041,11 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) {
@@ -2917,9 +3050,11 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) {
// Browser, Getters for UI (private):
StatusBubble* Browser::GetStatusBubble() {
@ -398,7 +414,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
}
// We hide the status bar for web apps windows as this matches native
@@ -2927,6 +3053,12 @@ StatusBubble* Browser::GetStatusBubble() {
@@ -2927,6 +3062,12 @@ StatusBubble* Browser::GetStatusBubble() {
// mode, as the minimal browser UI includes the status bar.
if (web_app::AppBrowserController::IsWebApp(this) &&
!app_controller()->HasMinimalUiButtons()) {
@ -411,7 +427,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
return nullptr;
}
@@ -3076,6 +3208,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) {
@@ -3076,6 +3217,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) {
BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this);
web_contents_collection_.StopObserving(web_contents);
}
@ -420,7 +436,7 @@ index a1d50c2e47056..5519a1c7714d5 100644
}
void Browser::TabDetachedAtImpl(content::WebContents* contents,
@@ -3230,6 +3364,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature(
@@ -3230,6 +3373,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature(
bool Browser::SupportsWindowFeatureImpl(WindowFeature feature,
bool check_can_support) const {