Index: chrome/browser/printing/print_preview_dialog_controller.cc |
diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc |
index 9026d0e3d04adf1a4db4e6467c07882645beb123..1f5afab214180bb44c010b454da8c862eeb0c887 100644 |
--- a/chrome/browser/printing/print_preview_dialog_controller.cc |
+++ b/chrome/browser/printing/print_preview_dialog_controller.cc |
@@ -40,6 +40,7 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_delegate.h" |
#include "content/public/common/webplugininfo.h" |
+#include "extensions/browser/guest_view/guest_view_base.h" |
#include "ui/web_dialogs/web_dialog_delegate.h" |
using content::NavigationController; |
@@ -122,7 +123,15 @@ void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const { |
*size = kMinDialogSize; |
web_modal::WebContentsModalDialogHost* host = NULL; |
- Browser* browser = chrome::FindBrowserWithWebContents(initiator_); |
+ content::WebContents* outermost_web_contents = initiator_; |
+ const extensions::GuestViewBase* guest_view = |
+ extensions::GuestViewBase::FromWebContents(outermost_web_contents); |
+ while (guest_view && guest_view->attached()) { |
+ outermost_web_contents = guest_view->embedder_web_contents(); |
+ guest_view = |
+ extensions::GuestViewBase::FromWebContents(outermost_web_contents); |
+ } |
+ Browser* browser = chrome::FindBrowserWithWebContents(outermost_web_contents); |
if (browser) |
host = browser->window()->GetWebContentsModalDialogHost(); |
@@ -130,7 +139,7 @@ void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const { |
size->SetToMax(host->GetMaximumDialogSize()); |
size->Enlarge(-2 * kBorder, -kBorder); |
} else { |
- size->SetToMax(initiator_->GetContainerBounds().size()); |
+ size->SetToMax(outermost_web_contents->GetContainerBounds().size()); |
size->Enlarge(-2 * kBorder, -2 * kBorder); |
} |