Relanding this change. The bug 332430 which caused this to be reverted will be addres...
[chromium-blink-merge.git] / device / hid / hid_utils_mac.cc
blob46605d87bdb2a12fa165e54901b822a6a5433f68
1 // Copyright 2014 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.
5 #include "device/hid/hid_utils_mac.h"
7 #include "base/mac/foundation_util.h"
8 #include "base/strings/sys_string_conversions.h"
10 namespace device {
12 int32_t GetHidIntProperty(IOHIDDeviceRef device, CFStringRef key) {
13 int32_t value;
14 if (TryGetHidIntProperty(device, key, &value))
15 return value;
16 return 0;
19 std::string GetHidStringProperty(IOHIDDeviceRef device, CFStringRef key) {
20 std::string value;
21 TryGetHidStringProperty(device, key, &value);
22 return value;
25 bool TryGetHidIntProperty(IOHIDDeviceRef device,
26 CFStringRef key,
27 int32_t* result) {
28 CFNumberRef ref = base::mac::CFCast<CFNumberRef>(
29 IOHIDDeviceGetProperty(device, key));
30 return ref && CFNumberGetValue(ref, kCFNumberSInt32Type, result);
33 bool TryGetHidStringProperty(IOHIDDeviceRef device,
34 CFStringRef key,
35 std::string* result) {
36 CFStringRef ref = base::mac::CFCast<CFStringRef>(
37 IOHIDDeviceGetProperty(device, key));
38 if (!ref) {
39 return false;
41 *result = base::SysCFStringRefToUTF8(ref);
42 return true;
45 } // namespace device