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

Unified Diff: chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm

Issue 866263008: MacViews: Unify web contents modal dialog types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ValidationMessageBubble
Patch Set: Fix test crashes Created 5 years, 11 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/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..f132e5647ffea0e6a2bcaf8d7dc6654d46235946 100644
--- a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm
+++ b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm
@@ -19,6 +19,52 @@
using web_modal::WebContentsModalDialogManager;
using web_modal::NativeWebContentsModalDialog;
+namespace {
+
+class NativeWebContentsModalDialogManagerCocoa
+ : public web_modal::SingleWebContentsDialogManager {
+ public:
+ NativeWebContentsModalDialogManagerCocoa(
+ ConstrainedWindowMac* owner)
+ : owner_(owner) {
+ DCHECK(owner);
+ }
+
+ ~NativeWebContentsModalDialogManagerCocoa() override {}
+
+ // SingleWebContentsDialogManager overrides
+ void Show() override {
+ owner_->ShowWebContentsModalDialog();
+ }
+
+ void Hide() override {}
+
+ void Close() override {
+ owner_->CloseWebContentsModalDialog();
+ }
+
+ void Focus() override {
+ owner_->FocusWebContentsModalDialog();
+ }
+
+ void Pulse() override {
+ owner_->PulseWebContentsModalDialog();
+ }
+
+ void HostChanged(web_modal::WebContentsModalDialogHost* new_host) override {}
+
+ NativeWebContentsModalDialog dialog() override {
+ return owner_->GetNativeDialog();
+ }
+
+ private:
+ ConstrainedWindowMac* owner_; // Weak. Owns this.
+
+ DISALLOW_COPY_AND_ASSIGN(NativeWebContentsModalDialogManagerCocoa);
+};
+
+} // namespace
+
ConstrainedWindowMac::ConstrainedWindowMac(
ConstrainedWindowMacDelegate* delegate,
content::WebContents* web_contents,
@@ -35,10 +81,13 @@ ConstrainedWindowMac::ConstrainedWindowMac(
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_);
+ WebContentsModalDialogManager* wm_manager =
+ WebContentsModalDialogManager::FromWebContents(web_contents);
+ if (wm_manager) {
+ scoped_ptr<NativeWebContentsModalDialogManagerCocoa> manager(
+ new NativeWebContentsModalDialogManagerCocoa(this));
+ wm_manager->ShowDialogWithManager(GetNativeDialog(), manager.Pass());
+ }
}
ConstrainedWindowMac::~ConstrainedWindowMac() {
@@ -68,12 +117,12 @@ void ConstrainedWindowMac::CloseWebContentsModalDialog() {
WebContentsModalDialogManager* web_contents_modal_dialog_manager =
WebContentsModalDialogManager::FromWebContents(web_contents_);
- // Will result in the delegate being deleted.
- if (delegate_)
- delegate_->OnConstrainedWindowClosed(this);
+ // Will cause our NativeWebContentsModalDialogManagerCocoa to be deleted.
+ web_contents_modal_dialog_manager->WillClose(GetNativeDialog());
// Will cause this object to be deleted.
- web_contents_modal_dialog_manager->WillClose(this);
+ if (delegate_)
+ delegate_->OnConstrainedWindowClosed(this);
}
void ConstrainedWindowMac::FocusWebContentsModalDialog() {
@@ -88,5 +137,5 @@ NativeWebContentsModalDialog ConstrainedWindowMac::GetNativeDialog() {
// TODO(wittman): Ultimately this should be changed to the
// ConstrainedWindowSheet pointer, in conjunction with the corresponding
// changes to NativeWebContentsModalDialogManagerCocoa.
- return this;
+ return [sheet_ sheetWindow];
}

Powered by Google App Engine
This is Rietveld 408576698