Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "chrome/browser/extensions/extension_apitest.h" | 5 #include "chrome/browser/extensions/extension_apitest.h" |
| 6 #include "chrome/browser/extensions/window_controller.h" | 6 #include "chrome/browser/extensions/window_controller.h" |
| 7 #include "chrome/browser/ui/browser_window.h" | 7 #include "chrome/browser/ui/browser_window.h" |
| 8 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 8 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 9 #include "chrome/test/base/interactive_test_utils.h" | 9 #include "chrome/test/base/interactive_test_utils.h" |
| 10 #include "content/public/test/browser_test_utils.h" | 10 #include "content/public/test/browser_test_utils.h" |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 #if defined(OS_MACOSX) | 23 #if defined(OS_MACOSX) |
| 24 #include <Carbon/Carbon.h> | 24 #include <Carbon/Carbon.h> |
| 25 | 25 |
| 26 #include "base/mac/scoped_cftyperef.h" | 26 #include "base/mac/scoped_cftyperef.h" |
| 27 #endif | 27 #endif |
| 28 | 28 |
| 29 namespace extensions { | 29 namespace extensions { |
| 30 | 30 |
| 31 typedef ExtensionApiTest GlobalCommandsApiTest; | 31 typedef ExtensionApiTest GlobalCommandsApiTest; |
| 32 | 32 |
| 33 #if defined(OS_LINUX) | 33 #if defined(OS_LINUX) && defined(USE_X11) |
|
sky
2014/07/09 20:17:49
Do we need the OS_LINUX conditions in the ifdefs h
| |
| 34 // Send a simulated key press and release event, where |control|, |shift| or | 34 // Send a simulated key press and release event, where |control|, |shift| or |
| 35 // |alt| indicates whether the key is struck with corresponding modifier. | 35 // |alt| indicates whether the key is struck with corresponding modifier. |
| 36 void SendNativeKeyEventToXDisplay(ui::KeyboardCode key, | 36 void SendNativeKeyEventToXDisplay(ui::KeyboardCode key, |
| 37 bool control, | 37 bool control, |
| 38 bool shift, | 38 bool shift, |
| 39 bool alt) { | 39 bool alt) { |
| 40 Display* display = gfx::GetXDisplay(); | 40 Display* display = gfx::GetXDisplay(); |
| 41 KeyCode ctrl_key_code = XKeysymToKeycode(display, XK_Control_L); | 41 KeyCode ctrl_key_code = XKeysymToKeycode(display, XK_Control_L); |
| 42 KeyCode shift_key_code = XKeysymToKeycode(display, XK_Shift_L); | 42 KeyCode shift_key_code = XKeysymToKeycode(display, XK_Shift_L); |
| 43 KeyCode alt_key_code = XKeysymToKeycode(display, XK_Alt_L); | 43 KeyCode alt_key_code = XKeysymToKeycode(display, XK_Alt_L); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 64 // Simulate the keys being pressed. | 64 // Simulate the keys being pressed. |
| 65 for (KeyCodes::iterator it = key_codes.begin(); it != key_codes.end(); it++) | 65 for (KeyCodes::iterator it = key_codes.begin(); it != key_codes.end(); it++) |
| 66 XTestFakeKeyEvent(display, *it, True, CurrentTime); | 66 XTestFakeKeyEvent(display, *it, True, CurrentTime); |
| 67 | 67 |
| 68 // Simulate the keys being released. | 68 // Simulate the keys being released. |
| 69 for (KeyCodes::iterator it = key_codes.begin(); it != key_codes.end(); it++) | 69 for (KeyCodes::iterator it = key_codes.begin(); it != key_codes.end(); it++) |
| 70 XTestFakeKeyEvent(display, *it, False, CurrentTime); | 70 XTestFakeKeyEvent(display, *it, False, CurrentTime); |
| 71 | 71 |
| 72 XFlush(display); | 72 XFlush(display); |
| 73 } | 73 } |
| 74 #endif // OS_LINUX | 74 #endif // OS_LINUX && USE_X11 |
| 75 | 75 |
| 76 #if defined(OS_MACOSX) | 76 #if defined(OS_MACOSX) |
| 77 using base::ScopedCFTypeRef; | 77 using base::ScopedCFTypeRef; |
| 78 | 78 |
| 79 void SendNativeCommandShift(int key_code) { | 79 void SendNativeCommandShift(int key_code) { |
| 80 CGEventSourceRef event_source = | 80 CGEventSourceRef event_source = |
| 81 CGEventSourceCreate(kCGEventSourceStateHIDSystemState); | 81 CGEventSourceCreate(kCGEventSourceStateHIDSystemState); |
| 82 CGEventTapLocation event_tap_location = kCGHIDEventTap; | 82 CGEventTapLocation event_tap_location = kCGHIDEventTap; |
| 83 | 83 |
| 84 // Create the keyboard press events. | 84 // Create the keyboard press events. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 145 // incognito browser. Both shortcuts should have no effect (extension is not | 145 // incognito browser. Both shortcuts should have no effect (extension is not |
| 146 // loaded there). | 146 // loaded there). |
| 147 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 147 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
| 148 incognito_browser, ui::VKEY_1, true, true, false, false)); | 148 incognito_browser, ui::VKEY_1, true, true, false, false)); |
| 149 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 149 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
| 150 incognito_browser, ui::VKEY_A, true, true, false, false)); | 150 incognito_browser, ui::VKEY_A, true, true, false, false)); |
| 151 | 151 |
| 152 // Activate the shortcut (Ctrl+Shift+9). This should have an effect. | 152 // Activate the shortcut (Ctrl+Shift+9). This should have an effect. |
| 153 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( | 153 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( |
| 154 incognito_browser, ui::VKEY_9, true, true, false, false)); | 154 incognito_browser, ui::VKEY_9, true, true, false, false)); |
| 155 #elif defined(OS_LINUX) | 155 #elif defined(OS_LINUX) && defined(USE_X11) |
| 156 // Create an incognito browser to capture the focus. | 156 // Create an incognito browser to capture the focus. |
| 157 CreateIncognitoBrowser(); | 157 CreateIncognitoBrowser(); |
| 158 | 158 |
| 159 // On Linux, our infrastructure for sending keys just synthesize keyboard | 159 // On Linux, our infrastructure for sending keys just synthesize keyboard |
| 160 // event and send them directly to the specified window, without notifying the | 160 // event and send them directly to the specified window, without notifying the |
| 161 // X root window. It didn't work while testing global shortcut because the | 161 // X root window. It didn't work while testing global shortcut because the |
| 162 // stuff of global shortcut on Linux need to be notified when KeyPress event | 162 // stuff of global shortcut on Linux need to be notified when KeyPress event |
| 163 // is happening on X root window. So we simulate the keyboard input here. | 163 // is happening on X root window. So we simulate the keyboard input here. |
| 164 SendNativeKeyEventToXDisplay(ui::VKEY_1, true, true, false); | 164 SendNativeKeyEventToXDisplay(ui::VKEY_1, true, true, false); |
| 165 SendNativeKeyEventToXDisplay(ui::VKEY_A, true, true, false); | 165 SendNativeKeyEventToXDisplay(ui::VKEY_A, true, true, false); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 208 false, | 208 false, |
| 209 false, | 209 false, |
| 210 false); | 210 false); |
| 211 | 211 |
| 212 // We should get two success result. | 212 // We should get two success result. |
| 213 ASSERT_TRUE(catcher.GetNextResult()); | 213 ASSERT_TRUE(catcher.GetNextResult()); |
| 214 ASSERT_TRUE(catcher.GetNextResult()); | 214 ASSERT_TRUE(catcher.GetNextResult()); |
| 215 } | 215 } |
| 216 | 216 |
| 217 } // namespace extensions | 217 } // namespace extensions |
| OLD | NEW |