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