| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2010 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_TEST_MOCK_IE_EVENT_SINK_ACTIONS_H_ |
| 6 #define CHROME_FRAME_TEST_MOCK_IE_EVENT_SINK_ACTIONS_H_ |
| 7 |
| 8 #include "chrome_frame/test/simulate_input.h" |
| 9 #include "testing/gmock/include/gmock/gmock.h" |
| 10 |
| 11 namespace chrome_frame_test { |
| 12 |
| 13 MATCHER_P(UrlPathEq, url, "equals the path and query portion of the url") { |
| 14 return arg == chrome_frame_test::GetPathAndQueryFromUrl(url); |
| 15 } |
| 16 |
| 17 ACTION_P3(DelayCloseBrowserMock, loop, delay, mock) { |
| 18 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 19 &IEEventSink::CloseWebBrowser), delay); |
| 20 } |
| 21 |
| 22 ACTION_P(SetFocusToRenderer, mock) { |
| 23 simulate_input::SetKeyboardFocusToWindow( |
| 24 mock->event_sink()->GetRendererWindow()); |
| 25 } |
| 26 |
| 27 ACTION_P2(Navigate, mock, navigate_url) { |
| 28 mock->event_sink()->Navigate(navigate_url); |
| 29 } |
| 30 |
| 31 ACTION_P2(WatchWindow, mock, window_class) { |
| 32 mock->WatchWindow(window_class); |
| 33 } |
| 34 |
| 35 ACTION_P(StopWindowWatching, mock) { |
| 36 mock->StopWatching(); |
| 37 } |
| 38 |
| 39 ACTION_P(ExpectRendererHasFocus, mock) { |
| 40 mock->event_sink()->ExpectRendererWindowHasFocus(); |
| 41 } |
| 42 |
| 43 ACTION_P8(DelayExecCommand, mock, loop, delay, cmd_group_guid, cmd_id, |
| 44 cmd_exec_opt, in_args, out_args) { |
| 45 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 46 &IEEventSink::Exec, cmd_group_guid, cmd_id, cmd_exec_opt, in_args, |
| 47 out_args), delay); |
| 48 } |
| 49 |
| 50 ACTION_P3(DelayRefresh, mock, loop, delay) { |
| 51 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 52 &IEEventSink::Refresh), delay); |
| 53 } |
| 54 |
| 55 ACTION_P6(DelaySendMouseClick, mock, loop, delay, x, y, button) { |
| 56 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 57 &IEEventSink::SendMouseClick, x, y, button), delay); |
| 58 } |
| 59 |
| 60 ACTION_P5(DelaySendDoubleClick, mock, loop, delay, x, y) { |
| 61 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 62 &IEEventSink::SendMouseClick, x, y, simulate_input::LEFT), delay); |
| 63 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 64 &IEEventSink::SendMouseClick, x, y, simulate_input::LEFT), delay + 100); |
| 65 } |
| 66 |
| 67 ACTION_P4(DelaySendChar, loop, delay, c, mod) { |
| 68 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 69 simulate_input::SendCharA, c, mod), delay); |
| 70 } |
| 71 |
| 72 ACTION_P3(DelaySendString, loop, delay, str) { |
| 73 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 74 simulate_input::SendStringW, str), delay); |
| 75 } |
| 76 |
| 77 ACTION_P5(SendExtendedKeysEnter, loop, delay, c, repeat, mod) { |
| 78 chrome_frame_test::DelaySendExtendedKeysEnter(loop, delay, c, repeat, mod); |
| 79 } |
| 80 |
| 81 ACTION(DoCloseWindow) { |
| 82 ::PostMessage(arg0, WM_SYSCOMMAND, SC_CLOSE, 0); |
| 83 } |
| 84 |
| 85 ACTION_P3(DelayGoBack, mock, loop, delay) { |
| 86 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 87 &IEEventSink::GoBack), delay); |
| 88 } |
| 89 |
| 90 ACTION_P3(DelayGoForward, mock, loop, delay) { |
| 91 loop->PostDelayedTask(FROM_HERE, NewRunnableMethod(mock->event_sink(), |
| 92 &IEEventSink::GoForward), delay); |
| 93 } |
| 94 |
| 95 ACTION_P(CloseBrowserMock, mock) { |
| 96 mock->event_sink()->CloseWebBrowser(); |
| 97 } |
| 98 |
| 99 ACTION_P(VerifyAddressBarUrl, mock) { |
| 100 mock->event_sink()->ExpectAddressBarUrl(std::wstring(arg1)); |
| 101 } |
| 102 |
| 103 ACTION_P4(DelaySendScanCode, loop, delay, c, mod) { |
| 104 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 105 simulate_input::SendScanCode, c, mod), delay); |
| 106 } |
| 107 |
| 108 // This function selects the address bar via the Alt+d shortcut. This is done |
| 109 // via a delayed task which executes after the delay which is passed in. |
| 110 // The subsequent operations like typing in the actual url and then hitting |
| 111 // enter to force the browser to navigate to it each execute as delayed tasks |
| 112 // timed at the delay passed in. The recommended value for delay is 2000 ms |
| 113 // to account for the time taken for the accelerator keys to be reflected back |
| 114 // from Chrome. |
| 115 ACTION_P3(TypeUrlInAddressBar, loop, url, delay) { |
| 116 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 117 simulate_input::SendCharA, 'd', simulate_input::ALT), |
| 118 delay); |
| 119 |
| 120 const unsigned int kInterval = 500; |
| 121 int next_delay = delay + kInterval; |
| 122 |
| 123 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 124 simulate_input::SendStringW, url), next_delay); |
| 125 |
| 126 next_delay = next_delay + kInterval; |
| 127 |
| 128 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 129 simulate_input::SendCharA, VK_RETURN, simulate_input::NONE), |
| 130 next_delay); |
| 131 } |
| 132 |
| 133 ACTION_P5(ValidateWindowSize, mock, left, top, width, height) { |
| 134 int actual_left = 0; |
| 135 int actual_top = 0; |
| 136 int actual_width = 0; |
| 137 int actual_height = 0; |
| 138 |
| 139 IWebBrowser2* web_browser2 = mock->event_sink()->web_browser2(); |
| 140 web_browser2->get_Left(reinterpret_cast<long*>(&actual_left)); |
| 141 web_browser2->get_Top(reinterpret_cast<long*>(&actual_top)); |
| 142 web_browser2->get_Width(reinterpret_cast<long*>(&actual_width)); |
| 143 web_browser2->get_Height(reinterpret_cast<long*>(&actual_height)); |
| 144 |
| 145 EXPECT_EQ(actual_left, left); |
| 146 EXPECT_EQ(actual_top, top); |
| 147 |
| 148 EXPECT_LE(actual_width, width + 20); |
| 149 EXPECT_GT(actual_width, width - 20); |
| 150 EXPECT_LE(actual_height, height + 100); |
| 151 EXPECT_GT(actual_height, height - 100); |
| 152 } |
| 153 |
| 154 ACTION_P(VerifyAddressBarUrlWithGcf, mock) { |
| 155 std::wstring expected_url = L"gcf:"; |
| 156 expected_url += arg1; |
| 157 mock->event_sink()->ExpectAddressBarUrl(expected_url); |
| 158 } |
| 159 |
| 160 ACTION_P2(OpenContextMenu, loop, delay) { |
| 161 loop->PostDelayedTask(FROM_HERE, NewRunnableFunction( |
| 162 simulate_input::SendScanCode, VK_F10, simulate_input::SHIFT), delay); |
| 163 } |
| 164 |
| 165 ACTION_P3(SelectItem, loop, delay, index) { |
| 166 chrome_frame_test::DelaySendExtendedKeysEnter(loop, delay, VK_DOWN, index + 1, |
| 167 simulate_input::NONE); |
| 168 } |
| 169 |
| 170 } // namespace chrome_frame_test |
| 171 |
| 172 #endif // CHROME_FRAME_TEST_MOCK_IE_EVENT_SINK_ACTIONS_H_ |
| OLD | NEW |