constrained_window_mac.h revision a36e5920737c6adbddd3e43b760e5de8431db6e0
1// Copyright (c) 2012 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.
4
5#ifndef CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_
6#define CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_
7
8#import <Cocoa/Cocoa.h>
9
10#include "base/mac/scoped_nsobject.h"
11#include "components/web_modal/native_web_contents_modal_dialog.h"
12
13namespace content {
14class WebContents;
15}
16class ConstrainedWindowMac;
17@protocol ConstrainedWindowSheet;
18
19// A delegate for a constrained window. The delegate is notified when the
20// window closes.
21class ConstrainedWindowMacDelegate {
22 public:
23  virtual void OnConstrainedWindowClosed(ConstrainedWindowMac* window) = 0;
24};
25
26// Constrained window implementation for Mac.
27// Normally an instance of this class is owned by the delegate. The delegate
28// should delete the instance when the window is closed.
29class ConstrainedWindowMac {
30 public:
31  ConstrainedWindowMac(
32      ConstrainedWindowMacDelegate* delegate,
33      content::WebContents* web_contents,
34      id<ConstrainedWindowSheet> sheet);
35  virtual ~ConstrainedWindowMac();
36
37  void ShowWebContentsModalDialog();
38  // Closes the constrained window and deletes this instance.
39  void CloseWebContentsModalDialog();
40  void FocusWebContentsModalDialog();
41  void PulseWebContentsModalDialog();
42  web_modal::NativeWebContentsModalDialog GetNativeDialog();
43
44 private:
45  // Gets the parent window of the dialog.
46  NSWindow* GetParentWindow() const;
47
48  ConstrainedWindowMacDelegate* delegate_;  // weak, owns us.
49
50  // The WebContents that owns and constrains this ConstrainedWindowMac. Weak.
51  content::WebContents* web_contents_;
52
53  base::scoped_nsprotocol<id<ConstrainedWindowSheet>> sheet_;
54
55  // This is true if the constrained window has been shown.
56  bool shown_;
57};
58
59#endif  // CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_
60