// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_ #define CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_ #import namespace content { class WebContents; } class ConstrainedWindowMac; class SingleWebContentsDialogManagerCocoa; @protocol ConstrainedWindowSheet; // A delegate for a constrained window. The delegate is notified when the // window closes. class ConstrainedWindowMacDelegate { public: virtual void OnConstrainedWindowClosed(ConstrainedWindowMac* window) = 0; }; // Constrained window implementation for Mac. // Normally an instance of this class is owned by the delegate. The delegate // should delete the instance when the window is closed. class ConstrainedWindowMac { public: ConstrainedWindowMac(ConstrainedWindowMacDelegate* delegate, content::WebContents* web_contents, id sheet); ~ConstrainedWindowMac(); // Closes the constrained window. void CloseWebContentsModalDialog(); SingleWebContentsDialogManagerCocoa* manager() const { return manager_; } void set_manager(SingleWebContentsDialogManagerCocoa* manager) { manager_ = manager; } // Called by |manager_| when the dialog is closing. void OnDialogClosing(); private: ConstrainedWindowMacDelegate* delegate_; // weak, owns us. SingleWebContentsDialogManagerCocoa* manager_; // weak, owned by WCMDM. }; #endif // CHROME_BROWSER_UI_COCOA_CONSTRAINED_WINDOW_CONSTRAINED_WINDOW_MAC_