Chromium Code Reviews| Index: chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| diff --git a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| index 3c9dc5916e63b0fd7e4038649bdb239a165140a3..1da08e0e54dfdf0b1575f6d5192a90a1c7b00035 100644 |
| --- a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| +++ b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| @@ -4,89 +4,46 @@ |
| #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "base/logging.h" |
| -#include "chrome/browser/ui/browser_finder.h" |
| -#include "chrome/browser/ui/browser_window.h" |
| #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet.h" |
| -#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet_controller.h" |
| -#import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" |
| -#include "components/web_modal/popup_manager.h" |
| +#import "chrome/browser/ui/cocoa/single_web_contents_dialog_manager_cocoa.h" |
| #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/web_contents.h" |
| #include "extensions/browser/guest_view/guest_view_base.h" |
| using web_modal::WebContentsModalDialogManager; |
| -using web_modal::NativeWebContentsModalDialog; |
| ConstrainedWindowMac::ConstrainedWindowMac( |
| ConstrainedWindowMacDelegate* delegate, |
| content::WebContents* web_contents, |
| id<ConstrainedWindowSheet> sheet) |
| - : delegate_(delegate), |
| - web_contents_(NULL), |
| - sheet_([sheet retain]), |
| - shown_(false) { |
| - DCHECK(web_contents); |
| + : delegate_(delegate) { |
| + DCHECK(sheet); |
| extensions::GuestViewBase* guest_view = |
| extensions::GuestViewBase::FromWebContents(web_contents); |
| // For embedded WebContents, use the embedder's WebContents for constrained |
| // window. |
| - web_contents_ = guest_view && guest_view->embedder_web_contents() ? |
| - guest_view->embedder_web_contents() : web_contents; |
| - DCHECK(sheet_.get()); |
| - web_modal::PopupManager* popup_manager = |
| - web_modal::PopupManager::FromWebContents(web_contents_); |
| - if (popup_manager) |
| - popup_manager->ShowModalDialog(this, web_contents_); |
| + web_contents = guest_view && guest_view->embedder_web_contents() ? |
| + guest_view->embedder_web_contents() : web_contents; |
| + |
| + auto manager = WebContentsModalDialogManager::FromWebContents(web_contents); |
|
Robert Sesek
2015/03/02 22:15:27
Can |manager| be null?
Andre
2015/03/02 22:45:38
For these FromWebContents kinds, it seems like it'
Robert Sesek
2015/03/02 22:50:22
OK. The popup manager on the LHS was null-checked,
|
| + scoped_ptr<SingleWebContentsDialogManagerCocoa> native_manager( |
| + new SingleWebContentsDialogManagerCocoa(this, sheet, manager)); |
| + manager->ShowDialogWithManager([sheet sheetWindow], native_manager.Pass()); |
| } |
| ConstrainedWindowMac::~ConstrainedWindowMac() { |
| CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| -} |
| - |
| -void ConstrainedWindowMac::ShowWebContentsModalDialog() { |
| - if (shown_) |
| - return; |
| - |
| - NSWindow* parent_window = web_contents_->GetTopLevelNativeWindow(); |
| - NSView* parent_view = GetSheetParentViewForWebContents(web_contents_); |
| - if (!parent_window || !parent_view) |
| - return; |
| - |
| - shown_ = true; |
| - ConstrainedWindowSheetController* controller = |
| - [ConstrainedWindowSheetController |
| - controllerForParentWindow:parent_window]; |
| - [controller showSheet:sheet_ forParentView:parent_view]; |
| + DCHECK(!manager_); |
| } |
| void ConstrainedWindowMac::CloseWebContentsModalDialog() { |
| - [[ConstrainedWindowSheetController controllerForSheet:sheet_] |
| - closeSheet:sheet_]; |
| - // TODO(gbillock): get this object in config, not from a global. |
| - WebContentsModalDialogManager* web_contents_modal_dialog_manager = |
| - WebContentsModalDialogManager::FromWebContents(web_contents_); |
| + if (manager_) |
| + manager_->Close(); |
| +} |
| - // Will result in the delegate being deleted. |
| +void ConstrainedWindowMac::OnDialogClosing() { |
| if (delegate_) |
| delegate_->OnConstrainedWindowClosed(this); |
| - |
| - // Will cause this object to be deleted. |
| - web_contents_modal_dialog_manager->WillClose(this); |
| -} |
| - |
| -void ConstrainedWindowMac::FocusWebContentsModalDialog() { |
| -} |
| - |
| -void ConstrainedWindowMac::PulseWebContentsModalDialog() { |
| - [[ConstrainedWindowSheetController controllerForSheet:sheet_] |
| - pulseSheet:sheet_]; |
| -} |
| - |
| -NativeWebContentsModalDialog ConstrainedWindowMac::GetNativeDialog() { |
| - // TODO(wittman): Ultimately this should be changed to the |
| - // ConstrainedWindowSheet pointer, in conjunction with the corresponding |
| - // changes to NativeWebContentsModalDialogManagerCocoa. |
| - return this; |
| } |