Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(845)

Side by Side Diff: device/gamepad/game_controller_data_fetcher_mac.mm

Issue 2808093006: [Device Service] Move Gamepad Blink headers to be part of the Gamepad client library (Closed)
Patch Set: rebase and address comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/gamepad/DEPS ('k') | device/gamepad/gamepad_consumer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/gamepad/game_controller_data_fetcher_mac.h" 5 #include "device/gamepad/game_controller_data_fetcher_mac.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "device/gamepad/gamepad_standard_mappings.h" 13 #include "device/gamepad/gamepad_standard_mappings.h"
14 14
15 #import <GameController/GameController.h> 15 #import <GameController/GameController.h>
16 16
17 using blink::WebGamepad;
18 using blink::WebGamepads;
19
20 namespace device { 17 namespace device {
21 18
22 namespace { 19 namespace {
23 20
24 void CopyNSStringAsUTF16LittleEndian(NSString* src, 21 void CopyNSStringAsUTF16LittleEndian(NSString* src,
25 blink::WebUChar* dest, 22 UChar* dest,
26 size_t dest_len) { 23 size_t dest_len) {
27 NSData* as16 = [src dataUsingEncoding:NSUTF16LittleEndianStringEncoding]; 24 NSData* as16 = [src dataUsingEncoding:NSUTF16LittleEndianStringEncoding];
28 memset(dest, 0, dest_len); 25 memset(dest, 0, dest_len);
29 [as16 getBytes:dest length:dest_len - sizeof(blink::WebUChar)]; 26 [as16 getBytes:dest length:dest_len - sizeof(UChar)];
30 } 27 }
31 28
32 } // namespace 29 } // namespace
33 30
34 GameControllerDataFetcherMac::GameControllerDataFetcherMac() {} 31 GameControllerDataFetcherMac::GameControllerDataFetcherMac() {}
35 32
36 GameControllerDataFetcherMac::~GameControllerDataFetcherMac() {} 33 GameControllerDataFetcherMac::~GameControllerDataFetcherMac() {}
37 34
38 GamepadSource GameControllerDataFetcherMac::source() { 35 GamepadSource GameControllerDataFetcherMac::source() {
39 return Factory::static_source(); 36 return Factory::static_source();
40 } 37 }
41 38
42 void GameControllerDataFetcherMac::GetGamepadData(bool) { 39 void GameControllerDataFetcherMac::GetGamepadData(bool) {
43 NSArray* controllers = [GCController controllers]; 40 NSArray* controllers = [GCController controllers];
44 41
45 for (GCController* controller in controllers) { 42 for (GCController* controller in controllers) {
46 auto extended_gamepad = [controller extendedGamepad]; 43 auto extended_gamepad = [controller extendedGamepad];
47 44
48 // We only support the extendedGamepad profile, the basic gamepad profile 45 // We only support the extendedGamepad profile, the basic gamepad profile
49 // appears to only be for iOS devices. 46 // appears to only be for iOS devices.
50 if (!extended_gamepad) 47 if (!extended_gamepad)
51 continue; 48 continue;
52 49
53 int player_index = [controller playerIndex]; 50 int player_index = [controller playerIndex];
54 PadState* state = GetPadState(player_index); 51 PadState* state = GetPadState(player_index);
55 if (!state) 52 if (!state)
56 continue; 53 continue;
57 54
58 WebGamepad& pad = state->data; 55 Gamepad& pad = state->data;
59 56
60 // This first time we encounter a gamepad, set its name, mapping, and 57 // This first time we encounter a gamepad, set its name, mapping, and
61 // axes/button counts. This information is static, so it only needs to be 58 // axes/button counts. This information is static, so it only needs to be
62 // done once. 59 // done once.
63 if (state->active_state == GAMEPAD_NEWLY_ACTIVE) { 60 if (state->active_state == GAMEPAD_NEWLY_ACTIVE) {
64 NSString* vendorName = [controller vendorName]; 61 NSString* vendorName = [controller vendorName];
65 NSString* ident = 62 NSString* ident =
66 [NSString stringWithFormat:@"%@ (STANDARD GAMEPAD)", 63 [NSString stringWithFormat:@"%@ (STANDARD GAMEPAD)",
67 vendorName ? vendorName : @"Unknown"]; 64 vendorName ? vendorName : @"Unknown"];
68 CopyNSStringAsUTF16LittleEndian(ident, pad.id, sizeof(pad.id)); 65 CopyNSStringAsUTF16LittleEndian(ident, pad.id, sizeof(pad.id));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 BUTTON(BUTTON_INDEX_DPAD_UP, [[extended_gamepad dpad] up]); 101 BUTTON(BUTTON_INDEX_DPAD_UP, [[extended_gamepad dpad] up]);
105 BUTTON(BUTTON_INDEX_DPAD_DOWN, [[extended_gamepad dpad] down]); 102 BUTTON(BUTTON_INDEX_DPAD_DOWN, [[extended_gamepad dpad] down]);
106 BUTTON(BUTTON_INDEX_DPAD_LEFT, [[extended_gamepad dpad] left]); 103 BUTTON(BUTTON_INDEX_DPAD_LEFT, [[extended_gamepad dpad] left]);
107 BUTTON(BUTTON_INDEX_DPAD_RIGHT, [[extended_gamepad dpad] right]); 104 BUTTON(BUTTON_INDEX_DPAD_RIGHT, [[extended_gamepad dpad] right]);
108 105
109 #undef BUTTON 106 #undef BUTTON
110 } 107 }
111 } 108 }
112 109
113 } // namespace device 110 } // namespace device
OLDNEW
« no previous file with comments | « device/gamepad/DEPS ('k') | device/gamepad/gamepad_consumer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698