Index: components/constrained_window/constrained_window_views.cc |
diff --git a/components/constrained_window/constrained_window_views.cc b/components/constrained_window/constrained_window_views.cc |
index 37d580988a66721c7a47080dc5be34df2daf7d23..53964bd275a1170bcb3aa2086bc9abc6a67ef58f 100644 |
--- a/components/constrained_window/constrained_window_views.cc |
+++ b/components/constrained_window/constrained_window_views.cc |
@@ -18,6 +18,10 @@ |
#include "ui/views/widget/widget_observer.h" |
#include "ui/views/window/dialog_delegate.h" |
+#if defined(OS_MACOSX) |
+#import "components/constrained_window/native_web_contents_modal_dialog_manager_views_mac.h" |
+#endif |
+ |
using web_modal::ModalDialogHost; |
using web_modal::ModalDialogHostObserver; |
@@ -145,6 +149,27 @@ views::Widget* ShowWebModalDialogViews( |
return widget; |
} |
+#if defined(OS_MACOSX) |
+views::Widget* ShowWebModalDialogWithOverlayViews( |
+ views::WidgetDelegate* dialog, |
+ content::WebContents* initiator_web_contents) { |
+ DCHECK(constrained_window_views_client); |
+ // For embedded WebContents, use the embedder's WebContents for constrained |
+ // window. |
+ content::WebContents* web_contents = |
+ guest_view::GuestViewBase::GetTopLevelWebContents(initiator_web_contents); |
+ views::Widget* widget = CreateWebModalDialogViews(dialog, web_contents); |
+ web_modal::WebContentsModalDialogManager* manager = |
+ web_modal::WebContentsModalDialogManager::FromWebContents(web_contents); |
+ std::unique_ptr<web_modal::SingleWebContentsDialogManager> dialog_manager( |
+ new NativeWebContentsModalDialogManagerViewsMac(widget->GetNativeWindow(), |
+ manager)); |
+ manager->ShowDialogWithManager(widget->GetNativeWindow(), |
+ std::move(dialog_manager)); |
+ return widget; |
+} |
+#endif |
+ |
views::Widget* CreateWebModalDialogViews(views::WidgetDelegate* dialog, |
content::WebContents* web_contents) { |
DCHECK_EQ(ui::MODAL_TYPE_CHILD, dialog->GetModalType()); |