Home | History | Annotate | Download | only in shell
      1 // Copyright (c) 2012 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_SHELL_JAVASCRIPT_DIALOG_H_
      6 #define CONTENT_SHELL_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
     18 class ShellJavaScriptDialogHelper;
     19 #endif  // __OBJC__
     20 #endif  // defined(OS_MACOSX)
     21 
     22 namespace content {
     23 
     24 class ShellJavaScriptDialogManager;
     25 
     26 class ShellJavaScriptDialog {
     27  public:
     28   ShellJavaScriptDialog(
     29       ShellJavaScriptDialogManager* manager,
     30       gfx::NativeWindow parent_window,
     31       JavaScriptMessageType message_type,
     32       const string16& message_text,
     33       const 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   string16 message_text_;
     50   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_SHELL_JAVASCRIPT_DIALOG_H_
     65