1 // Copyright (c) 2011 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_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ 6 #define CHROME_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 12 #if defined(OS_WIN) 13 #include <windows.h> 14 #elif defined(OS_MACOSX) 15 #include <Carbon/Carbon.h> 16 #include "base/mac/scoped_cftyperef.h" 17 #endif 18 19 namespace webdriver { 20 21 // Restores the keyboard layout that was active at this object's creation 22 // when this object goes out of scope. 23 class RestoreKeyboardLayoutOnDestruct { 24 public: 25 RestoreKeyboardLayoutOnDestruct(); 26 ~RestoreKeyboardLayoutOnDestruct(); 27 28 private: 29 #if defined(OS_WIN) 30 HKL layout_; 31 #elif defined(OS_MACOSX) 32 base::ScopedCFTypeRef<TISInputSourceRef> layout_; 33 #endif 34 35 DISALLOW_COPY_AND_ASSIGN(RestoreKeyboardLayoutOnDestruct); 36 }; 37 38 #if defined(OS_WIN) 39 // Loads and activates the given keyboard layout. |input_locale_identifier| 40 // is composed of a device and language ID. Returns true on success. 41 // See http://msdn.microsoft.com/en-us/library/dd318693(v=vs.85).aspx 42 // Example: "00000409" is the default en-us keyboard layout. 43 bool SwitchKeyboardLayout(const std::string& input_locale_identifier); 44 #endif // defined(OS_WIN) 45 46 #if defined(OS_MACOSX) 47 // Selects the input source for the given input source ID. Returns true on 48 // success. 49 // Example: "com.apple.keyboardlayout.US" is the default en-us keyboard layout. 50 bool SwitchKeyboardLayout(const std::string& input_source_id); 51 #endif // defined(OS_MACOSX) 52 53 } // namespace webdriver 54 55 #endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ 56