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

Unified Diff: chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm

Issue 866263008: MacViews: Unify web contents modal dialog types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ValidationMessageBubble
Patch Set: Another idea Created 5 years, 10 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/web_contents_modal_dialog_manager_cocoa.mm
diff --git a/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm b/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm
index 5d025f6c8f6e5d865c7591cc6d5070712107f76d..22e12543a832ae36f9b32525eae8ebb1b4baaef8 100644
--- a/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm
+++ b/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm
@@ -4,10 +4,12 @@
#include "components/web_modal/web_contents_modal_dialog_manager.h"
+#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h"
#include "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h"
#include "components/web_modal/single_web_contents_dialog_manager.h"
using web_modal::NativeWebContentsModalDialog;
+using web_modal::SingleWebContentsDialogManagerDelegate;
namespace {
@@ -15,29 +17,35 @@ class NativeWebContentsModalDialogManagerCocoa
: public web_modal::SingleWebContentsDialogManager {
public:
NativeWebContentsModalDialogManagerCocoa(
- NativeWebContentsModalDialog dialog)
- : dialog_(dialog) {
+ NativeWebContentsModalDialog dialog,
+ SingleWebContentsDialogManagerDelegate* native_delegate)
+ : native_delegate_(native_delegate),
+ dialog_(dialog),
+ sheet_([[CustomConstrainedWindowSheet alloc]
+ initWithCustomWindow:dialog]) {}
+
+ ~NativeWebContentsModalDialogManagerCocoa() override {
+ Close();
}
- ~NativeWebContentsModalDialogManagerCocoa() override {}
-
- // SingleWebContentsDialogManager overrides
+ // SingleWebContentsDialogManager overrides.
void Show() override {
- GetConstrainedWindowMac(dialog())->ShowWebContentsModalDialog();
+ window_.reset(new ConstrainedWindowMac(
Mike Wittman 2015/02/25 20:40:53 I think this preserves the existing creation/show/
+ nullptr, native_delegate_->GetWebContents(), sheet_));
}
void Hide() override {}
void Close() override {
- GetConstrainedWindowMac(dialog())->CloseWebContentsModalDialog();
+ window_->CloseWebContentsModalDialog();
Mike Wittman 2015/02/25 20:40:53 Add null check. window_ can be null here if the di
}
void Focus() override {
- GetConstrainedWindowMac(dialog())->FocusWebContentsModalDialog();
+ window_->FocusWebContentsModalDialog();
Mike Wittman 2015/02/25 20:40:53 DCHECK(window_.get()) This shouldn't get called u
}
void Pulse() override {
- GetConstrainedWindowMac(dialog())->PulseWebContentsModalDialog();
+ window_->PulseWebContentsModalDialog();
Mike Wittman 2015/02/25 20:40:53 Ditto.
}
void HostChanged(web_modal::WebContentsModalDialogHost* new_host) override {}
@@ -45,14 +53,10 @@ class NativeWebContentsModalDialogManagerCocoa
NativeWebContentsModalDialog dialog() override { return dialog_; }
private:
- static ConstrainedWindowMac* GetConstrainedWindowMac(
- NativeWebContentsModalDialog dialog) {
- return static_cast<ConstrainedWindowMac*>(dialog);
- }
-
- // In mac this is a pointer to a ConstrainedWindowMac.
- // TODO(gbillock): Replace this casting system with a more typesafe call path.
+ SingleWebContentsDialogManagerDelegate* native_delegate_;
tapted 2015/02/25 06:23:28 Lifetime comment?
NativeWebContentsModalDialog dialog_;
+ base::scoped_nsobject<CustomConstrainedWindowSheet> sheet_;
+ scoped_ptr<ConstrainedWindowMac> window_;
DISALLOW_COPY_AND_ASSIGN(NativeWebContentsModalDialogManagerCocoa);
};
@@ -65,7 +69,7 @@ SingleWebContentsDialogManager*
WebContentsModalDialogManager::CreateNativeWebModalManager(
NativeWebContentsModalDialog dialog,
SingleWebContentsDialogManagerDelegate* native_delegate) {
- return new NativeWebContentsModalDialogManagerCocoa(dialog);
+ return new NativeWebContentsModalDialogManagerCocoa(dialog, native_delegate);
}
} // namespace web_modal

Powered by Google App Engine
This is Rietveld 408576698