1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_HTML_DIALOG_WINDOW_CONTROLLER_H_ 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_HTML_DIALOG_WINDOW_CONTROLLER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#import <Cocoa/Cocoa.h> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/html_dialog_ui.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass HtmlDialogWindowDelegateBridge; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile; 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TabContents; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This controller manages a dialog box with properties and HTML content taken 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// from a HTMLDialogUIDelegate object. 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@interface HtmlDialogWindowController : NSWindowController { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch @private 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Order here is important, as tab_contents_ may send messages to 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // delegate_ when it gets destroyed. 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<HtmlDialogWindowDelegateBridge> delegate_; 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<TabContents> tabContents_; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Creates and shows an HtmlDialogWindowController with the given 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// delegate and profile. The window is automatically destroyed when 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// it is closed. Returns the created window. 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Make sure to use the returned window only when you know it is safe 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// to do so, i.e. before OnDialogClosed() is called on the delegate. 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch+ (NSWindow*)showHtmlDialog:(HtmlDialogUIDelegate*)delegate 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile:(Profile*)profile; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@end 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@interface HtmlDialogWindowController (TestingAPI) 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This is the designated initializer. However, this is exposed only 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// for testing; use showHtmlDialog instead. 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (id)initWithDelegate:(HtmlDialogUIDelegate*)delegate 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile:(Profile*)profile; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Loads the HTML content from the delegate; this is not a lightweight 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// process which is why it is not part of the constructor. Must be 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// called before showWindow. 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (void)loadDialogContents; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@end 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif // CHROME_BROWSER_UI_COCOA_HTML_DIALOG_WINDOW_CONTROLLER_H_ 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56