| Index: chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
|
| diff --git a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
|
| index 1f6302730572dbd5ca30c14391fd545ce5d555f0..4393ced2643006354ac1e173f10c69878ae993fa 100644
|
| --- a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
|
| +++ b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
|
| @@ -80,11 +80,17 @@ class WebDialogWebContentsDelegateViews
|
| // Sets WebView's preferred size based on auto-resized contents.
|
| web_view_->SetPreferredSize(preferred_size);
|
|
|
| - constrained_window::UpdateWebContentsModalDialogPosition(
|
| - web_view_->GetWidget(),
|
| - web_modal::WebContentsModalDialogManager::FromWebContents(
|
| - initiator_observer_->web_contents())->delegate()->
|
| - GetWebContentsModalDialogHost());
|
| + content::WebContents* top_level_web_contents =
|
| + constrained_window::GetTopLevelWebContents(
|
| + initiator_observer_->web_contents());
|
| + if (top_level_web_contents) {
|
| + constrained_window::UpdateWebContentsModalDialogPosition(
|
| + web_view_->GetWidget(),
|
| + web_modal::WebContentsModalDialogManager::FromWebContents(
|
| + top_level_web_contents)
|
| + ->delegate()
|
| + ->GetWebContentsModalDialogHost());
|
| + }
|
| }
|
|
|
| private:
|
| @@ -238,8 +244,13 @@ class ConstrainedWebDialogDelegateViewViews
|
| }
|
| void DocumentOnLoadCompletedInMainFrame() override {
|
| if (!max_size_.IsEmpty() && initiator_observer_.web_contents()) {
|
| - constrained_window::ShowModalDialog(GetWidget()->GetNativeWindow(),
|
| - initiator_observer_.web_contents());
|
| + content::WebContents* top_level_web_contents =
|
| + constrained_window::GetTopLevelWebContents(
|
| + initiator_observer_.web_contents());
|
| + if (top_level_web_contents) {
|
| + constrained_window::ShowModalDialog(GetWidget()->GetNativeWindow(),
|
| + top_level_web_contents);
|
| + }
|
| }
|
| }
|
|
|
| @@ -287,6 +298,12 @@ ConstrainedWebDialogDelegate* ShowConstrainedWebDialogWithAutoResize(
|
| new ConstrainedWebDialogDelegateViewViews(
|
| browser_context, delegate, web_contents,
|
| min_size, max_size);
|
| - constrained_window::CreateWebModalDialogViews(dialog, web_contents);
|
| +
|
| + // For embedded WebContents, use the embedder's WebContents for constrained
|
| + // window.
|
| + content::WebContents* top_level_web_contents =
|
| + constrained_window::GetTopLevelWebContents(web_contents);
|
| + DCHECK(top_level_web_contents);
|
| + constrained_window::CreateWebModalDialogViews(dialog, top_level_web_contents);
|
| return dialog;
|
| }
|
|
|