blob: a17679f44a6ce2314762c96b1c994ec80677a029 [file] [log] [blame]
license.botbf09a502008-08-24 00:55:551// Copyright (c) 2006-2008 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.
initial.commit09911bf2008-07-26 23:55:294
[email protected]c633a492008-11-17 21:32:425#ifndef CHROME_BROWSER_MODAL_HTML_DIALOG_DELEGATE_H_
6#define CHROME_BROWSER_MODAL_HTML_DIALOG_DELEGATE_H_
initial.commit09911bf2008-07-26 23:55:297
8#include <vector>
9
[email protected]387b71b2009-02-26 01:51:2110#include "base/gfx/size.h"
[email protected]4acc19a62009-04-03 03:05:1111#include "chrome/browser/dom_ui/html_dialog_ui.h"
12#include "chrome/common/ipc_message.h"
[email protected]bfd04a62009-02-01 18:16:5613#include "chrome/common/notification_observer.h"
initial.commit09911bf2008-07-26 23:55:2914
15// This class can only be used on the UI thread.
16class ModalHtmlDialogDelegate
[email protected]4acc19a62009-04-03 03:05:1117 : public HtmlDialogUIDelegate,
initial.commit09911bf2008-07-26 23:55:2918 public NotificationObserver {
19 public:
20 ModalHtmlDialogDelegate(const GURL& url,
21 int width, int height,
22 const std::string& json_arguments,
23 IPC::Message* sync_result,
24 WebContents* contents);
25 ~ModalHtmlDialogDelegate();
26
27 // Notification service callback.
28 virtual void Observe(NotificationType type,
29 const NotificationSource& source,
30 const NotificationDetails& details);
31
[email protected]4acc19a62009-04-03 03:05:1132 // HTMLDialogUIDelegate implementation:
[email protected]b0c6e5d2009-02-24 01:18:5733 virtual bool IsDialogModal() const;
34 virtual std::wstring GetDialogTitle() const { return L"Google Gears"; }
initial.commit09911bf2008-07-26 23:55:2935 virtual GURL GetDialogContentURL() const;
[email protected]387b71b2009-02-26 01:51:2136 virtual void GetDialogSize(gfx::Size* size) const;
initial.commit09911bf2008-07-26 23:55:2937 virtual std::string GetDialogArgs() const;
38 virtual void OnDialogClosed(const std::string& json_retval);
39
40 private:
[email protected]c633a492008-11-17 21:32:4241 // Invoked from the destructor or when we receive notification the web
42 // contents has been disconnnected. Removes the observer from the WebContents
43 // and NULLs out contents_.
44 void RemoveObserver();
45
initial.commit09911bf2008-07-26 23:55:2946 // The WebContents that opened the dialog.
47 WebContents* contents_;
48
49 // The parameters needed to display a modal HTML dialog.
[email protected]4acc19a62009-04-03 03:05:1150 HtmlDialogUI::HtmlDialogParams params_;
initial.commit09911bf2008-07-26 23:55:2951
52 // Once we get our reply in OnModalDialogResponse we'll need to respond to the
53 // plugin using this |sync_result| pointer so we store it between calls.
54 IPC::Message* sync_response_;
55
[email protected]c633a492008-11-17 21:32:4256 DISALLOW_COPY_AND_ASSIGN(ModalHtmlDialogDelegate);
initial.commit09911bf2008-07-26 23:55:2957};
58
[email protected]c633a492008-11-17 21:32:4259#endif // CHROME_BROWSER_MODAL_HTML_DIALOG_DELEGATE_H_