| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ |
| #define CHROME_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| |
| #if defined(OS_WIN) |
| #include <windows.h> |
| #elif defined(OS_MACOSX) |
| #include <Carbon/Carbon.h> |
| #include "base/mac/scoped_cftyperef.h" |
| #endif |
| |
| namespace webdriver { |
| |
| // Restores the keyboard layout that was active at this object's creation |
| // when this object goes out of scope. |
| class RestoreKeyboardLayoutOnDestruct { |
| public: |
| RestoreKeyboardLayoutOnDestruct(); |
| ~RestoreKeyboardLayoutOnDestruct(); |
| |
| private: |
| #if defined(OS_WIN) |
| HKL layout_; |
| #elif defined(OS_MACOSX) |
| base::ScopedCFTypeRef<TISInputSourceRef> layout_; |
| #endif |
| |
| DISALLOW_COPY_AND_ASSIGN(RestoreKeyboardLayoutOnDestruct); |
| }; |
| |
| #if defined(OS_WIN) |
| // Loads and activates the given keyboard layout. |input_locale_identifier| |
| // is composed of a device and language ID. Returns true on success. |
| // See http://msdn.microsoft.com/en-us/library/dd318693(v=vs.85).aspx |
| // Example: "00000409" is the default en-us keyboard layout. |
| bool SwitchKeyboardLayout(const std::string& input_locale_identifier); |
| #endif // defined(OS_WIN) |
| |
| #if defined(OS_MACOSX) |
| // Selects the input source for the given input source ID. Returns true on |
| // success. |
| // Example: "com.apple.keyboardlayout.US" is the default en-us keyboard layout. |
| bool SwitchKeyboardLayout(const std::string& input_source_id); |
| #endif // defined(OS_MACOSX) |
| |
| } // namespace webdriver |
| |
| #endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_TEST_UTIL_H_ |