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 542d2d24345c1c4ffc52463fd10fccf60204dcac..799ae5b6eaeabda1ad975f3d727ace9ef410309f 100644 |
--- a/chrome/browser/printing/print_preview_dialog_controller.cc |
+++ b/chrome/browser/printing/print_preview_dialog_controller.cc |
@@ -27,6 +27,7 @@ |
#include "chrome/common/chrome_content_client.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/url_constants.h" |
+#include "components/web_modal/web_contents_modal_dialog_host.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_details.h" |
#include "content/public/browser/navigation_entry.h" |
@@ -124,19 +125,22 @@ void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const { |
DCHECK(size); |
const gfx::Size kMinDialogSize(800, 480); |
const int kBorder = 25; |
- const int kConstrainedWindowOverlap = 3; |
- gfx::Rect rect; |
- initiator_->GetView()->GetContainerBounds(&rect); |
- size->set_width(std::max(rect.width(), kMinDialogSize.width()) - 2 * kBorder); |
- size->set_height(std::max(rect.height(), kMinDialogSize.height()) - kBorder + |
- kConstrainedWindowOverlap); |
+ *size = kMinDialogSize; |
+ |
+ Browser* browser = chrome::FindBrowserWithWebContents(initiator_); |
+ if (browser) { |
+ web_modal::WebContentsModalDialogHost* host = |
+ browser->window()->GetWebContentsModalDialogHost(); |
+ if (host) |
+ size->SetToMax(host->GetMaximumDialogSize()); |
+ } |
+ size->Enlarge(-2 * kBorder, -kBorder); |
#if defined(OS_MACOSX) |
// Limit the maximum size on MacOS X. |
// http://crbug.com/105815 |
const gfx::Size kMaxDialogSize(1000, 660); |
- size->set_width(std::min(size->width(), kMaxDialogSize.width())); |
- size->set_height(std::min(size->height(), kMaxDialogSize.height())); |
+ size->SetToMin(kMaxDialogSize); |
#endif |
} |