| 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..2f9c6fdcf906a59094a9048432ec6661a1eae06b
|
| --- /dev/null
|
| +++ b/ui/events/test/keyboard_layout_mac.cc
|
| @@ -0,0 +1,42 @@
|
| +// 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 input_source_id[] = "com.apple.keylayout.US";
|
| +
|
| + base::ScopedCFTypeRef<CFMutableDictionaryRef> filter_dict(
|
| + CFDictionaryCreateMutable(kCFAllocatorDefault, 1,
|
| + &kCFTypeDictionaryKeyCallBacks,
|
| + &kCFTypeDictionaryValueCallBacks));
|
| + base::ScopedCFTypeRef<CFStringRef> id_ref(CFStringCreateWithCString(
|
| + kCFAllocatorDefault, input_source_id, kCFStringEncodingUTF8));
|
| + CFDictionaryAddValue(filter_dict, kTISPropertyInputSourceID, id_ref);
|
| + base::ScopedCFTypeRef<CFArrayRef> sources(
|
| + TISCreateInputSourceList(filter_dict, true));
|
| + if (CFArrayGetCount(sources) != 1)
|
| + return PlatformKeyboardLayout();
|
| +
|
| + return PlatformKeyboardLayout(
|
| + (TISInputSourceRef)CFArrayGetValueAtIndex(sources, 0));
|
| +}
|
| +
|
| +PlatformKeyboardLayout ScopedKeyboardLayout::GetActiveLayout() {
|
| + return PlatformKeyboardLayout(TISCopyCurrentKeyboardInputSource());
|
| +}
|
| +
|
| +bool ScopedKeyboardLayout::ActivateLayout(PlatformKeyboardLayout layout) {
|
| + DCHECK(layout);
|
| + return TISSelectInputSource(layout) == noErr;
|
| +}
|
| +
|
| +} // namespace ui
|
|
|