| 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 780928be53474d99790f012a18a42736c78587d5..2e7dcaf22ef9bce68e39986ee9ba32b7940c2e52 100644
|
| --- a/chrome/browser/printing/print_preview_dialog_controller.cc
|
| +++ b/chrome/browser/printing/print_preview_dialog_controller.cc
|
| @@ -77,9 +77,11 @@ PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() {
|
| }
|
|
|
| ui::ModalType PrintPreviewDialogDelegate::GetDialogModalType() const {
|
| - // Not used, returning dummy value.
|
| - NOTREACHED();
|
| +#if defined(USE_AURA)
|
| return ui::MODAL_TYPE_WINDOW;
|
| +#else
|
| + return ui::MODAL_TYPE_CHILD;
|
| +#endif
|
| }
|
|
|
| base::string16 PrintPreviewDialogDelegate::GetDialogTitle() const {
|
| @@ -98,8 +100,15 @@ void PrintPreviewDialogDelegate::GetWebUIMessageHandlers(
|
|
|
| void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const {
|
| DCHECK(size);
|
| - const gfx::Size kMinDialogSize(800, 480);
|
| const int kBorder = 25;
|
| +// Gives ChromeOS dialogs the requested minimum size of 438x455 without
|
| +// changing the existing behavior on Mac OSX. For all other platforms, the min
|
| +// size is later overridden by the size of the parent window.
|
| +#if defined(OS_MACOSX)
|
| + const gfx::Size kMinDialogSize(800, 480);
|
| +#else
|
| + const gfx::Size kMinDialogSize(438, 455);
|
| +#endif
|
| *size = kMinDialogSize;
|
|
|
| web_modal::WebContentsModalDialogHost* host = nullptr;
|
| @@ -113,7 +122,15 @@ void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const {
|
| size->SetToMax(host->GetMaximumDialogSize());
|
| else
|
| size->SetToMax(outermost_web_contents->GetContainerBounds().size());
|
| +#if defined(OS_MACOSX)
|
| size->Enlarge(-2 * kBorder, -kBorder);
|
| +#else
|
| + int shrink_width =
|
| + std::max(kMinDialogSize.width() - size->width(), -2 * kBorder);
|
| + int shrink_height =
|
| + std::max(kMinDialogSize.height() - size->height(), -kBorder);
|
| + size->Enlarge(shrink_width, shrink_height);
|
| +#endif
|
|
|
| #if defined(OS_MACOSX)
|
| // Limit the maximum size on MacOS X.
|
| @@ -144,6 +161,11 @@ bool PrintPreviewDialogDelegate::ShouldShowDialogTitle() const {
|
|
|
| namespace printing {
|
|
|
| +ui::WebDialogDelegate * GetPrintPreviewDialogDelegate(
|
| + content::WebContents * initiator) {
|
| + return new PrintPreviewDialogDelegate(initiator);
|
| +}
|
| +
|
| PrintPreviewDialogController::PrintPreviewDialogController()
|
| : waiting_for_new_preview_page_(false),
|
| is_creating_print_preview_dialog_(false) {
|
| @@ -362,15 +384,20 @@ void PrintPreviewDialogController::OnNavEntryCommitted(
|
| RemoveInitiator(contents);
|
| }
|
|
|
| +ConstrainedWebDialogDelegate* PrintPreviewDialogController::
|
| + GetWebDialogDelegate(WebContents* initiator) {
|
| + return ShowConstrainedWebDialog(
|
| + initiator->GetBrowserContext(),
|
| + new PrintPreviewDialogDelegate(initiator), initiator);
|
| +}
|
| +
|
| WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
|
| WebContents* initiator) {
|
| base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true);
|
|
|
| // The dialog delegates are deleted when the dialog is closed.
|
| ConstrainedWebDialogDelegate* web_dialog_delegate =
|
| - ShowConstrainedWebDialog(initiator->GetBrowserContext(),
|
| - new PrintPreviewDialogDelegate(initiator),
|
| - initiator);
|
| + GetWebDialogDelegate(initiator);
|
|
|
| WebContents* preview_dialog = web_dialog_delegate->GetWebContents();
|
|
|
|
|