Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(517)

Unified Diff: chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc

Issue 2172363002: Created min size for print preview dialog and modified to allow the Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Track independent bounds as native window property not member of widget class Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 de8ef012e172b6ff4c8387c266011bfab0f08ab4..f822bd7fa82c48ef1d834bbae21f014bfce6d319 100644
--- a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
+++ b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
@@ -23,6 +23,10 @@
#include "ui/web_dialogs/web_dialog_delegate.h"
#include "ui/web_dialogs/web_dialog_ui.h"
+#if defined(OS_WIN)
+#include "ui/base/win/shell.h"
+#endif
+
namespace {
// WebContentsObserver that tracks the lifetime of the WebContents to avoid
@@ -144,14 +148,16 @@ class ConstrainedWebDialogDelegateViewViews
ui::WebDialogDelegate* delegate,
content::WebContents* web_contents,
const gfx::Size& min_size,
- const gfx::Size& max_size)
+ const gfx::Size& max_size,
+ bool independent_bounds)
: views::WebView(browser_context),
initiator_observer_(web_contents),
impl_(new ConstrainedWebDialogDelegateViews(browser_context, delegate,
&initiator_observer_,
this)),
min_size_(min_size),
- max_size_(max_size) {
+ max_size_(max_size),
+ independent_bounds_(independent_bounds){
SetWebContents(GetWebContents());
AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
if (!max_size_.IsEmpty())
@@ -227,6 +233,9 @@ class ConstrainedWebDialogDelegateViewViews
gfx::Size GetMaximumSize() const override {
return !max_size_.IsEmpty() ? max_size_ : WebView::GetMaximumSize();
}
+ bool * GetIndependentBounds() {
+ return &independent_bounds_;
+ }
void RenderViewCreated(content::RenderViewHost* render_view_host) override {
if (!max_size_.IsEmpty())
EnableAutoResize();
@@ -240,7 +249,9 @@ class ConstrainedWebDialogDelegateViewViews
if (!max_size_.IsEmpty() && initiator_observer_.web_contents()) {
web_modal::WebContentsModalDialogManager::FromWebContents(
initiator_observer_.web_contents())
- ->ShowModalDialog(GetWidget()->GetNativeWindow());
+ ->ShowModalDialog(GetWidget()->GetNativeWindow(),
+ GetIndependentBounds(),
+ constrained_window::kHasIndependentBoundsKey);
}
}
@@ -258,6 +269,7 @@ class ConstrainedWebDialogDelegateViewViews
// Minimum and maximum sizes to determine dialog bounds for auto-resizing.
const gfx::Size min_size_;
const gfx::Size max_size_;
+ bool independent_bounds_;
DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateViewViews);
};
@@ -271,11 +283,32 @@ ConstrainedWebDialogDelegate* ShowConstrainedWebDialog(
ConstrainedWebDialogDelegateViewViews* dialog =
new ConstrainedWebDialogDelegateViewViews(
browser_context, delegate, web_contents,
- gfx::Size(), gfx::Size());
+ gfx::Size(), gfx::Size(), false);
constrained_window::ShowWebModalDialogViews(dialog, web_contents);
return dialog;
}
+ConstrainedWebDialogDelegate* ShowTopLevelConstrainedWebDialog(
+ content::BrowserContext* browser_context,
+ ui::WebDialogDelegate* delegate,
+ content::WebContents* web_contents) {
+// This doesn't work on Linux desktop or windows classic themes.
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ return ShowConstrainedWebDialog(browser_context, delegate, web_contents);
+#elif defined(OS_WIN)
+ if (!ui::win::IsAeroGlassEnabled())
+ return ShowConstrainedWebDialog(browser_context, delegate, web_contents);
+#endif
+
+ ConstrainedWebDialogDelegateViewViews* dialog =
+ new ConstrainedWebDialogDelegateViewViews(
+ browser_context, delegate, web_contents,
+ gfx::Size(), gfx::Size(), true);
+ constrained_window::ShowWebModalDialogWithIndBoundsViews(dialog,
+ web_contents, dialog->GetIndependentBounds());
+ return dialog;
+}
+
ConstrainedWebDialogDelegate* ShowConstrainedWebDialogWithAutoResize(
content::BrowserContext* browser_context,
ui::WebDialogDelegate* delegate,
@@ -287,7 +320,7 @@ ConstrainedWebDialogDelegate* ShowConstrainedWebDialogWithAutoResize(
ConstrainedWebDialogDelegateViewViews* dialog =
new ConstrainedWebDialogDelegateViewViews(
browser_context, delegate, web_contents,
- min_size, max_size);
+ min_size, max_size, false);
constrained_window::CreateWebModalDialogViews(dialog, web_contents);
return dialog;
}

Powered by Google App Engine
This is Rietveld 408576698