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 f043fad5a0c019634695a187d725aec839d59d58..60f3eff703678a98464cf276b56bab93dcba2b93 100644 |
--- a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
+++ b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
@@ -9,16 +9,37 @@ |
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet.h" |
#import "chrome/browser/ui/cocoa/single_web_contents_dialog_manager_cocoa.h" |
#include "components/guest_view/browser/guest_view_base.h" |
-#include "components/web_modal/web_contents_modal_dialog_manager.h" |
#include "content/public/browser/browser_thread.h" |
using web_modal::WebContentsModalDialogManager; |
+ConstrainedWindowMac* ShowWebModalDialogMac( |
+ ConstrainedWindowMacDelegate* delegate, |
+ content::WebContents* web_contents, |
+ id<ConstrainedWindowSheet> sheet) { |
+ ConstrainedWindowMac* window = new ConstrainedWindowMac(delegate); |
+ window->ShowDialog(web_contents, sheet); |
+ return window; |
+} |
+ |
+ConstrainedWindowMac* CreateWebModalDialogMac( |
+ ConstrainedWindowMacDelegate* delegate, |
+ content::WebContents* web_contents, |
+ id<ConstrainedWindowSheet> sheet) { |
+ return new ConstrainedWindowMac(delegate, web_contents, sheet); |
+} |
+ |
+ConstrainedWindowMac::ConstrainedWindowMac( |
+ ConstrainedWindowMacDelegate* delegate) |
+ : delegate_(delegate) { |
+} |
+ |
ConstrainedWindowMac::ConstrainedWindowMac( |
ConstrainedWindowMacDelegate* delegate, |
content::WebContents* web_contents, |
id<ConstrainedWindowSheet> sheet) |
- : delegate_(delegate) { |
+ : delegate_(delegate), |
+ sheet_(sheet) { |
DCHECK(sheet); |
// |web_contents| may be embedded within a chain of nested GuestViews. If it |
@@ -26,15 +47,34 @@ ConstrainedWindowMac::ConstrainedWindowMac( |
web_contents = |
guest_view::GuestViewBase::GetTopLevelWebContents(web_contents); |
+ dialog_manager_ = |
+ WebContentsModalDialogManager::FromWebContents(web_contents); |
+ native_manager_.reset( |
+ new SingleWebContentsDialogManagerCocoa(this, sheet_, dialog_manager_)); |
+} |
+ |
+ConstrainedWindowMac::~ConstrainedWindowMac() { |
+ CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
+ native_manager_.reset(); |
+ DCHECK(!manager_); |
+} |
+ |
+void ConstrainedWindowMac::ShowDialog( |
+ content::WebContents* web_contents, |
+ id<ConstrainedWindowSheet> sheet) { |
+ DCHECK(sheet); |
+ web_contents = |
+ guest_view::GuestViewBase::GetTopLevelWebContents(web_contents); |
+ |
auto manager = WebContentsModalDialogManager::FromWebContents(web_contents); |
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)); |
- DCHECK(!manager_); |
+void ConstrainedWindowMac::ShowDialog() { |
+ dialog_manager_->ShowDialogWithManager( |
+ [sheet_ sheetWindow], native_manager_.Pass()); |
} |
void ConstrainedWindowMac::CloseWebContentsModalDialog() { |