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