1// Copyright 2013 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.
4
5#ifndef CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
6#define CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
7
8#include "content/public/browser/javascript_dialog_manager.h"
9
10#if defined(TOOLKIT_GTK)
11#include "ui/base/gtk/gtk_signal.h"
12#endif
13
14#if defined(OS_MACOSX)
15#if __OBJC__
16@class ShellJavaScriptDialogHelper;
17#else
18class ShellJavaScriptDialogHelper;
19#endif  // __OBJC__
20#endif  // defined(OS_MACOSX)
21
22namespace content {
23
24class ShellJavaScriptDialogManager;
25
26class ShellJavaScriptDialog {
27 public:
28  ShellJavaScriptDialog(
29      ShellJavaScriptDialogManager* manager,
30      gfx::NativeWindow parent_window,
31      JavaScriptMessageType message_type,
32      const base::string16& message_text,
33      const base::string16& default_prompt_text,
34      const JavaScriptDialogManager::DialogClosedCallback& callback);
35  ~ShellJavaScriptDialog();
36
37  // Called to cancel a dialog mid-flight.
38  void Cancel();
39
40 private:
41  ShellJavaScriptDialogManager* manager_;
42  JavaScriptDialogManager::DialogClosedCallback callback_;
43
44#if defined(OS_MACOSX)
45  ShellJavaScriptDialogHelper* helper_;  // owned
46#elif defined(OS_WIN)
47  JavaScriptMessageType message_type_;
48  HWND dialog_win_;
49  base::string16 message_text_;
50  base::string16 default_prompt_text_;
51  static INT_PTR CALLBACK DialogProc(HWND dialog, UINT message, WPARAM wparam,
52                                     LPARAM lparam);
53#elif defined(TOOLKIT_GTK)
54  GtkWidget* gtk_dialog_;
55  gfx::NativeWindow parent_window_;
56  CHROMEGTK_CALLBACK_1(ShellJavaScriptDialog, void, OnResponse, int);
57#endif
58
59  DISALLOW_COPY_AND_ASSIGN(ShellJavaScriptDialog);
60};
61
62}  // namespace content
63
64#endif  // CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
65