blob: a5f567005a258c59cbe1fc6cb4f7cc02606f5bb5 [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
10#include "chrome/browser/dom_ui/html_dialog_contents.h"
[email protected]bfd04a62009-02-01 18:16:5611#include "chrome/common/notification_observer.h"
initial.commit09911bf2008-07-26 23:55:2912
13// This class can only be used on the UI thread.
14class ModalHtmlDialogDelegate
15 : public HtmlDialogContentsDelegate,
16 public NotificationObserver {
17 public:
18 ModalHtmlDialogDelegate(const GURL& url,
19 int width, int height,
20 const std::string& json_arguments,
21 IPC::Message* sync_result,
22 WebContents* contents);
23 ~ModalHtmlDialogDelegate();
24
25 // Notification service callback.
26 virtual void Observe(NotificationType type,
27 const NotificationSource& source,
28 const NotificationDetails& details);
29
[email protected]b0c6e5d2009-02-24 01:18:5730 // HTMLDialogContentsDelegate implementation:
31 virtual bool IsDialogModal() const;
32 virtual std::wstring GetDialogTitle() const { return L"Google Gears"; }
initial.commit09911bf2008-07-26 23:55:2933 virtual GURL GetDialogContentURL() const;
34 virtual void GetDialogSize(CSize* size) const;
35 virtual std::string GetDialogArgs() const;
36 virtual void OnDialogClosed(const std::string& json_retval);
37
38 private:
[email protected]c633a492008-11-17 21:32:4239 // Invoked from the destructor or when we receive notification the web
40 // contents has been disconnnected. Removes the observer from the WebContents
41 // and NULLs out contents_.
42 void RemoveObserver();
43
initial.commit09911bf2008-07-26 23:55:2944 // The WebContents that opened the dialog.
45 WebContents* contents_;
46
47 // The parameters needed to display a modal HTML dialog.
48 HtmlDialogContents::HtmlDialogParams params_;
49
50 // Once we get our reply in OnModalDialogResponse we'll need to respond to the
51 // plugin using this |sync_result| pointer so we store it between calls.
52 IPC::Message* sync_response_;
53
[email protected]c633a492008-11-17 21:32:4254 DISALLOW_COPY_AND_ASSIGN(ModalHtmlDialogDelegate);
initial.commit09911bf2008-07-26 23:55:2955};
56
[email protected]c633a492008-11-17 21:32:4257#endif // CHROME_BROWSER_MODAL_HTML_DIALOG_DELEGATE_H_