1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/web_modal/web_contents_modal_dialog_manager.h"
7 #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h"
8 #include "components/web_modal/single_web_contents_dialog_manager.h"
10 using web_modal::NativeWebContentsModalDialog;
14 class NativeWebContentsModalDialogManagerCocoa
15 : public web_modal::SingleWebContentsDialogManager {
17 NativeWebContentsModalDialogManagerCocoa(
18 NativeWebContentsModalDialog dialog)
22 ~NativeWebContentsModalDialogManagerCocoa() override {}
24 // SingleWebContentsDialogManager overrides
25 void Show() override {
26 GetConstrainedWindowMac(dialog())->ShowWebContentsModalDialog();
29 void Hide() override {}
31 void Close() override {
32 GetConstrainedWindowMac(dialog())->CloseWebContentsModalDialog();
35 void Focus() override {
36 GetConstrainedWindowMac(dialog())->FocusWebContentsModalDialog();
39 void Pulse() override {
40 GetConstrainedWindowMac(dialog())->PulseWebContentsModalDialog();
43 void HostChanged(web_modal::WebContentsModalDialogHost* new_host) override {}
45 NativeWebContentsModalDialog dialog() override { return dialog_; }
48 static ConstrainedWindowMac* GetConstrainedWindowMac(
49 NativeWebContentsModalDialog dialog) {
50 return static_cast<ConstrainedWindowMac*>(dialog);
53 // In mac this is a pointer to a ConstrainedWindowMac.
54 // TODO(gbillock): Replace this casting system with a more typesafe call path.
55 NativeWebContentsModalDialog dialog_;
57 DISALLOW_COPY_AND_ASSIGN(NativeWebContentsModalDialogManagerCocoa);
64 SingleWebContentsDialogManager*
65 WebContentsModalDialogManager::CreateNativeWebModalManager(
66 NativeWebContentsModalDialog dialog,
67 SingleWebContentsDialogManagerDelegate* native_delegate) {
68 return new NativeWebContentsModalDialogManagerCocoa(dialog);
71 } // namespace web_modal