13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/javascript_dialog_manager.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if __OBJC__
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class ShellJavaScriptDialogHelper;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellJavaScriptDialogHelper;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // __OBJC__
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // defined(OS_MACOSX)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellJavaScriptDialogManager;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellJavaScriptDialog {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ShellJavaScriptDialog(
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ShellJavaScriptDialogManager* manager,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::NativeWindow parent_window,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      JavaScriptMessageType message_type,
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const base::string16& message_text,
29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const base::string16& default_prompt_text,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const JavaScriptDialogManager::DialogClosedCallback& callback);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~ShellJavaScriptDialog();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called to cancel a dialog mid-flight.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Cancel();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ShellJavaScriptDialogManager* manager_;
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  JavaScriptDialogManager::DialogClosedCallback callback_;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ShellJavaScriptDialogHelper* helper_;  // owned
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_WIN)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  JavaScriptMessageType message_type_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HWND dialog_win_;
45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 message_text_;
46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 default_prompt_text_;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static INT_PTR CALLBACK DialogProc(HWND dialog, UINT message, WPARAM wparam,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     LPARAM lparam);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellJavaScriptDialog);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif  // CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_H_
57