- add sources.
[platform/framework/web/crosswalk.git] / src / chrome_frame / find_dialog.h
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 CHROME_FRAME_FIND_DIALOG_H_
6 #define CHROME_FRAME_FIND_DIALOG_H_
7
8 #include <atlbase.h>
9 #include <atlwin.h>
10
11 #include "base/memory/ref_counted.h"
12 #include "base/strings/string16.h"
13 #include "resource.h"
14 #include "grit/chrome_frame_dialogs.h"
15
16 class ChromeFrameAutomationClient;
17
18 class CFFindDialog : public CDialogImpl<CFFindDialog> {
19  public:
20   enum { IDD = IDD_CHROME_FRAME_FIND_DIALOG };
21
22   BEGIN_MSG_MAP(CFFindDialog)
23     MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
24     MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
25     COMMAND_ID_HANDLER(IDOK, OnFind)
26     COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
27   END_MSG_MAP()
28
29   CFFindDialog();
30   void Init(ChromeFrameAutomationClient* automation_client);
31
32   LRESULT OnDestroy(UINT msg, WPARAM wparam,
33                     LPARAM lparam, BOOL& handled);  // NOLINT
34   LRESULT OnFind(WORD wNotifyCode, WORD wID,
35                  HWND hWndCtl, BOOL& bHandled);  // NOLINT
36   LRESULT OnCancel(WORD wNotifyCode, WORD wID,
37                    HWND hWndCtl, BOOL& bHandled);  // NOLINT
38   LRESULT OnInitDialog(UINT msg, WPARAM wparam,
39                        LPARAM lparam, BOOL& handled);  // NOLINT
40
41  private:
42
43   // Since the message loop we expect to run in isn't going to be nicely
44   // calling IsDialogMessage(), we need to hook the wnd proc and call it
45   // ourselves. See http://support.microsoft.com/kb/q187988/
46   bool InstallMessageHook();
47   bool UninstallMessageHook();
48   static LRESULT CALLBACK GetMsgProc(int code, WPARAM wparam, LPARAM lparam);
49   static HHOOK msg_hook_;
50
51   // Store the text we searched for last to determine whether we are doing a
52   // "Find" or a "Find Next".
53   string16 last_find_text_;
54
55   // We don't own these, and they must exist at least as long as we do.
56   scoped_refptr<ChromeFrameAutomationClient> automation_client_;
57 };
58
59 #endif  // CHROME_FRAME_FIND_DIALOG_H_