Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(613)

Side by Side Diff: chrome_frame/test/chrome_frame_test_utils.h

Issue 604014: First batch of context menu tests... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_ 5 #ifndef CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_
6 #define CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_ 6 #define CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_
7 7
8 #include <atlbase.h> 8 #include <atlbase.h>
9 #include <atlcom.h> 9 #include <atlcom.h>
10 #include <string> 10 #include <string>
11 #include <exdisp.h> 11 #include <exdisp.h>
12 #include <exdispid.h> 12 #include <exdispid.h>
13 #include <mshtml.h> 13 #include <mshtml.h>
14 #include <shlguid.h> 14 #include <shlguid.h>
15 #include <shobjidl.h> 15 #include <shobjidl.h>
16 #include <windows.h> 16 #include <windows.h>
17 17
18 #include "base/basictypes.h" 18 #include "base/basictypes.h"
19 #include "base/message_loop.h" 19 #include "base/message_loop.h"
20 #include "base/process_util.h" 20 #include "base/process_util.h"
21 #include "base/scoped_comptr_win.h" 21 #include "base/scoped_comptr_win.h"
22 #include "base/scoped_variant_win.h" 22 #include "base/scoped_variant_win.h"
23 23
24 #include "chrome_frame/test_utils.h" 24 #include "chrome_frame/test_utils.h"
25 #include "chrome_frame/test/simulate_input.h"
25 // Include without path to make GYP build see it. 26 // Include without path to make GYP build see it.
26 #include "chrome_tab.h" // NOLINT 27 #include "chrome_tab.h" // NOLINT
27 28
28 namespace chrome_frame_test { 29 namespace chrome_frame_test {
29 30
30 bool IsTopLevelWindow(HWND window);
31 int CloseVisibleWindowsOnAllThreads(HANDLE process); 31 int CloseVisibleWindowsOnAllThreads(HANDLE process);
32 bool ForceSetForegroundWindow(HWND window);
33 bool EnsureProcessInForeground(base::ProcessId process_id);
34
35 // Iterates through all the characters in the string and simulates
36 // keyboard input. The input goes to the currently active application.
37 bool SendString(const wchar_t* s);
38
39 // Sends a virtual key such as VK_TAB, VK_RETURN or a character that has been
40 // translated to a virtual key.
41 // The extended flag indicates if this is an extended key
42 void SendVirtualKey(int16 key, bool extended);
43
44 // Translates a single char to a virtual key and calls SendVirtualKey.
45 void SendChar(char c);
46
47 // Sends an ascii string, char by char (calls SendChar for each).
48 void SendString(const char* s);
49
50 // Sends a keystroke to the currently active application with optional
51 // modifiers set.
52 bool SendMnemonic(WORD mnemonic_char, bool shift_pressed, bool control_pressed,
53 bool alt_pressed);
54 32
55 base::ProcessHandle LaunchFirefox(const std::wstring& url); 33 base::ProcessHandle LaunchFirefox(const std::wstring& url);
56 base::ProcessHandle LaunchOpera(const std::wstring& url); 34 base::ProcessHandle LaunchOpera(const std::wstring& url);
57 base::ProcessHandle LaunchIE(const std::wstring& url); 35 base::ProcessHandle LaunchIE(const std::wstring& url);
58 base::ProcessHandle LaunchSafari(const std::wstring& url); 36 base::ProcessHandle LaunchSafari(const std::wstring& url);
59 base::ProcessHandle LaunchChrome(const std::wstring& url); 37 base::ProcessHandle LaunchChrome(const std::wstring& url);
60 38
61 // Attempts to close all open IE windows. 39 // Attempts to close all open IE windows.
62 // The return value is the number of windows closed. 40 // The return value is the number of windows closed.
63 // @note: this function requires COM to be initialized on the calling thread. 41 // @note: this function requires COM to be initialized on the calling thread.
64 // Since the caller might be running in either MTA or STA, the function does 42 // Since the caller might be running in either MTA or STA, the function does
65 // not perform this initialization itself. 43 // not perform this initialization itself.
66 int CloseAllIEWindows(); 44 int CloseAllIEWindows();
67 45
68 extern const wchar_t kIEImageName[]; 46 extern const wchar_t kIEImageName[];
69 extern const wchar_t kIEBrokerImageName[]; 47 extern const wchar_t kIEBrokerImageName[];
70 extern const wchar_t kFirefoxImageName[]; 48 extern const wchar_t kFirefoxImageName[];
71 extern const wchar_t kOperaImageName[]; 49 extern const wchar_t kOperaImageName[];
72 extern const wchar_t kSafariImageName[]; 50 extern const wchar_t kSafariImageName[];
73 extern const wchar_t kChromeImageName[]; 51 extern const wchar_t kChromeImageName[];
74 52
75 // Displays the chrome frame context menu by posting mouse move messages to
76 // Chrome
77 void ShowChromeFrameContextMenu();
78
79 // Sends keyboard messages to the chrome frame context menu to select the About
80 // Chrome frame option.
81 void SelectAboutChromeFrame();
82
83 // Returns a handle to the chrome frame render widget child window.
84 // Returns NULL on failure.
85 HWND GetChromeRendererWindow();
86
87 // Sends the specified input to the window passed in.
88 void SendInputToWindow(HWND window, const std::string& input_string);
89
90 // Helper function to set keyboard focus to a window. This is achieved by
91 // sending a mouse move followed by a mouse down/mouse up combination to the
92 // window.
93 void SetKeyboardFocusToWindow(HWND window, int x, int y);
94
95 // Temporarily impersonate the current thread to low integrity for the lifetime 53 // Temporarily impersonate the current thread to low integrity for the lifetime
96 // of the object. Destructor will automatically revert integrity level. 54 // of the object. Destructor will automatically revert integrity level.
97 class LowIntegrityToken { 55 class LowIntegrityToken {
98 public: 56 public:
99 LowIntegrityToken(); 57 LowIntegrityToken();
100 ~LowIntegrityToken(); 58 ~LowIntegrityToken();
101 BOOL Impersonate(); 59 BOOL Impersonate();
102 BOOL RevertToSelf(); 60 BOOL RevertToSelf();
103 protected: 61 protected:
104 static bool IsImpersonated(); 62 static bool IsImpersonated();
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 // errors on failure. 143 // errors on failure.
186 HRESULT LaunchIEAndNavigate(const std::wstring& navigate_url); 144 HRESULT LaunchIEAndNavigate(const std::wstring& navigate_url);
187 145
188 virtual HRESULT Navigate(const std::wstring& navigate_url); 146 virtual HRESULT Navigate(const std::wstring& navigate_url);
189 147
190 // Set input focus to chrome frame window. 148 // Set input focus to chrome frame window.
191 void SetFocusToChrome(); 149 void SetFocusToChrome();
192 150
193 // Send keyboard input to the renderer window hosted in chrome using 151 // Send keyboard input to the renderer window hosted in chrome using
194 // SendInput API 152 // SendInput API
195 void SendInputToChrome(const std::string& input_string); 153 void SendKeys(const wchar_t* input_string);
154
155 // Send mouse click to the renderer window hosted in chrome using
156 // SendInput API
157 void SendMouseClick(int x, int y, simulate_input::MouseButton button);
158
159 void Exec(const GUID* cmd_group_guid, DWORD command_id,
160 DWORD cmd_exec_opt, VARIANT* in_args, VARIANT* out_args);
196 161
197 BEGIN_COM_MAP(WebBrowserEventSink) 162 BEGIN_COM_MAP(WebBrowserEventSink)
198 END_COM_MAP() 163 END_COM_MAP()
199 164
200 BEGIN_SINK_MAP(WebBrowserEventSink) 165 BEGIN_SINK_MAP(WebBrowserEventSink)
201 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, 166 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2,
202 OnBeforeNavigate2Internal, &kBeforeNavigate2Info) 167 OnBeforeNavigate2Internal, &kBeforeNavigate2Info)
203 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_DOWNLOADBEGIN, 168 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_DOWNLOADBEGIN,
204 OnDownloadBegin, &kVoidMethodInfo) 169 OnDownloadBegin, &kVoidMethodInfo)
205 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2, 170 SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 EXCEPINFO* except_info, UINT* arg_error) { 205 EXCEPINFO* except_info, UINT* arg_error) {
241 DLOG(INFO) << __FUNCTION__ << L" disp id :" << dispid; 206 DLOG(INFO) << __FUNCTION__ << L" disp id :" << dispid;
242 return DispEventsImpl::Invoke(dispid, riid, lcid, flags, params, result, 207 return DispEventsImpl::Invoke(dispid, riid, lcid, flags, params, result,
243 except_info, arg_error); 208 except_info, arg_error);
244 } 209 }
245 #endif // _DEBUG 210 #endif // _DEBUG
246 211
247 // Chrome frame callbacks 212 // Chrome frame callbacks
248 virtual void OnLoad(const wchar_t* url) {} 213 virtual void OnLoad(const wchar_t* url) {}
249 virtual void OnLoadError(const wchar_t* url) {} 214 virtual void OnLoadError(const wchar_t* url) {}
250 virtual void OnMessage(const wchar_t* message) {} 215 virtual void OnMessage(const wchar_t* message, const wchar_t* origin,
216 const wchar_t* source) {}
251 217
252 IWebBrowser2* web_browser2() { 218 IWebBrowser2* web_browser2() {
253 return web_browser2_.get(); 219 return web_browser2_.get();
254 } 220 }
255 221
256 virtual void OnNewBrowserWindow(IDispatch* new_window, const wchar_t* url) {} 222 virtual void OnNewBrowserWindow(IDispatch* new_window, const wchar_t* url) {}
257 223
258 HRESULT SetWebBrowser(IWebBrowser2* web_browser2); 224 HRESULT SetWebBrowser(IWebBrowser2* web_browser2);
225 void ExpectRendererWindowHasfocus();
259 226
260 protected: 227 protected:
261 STDMETHOD(OnBeforeNavigate2Internal)(IDispatch* dispatch, VARIANT* url, 228 STDMETHOD(OnBeforeNavigate2Internal)(IDispatch* dispatch, VARIANT* url,
262 VARIANT* flags, 229 VARIANT* flags,
263 VARIANT* target_frame_name, 230 VARIANT* target_frame_name,
264 VARIANT* post_data, VARIANT* headers, 231 VARIANT* post_data, VARIANT* headers,
265 VARIANT_BOOL* cancel); 232 VARIANT_BOOL* cancel);
266 STDMETHOD_(void, OnNavigateComplete2Internal)(IDispatch* dispatch, 233 STDMETHOD_(void, OnNavigateComplete2Internal)(IDispatch* dispatch,
267 VARIANT* url); 234 VARIANT* url);
268 STDMETHOD_(void, OnDocumentCompleteInternal)(IDispatch* dispatch, 235 STDMETHOD_(void, OnDocumentCompleteInternal)(IDispatch* dispatch,
269 VARIANT* url); 236 VARIANT* url);
270 STDMETHOD_(void, OnNewWindow3Internal)(IDispatch** dispatch, 237 STDMETHOD_(void, OnNewWindow3Internal)(IDispatch** dispatch,
271 VARIANT_BOOL* Cancel, DWORD flags, 238 VARIANT_BOOL* Cancel, DWORD flags,
272 BSTR url_context, BSTR url); 239 BSTR url_context, BSTR url);
273 240
274 // IChromeFrame callbacks 241 // IChromeFrame callbacks
275 HRESULT OnLoadInternal(const VARIANT* param); 242 HRESULT OnLoadInternal(const VARIANT* param);
276 HRESULT OnLoadErrorInternal(const VARIANT* param); 243 HRESULT OnLoadErrorInternal(const VARIANT* param);
277 HRESULT OnMessageInternal(const VARIANT* param); 244 HRESULT OnMessageInternal(const VARIANT* param);
278 245
279 void ConnectToChromeFrame(); 246 void ConnectToChromeFrame();
280 void DisconnectFromChromeFrame(); 247 void DisconnectFromChromeFrame();
281 HWND GetTabWindow(); 248 HWND GetRendererWindow();
282 249
283 public: 250 public:
284 ScopedComPtr<IWebBrowser2> web_browser2_; 251 ScopedComPtr<IWebBrowser2> web_browser2_;
285 ScopedComPtr<IChromeFrame> chrome_frame_; 252 ScopedComPtr<IChromeFrame> chrome_frame_;
286 DispCallback<WebBrowserEventSink> onmessage_; 253 DispCallback<WebBrowserEventSink> onmessage_;
287 DispCallback<WebBrowserEventSink> onloaderror_; 254 DispCallback<WebBrowserEventSink> onloaderror_;
288 DispCallback<WebBrowserEventSink> onload_; 255 DispCallback<WebBrowserEventSink> onload_;
289 256
290 protected: 257 protected:
291 static _ATL_FUNC_INFO kBeforeNavigate2Info; 258 static _ATL_FUNC_INFO kBeforeNavigate2Info;
292 static _ATL_FUNC_INFO kNavigateComplete2Info; 259 static _ATL_FUNC_INFO kNavigateComplete2Info;
293 static _ATL_FUNC_INFO kNavigateErrorInfo; 260 static _ATL_FUNC_INFO kNavigateErrorInfo;
294 static _ATL_FUNC_INFO kNewWindow2Info; 261 static _ATL_FUNC_INFO kNewWindow2Info;
295 static _ATL_FUNC_INFO kNewWindow3Info; 262 static _ATL_FUNC_INFO kNewWindow3Info;
296 static _ATL_FUNC_INFO kVoidMethodInfo; 263 static _ATL_FUNC_INFO kVoidMethodInfo;
297 static _ATL_FUNC_INFO kDocumentCompleteInfo; 264 static _ATL_FUNC_INFO kDocumentCompleteInfo;
298 }; 265 };
299 266
300 } // namespace chrome_frame_test 267 } // namespace chrome_frame_test
301 268
302 #endif // CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_ 269 #endif // CHROME_FRAME_TEST_CHROME_FRAME_TEST_UTILS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698