| Index: ui/events/test/keyboard_layout_mac.cc
|
| diff --git a/ui/events/test/keyboard_layout_mac.cc b/ui/events/test/keyboard_layout_mac.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1b9e3237c9dcede02b471ecd45119d28d2b89b75
|
| --- /dev/null
|
| +++ b/ui/events/test/keyboard_layout_mac.cc
|
| @@ -0,0 +1,46 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#include "ui/events/test/keyboard_layout.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +namespace ui {
|
| +
|
| +PlatformKeyboardLayout GetPlatformKeyboardLayout(KeyboardLayout layout) {
|
| + // Right now tests only need US English. If other layouts need to be
|
| + // supported in the future this code should be extended.
|
| + DCHECK_EQ(KEYBOARD_LAYOUT_ENGLISH_US, layout);
|
| +
|
| + const char kUsInputSourceId[] = "com.apple.keylayout.US";
|
| +
|
| + base::ScopedCFTypeRef<CFMutableDictionaryRef> input_source_list_filter(
|
| + CFDictionaryCreateMutable(kCFAllocatorDefault, 1,
|
| + &kCFTypeDictionaryKeyCallBacks,
|
| + &kCFTypeDictionaryValueCallBacks));
|
| + base::ScopedCFTypeRef<CFStringRef> input_source_id_ref(
|
| + CFStringCreateWithCString(kCFAllocatorDefault, kUsInputSourceId,
|
| + kCFStringEncodingUTF8));
|
| + CFDictionaryAddValue(input_source_list_filter, kTISPropertyInputSourceID,
|
| + input_source_id_ref);
|
| + base::ScopedCFTypeRef<CFArrayRef> input_source_list(
|
| + TISCreateInputSourceList(input_source_list_filter, true));
|
| + if (CFArrayGetCount(input_source_list) != 1)
|
| + return PlatformKeyboardLayout();
|
| +
|
| + return PlatformKeyboardLayout(
|
| + (TISInputSourceRef)CFArrayGetValueAtIndex(input_source_list, 0));
|
| +}
|
| +
|
| +PlatformKeyboardLayout ScopedKeyboardLayout::GetActiveLayout() {
|
| + return PlatformKeyboardLayout(TISCopyCurrentKeyboardInputSource());
|
| +}
|
| +
|
| +void ScopedKeyboardLayout::ActivateLayout(PlatformKeyboardLayout layout) {
|
| + DCHECK(layout);
|
| + OSStatus result = TISSelectInputSource(layout);
|
| + DCHECK_EQ(noErr, result);
|
| +}
|
| +
|
| +} // namespace ui
|
|
|