| // Copyright (c) 2012 The Chromium Embedded Framework Authors. |
| // Portions copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CEF_LIBCEF_BROWSER_NATIVE_JAVASCRIPT_DIALOG_RUNNER_WIN_H_ |
| #define CEF_LIBCEF_BROWSER_NATIVE_JAVASCRIPT_DIALOG_RUNNER_WIN_H_ |
| #pragma once |
| |
| #include <windows.h> |
| |
| #include "libcef/browser/javascript_dialog_runner.h" |
| |
| class CefJavaScriptDialogRunnerWin : public CefJavaScriptDialogRunner { |
| public: |
| CefJavaScriptDialogRunnerWin(); |
| ~CefJavaScriptDialogRunnerWin() override; |
| |
| // CefJavaScriptDialogRunner methods: |
| void Run(CefBrowserHostImpl* browser, |
| content::JavaScriptDialogType message_type, |
| const base::string16& display_url, |
| const base::string16& message_text, |
| const base::string16& default_prompt_text, |
| DialogClosedCallback callback) override; |
| void Cancel() override; |
| |
| private: |
| void CloseDialog(bool success, const base::string16& user_input); |
| |
| HWND dialog_win_; |
| HWND parent_win_; |
| |
| content::JavaScriptDialogType message_type_; |
| base::string16 message_text_; |
| base::string16 default_prompt_text_; |
| DialogClosedCallback callback_; |
| |
| bool hook_installed_; |
| |
| static INT_PTR CALLBACK DialogProc(HWND dialog, |
| UINT message, |
| WPARAM wparam, |
| LPARAM lparam); |
| |
| // Since the message loop we expect to run in isn't going to be nicely |
| // calling IsDialogMessage(), we need to hook the wnd proc and call it |
| // ourselves. See http://support.microsoft.com/kb/q187988/ |
| static bool InstallMessageHook(); |
| static bool UninstallMessageHook(); |
| static LRESULT CALLBACK GetMsgProc(int code, WPARAM wparam, LPARAM lparam); |
| static HHOOK msg_hook_; |
| static int msg_hook_user_count_; |
| }; |
| |
| #endif // CEF_LIBCEF_BROWSER_NATIVE_JAVASCRIPT_DIALOG_RUNNER_WIN_H_ |