diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm')
-rw-r--r-- | chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm | 154 |
1 files changed, 17 insertions, 137 deletions
diff --git a/chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm b/chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm index bd517bc..220299f 100644 --- a/chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm +++ b/chrome/browser/ui/cocoa/constrained_web_dialog_delegate_mac.mm @@ -10,10 +10,7 @@ #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_window.h" #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h" #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_web_dialog_sheet.h" -#include "chrome/browser/ui/webui/chrome_web_contents_handler.h" -#include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" -#include "content/public/browser/web_contents_observer.h" #include "ui/gfx/geometry/size.h" #include "ui/web_dialogs/web_dialog_delegate.h" #include "ui/web_dialogs/web_dialog_ui.h" @@ -25,61 +22,19 @@ using ui::WebDialogWebContentsDelegate; namespace { -class ConstrainedWebDialogDelegateMac; - -// This class is to trigger a resize to the dialog window when -// ResizeDueToAutoResize() is invoked. -class WebDialogWebContentsDelegateMac - : public ui::WebDialogWebContentsDelegate { - public: - WebDialogWebContentsDelegateMac(content::BrowserContext* browser_context, - content::WebContentsObserver* observer, - ConstrainedWebDialogDelegateBase* delegate) - : ui::WebDialogWebContentsDelegate(browser_context, - new ChromeWebContentsHandler()), - observer_(observer), - delegate_(delegate) { - } - ~WebDialogWebContentsDelegateMac() override {} - - void ResizeDueToAutoResize(content::WebContents* source, - const gfx::Size& preferred_size) override { - if (!observer_->web_contents()) - return; - delegate_->ResizeToGivenSize(preferred_size); - } - - private: - // These members must outlive the instance. - content::WebContentsObserver* const observer_; - ConstrainedWebDialogDelegateBase* delegate_; - - DISALLOW_COPY_AND_ASSIGN(WebDialogWebContentsDelegateMac); -}; - class ConstrainedWebDialogDelegateMac : public ConstrainedWebDialogDelegateBase { public: ConstrainedWebDialogDelegateMac( content::BrowserContext* browser_context, - WebDialogDelegate* delegate, - content::WebContentsObserver* observer) - : ConstrainedWebDialogDelegateBase(browser_context, delegate, - new WebDialogWebContentsDelegateMac(browser_context, observer, - this)) {} + WebDialogDelegate* delegate) + : ConstrainedWebDialogDelegateBase(browser_context, delegate, NULL) {} // WebDialogWebContentsDelegate interface. void CloseContents(WebContents* source) override { window_->CloseWebContentsModalDialog(); } - // ConstrainedWebDialogDelegateBase: - void ResizeToGivenSize(const gfx::Size size) override { - NSSize updated_preferred_size = NSMakeSize(size.width(), - size.height()); - [window_->sheet() resizeWithNewSize:updated_preferred_size]; - } - void set_window(ConstrainedWindowMac* window) { window_ = window; } ConstrainedWindowMac* window() const { return window_; } @@ -94,16 +49,13 @@ class ConstrainedWebDialogDelegateMac class ConstrainedWebDialogDelegateViewMac : public ConstrainedWindowMacDelegate, - public ConstrainedWebDialogDelegate, - public content::WebContentsObserver { + public ConstrainedWebDialogDelegate { public: ConstrainedWebDialogDelegateViewMac( content::BrowserContext* browser_context, WebDialogDelegate* delegate, - content::WebContents* web_contents, - const gfx::Size& min_size, - const gfx::Size& max_size); + content::WebContents* web_contents); ~ConstrainedWebDialogDelegateViewMac() override {} // ConstrainedWebDialogDelegate interface @@ -122,37 +74,16 @@ class ConstrainedWebDialogDelegateViewMac : gfx::NativeWindow GetNativeDialog() override { return window_; } WebContents* GetWebContents() override { return impl_->GetWebContents(); } gfx::Size GetMinimumSize() const override { - return min_size_; + NOTIMPLEMENTED(); + return gfx::Size(); } gfx::Size GetMaximumSize() const override { - return max_size_; + NOTIMPLEMENTED(); + return gfx::Size(); } gfx::Size GetPreferredSize() const override { - gfx::Size size; - if (!impl_->closed_via_webui()) { - NSRect frame = [window_ frame]; - size = gfx::Size(frame.size.width, frame.size.height); - } - return size; - } - - // content::WebContentsObserver: - void RenderViewCreated(content::RenderViewHost* render_view_host) override { - if (IsDialogAutoResizable()) - EnableAutoResize(); - } - void RenderViewHostChanged(content::RenderViewHost* old_host, - content::RenderViewHost* new_host) override { - if (IsDialogAutoResizable()) - EnableAutoResize(); - } - void DocumentOnLoadCompletedInMainFrame() override { - if (!IsDialogAutoResizable()) - return; - - EnableAutoResize(); - if (GetWebContents()) - constrained_window_->ShowWebContentsModalDialog(); + NOTIMPLEMENTED(); + return gfx::Size(); } // ConstrainedWindowMacDelegate interface @@ -163,53 +94,25 @@ class ConstrainedWebDialogDelegateViewMac : } private: - void EnableAutoResize() { - if (!GetWebContents()) - return; - - content::RenderViewHost* render_view_host = - GetWebContents()->GetRenderViewHost(); - render_view_host->EnableAutoResize(min_size_, max_size_); - } - - // Whether or not the dialog is autoresizable is determined based on whether - // |max_size_| was specified. - bool IsDialogAutoResizable() { - return !max_size_.IsEmpty(); - } - scoped_ptr<ConstrainedWebDialogDelegateMac> impl_; scoped_ptr<ConstrainedWindowMac> constrained_window_; base::scoped_nsobject<NSWindow> window_; - // Minimum and maximum sizes to determine dialog bounds for auto-resizing. - const gfx::Size min_size_; - const gfx::Size max_size_; - DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateViewMac); }; ConstrainedWebDialogDelegateViewMac::ConstrainedWebDialogDelegateViewMac( content::BrowserContext* browser_context, WebDialogDelegate* delegate, - content::WebContents* web_contents, - const gfx::Size& min_size, - const gfx::Size& max_size) - : content::WebContentsObserver(web_contents), - impl_(new ConstrainedWebDialogDelegateMac(browser_context, delegate, - this)), - min_size_(min_size), - max_size_(max_size) { - if (IsDialogAutoResizable()) - Observe(GetWebContents()); - + content::WebContents* web_contents) + : impl_(new ConstrainedWebDialogDelegateMac(browser_context, delegate)) { // Create a window to hold web_contents in the constrained sheet: gfx::Size size; delegate->GetDialogSize(&size); NSRect frame = NSMakeRect(0, 0, size.width(), size.height()); - window_.reset([[ConstrainedWindowCustomWindow alloc] - initWithContentRect:frame]); + window_.reset( + [[ConstrainedWindowCustomWindow alloc] initWithContentRect:frame]); [GetWebContents()->GetNativeView() setFrame:frame]; [GetWebContents()->GetNativeView() setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; @@ -218,14 +121,8 @@ ConstrainedWebDialogDelegateViewMac::ConstrainedWebDialogDelegateViewMac( base::scoped_nsobject<WebDialogConstrainedWindowSheet> sheet( [[WebDialogConstrainedWindowSheet alloc] initWithCustomWindow:window_ webDialogDelegate:delegate]); - - if (IsDialogAutoResizable()) { - constrained_window_.reset(CreateWebModalDialogMac( - this, web_contents, sheet)); - } else { - constrained_window_.reset(CreateAndShowWebModalDialogMac( - this, web_contents, sheet)); - } + constrained_window_.reset(new ConstrainedWindowMac( + this, web_contents, sheet)); impl_->set_window(constrained_window_.get()); } @@ -237,23 +134,6 @@ ConstrainedWebDialogDelegate* ShowConstrainedWebDialog( // Deleted when the dialog closes. ConstrainedWebDialogDelegateViewMac* constrained_delegate = new ConstrainedWebDialogDelegateViewMac( - browser_context, delegate, web_contents, - gfx::Size(), gfx::Size()); - return constrained_delegate; -} - -ConstrainedWebDialogDelegate* ShowConstrainedWebDialogWithAutoResize( - content::BrowserContext* browser_context, - WebDialogDelegate* delegate, - content::WebContents* web_contents, - const gfx::Size& min_size, - const gfx::Size& max_size) { - DCHECK(!min_size.IsEmpty()); - DCHECK(!max_size.IsEmpty()); - // Deleted when the dialog closes. - ConstrainedWebDialogDelegateViewMac* constrained_delegate = - new ConstrainedWebDialogDelegateViewMac( - browser_context, delegate, web_contents, - min_size, max_size); + browser_context, delegate, web_contents); return constrained_delegate; } |