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

Side by Side Diff: device/hid/hid_connection_win.cc

Issue 947663002: Log device/hid messages to chrome://device-log. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarified destructor behavior, cleaned up OS X error logging. Created 5 years, 10 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
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 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/hid/hid_connection_win.h" 5 #include "device/hid/hid_connection_win.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file.h" 10 #include "base/files/file.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/numerics/safe_conversions.h" 12 #include "base/numerics/safe_conversions.h"
13 #include "base/profiler/scoped_tracker.h" 13 #include "base/profiler/scoped_tracker.h"
14 #include "base/win/object_watcher.h" 14 #include "base/win/object_watcher.h"
15 #include "components/device_event_log/device_event_log.h"
15 16
16 #define INITGUID 17 #define INITGUID
17 18
18 #include <windows.h> 19 #include <windows.h>
19 #include <hidclass.h> 20 #include <hidclass.h>
20 21
21 extern "C" { 22 extern "C" {
22 #include <hidsdi.h> 23 #include <hidsdi.h>
23 } 24 }
24 25
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 } 77 }
77 78
78 void PendingHidTransfer::TakeResultFromWindowsAPI(BOOL result) { 79 void PendingHidTransfer::TakeResultFromWindowsAPI(BOOL result) {
79 if (result) { 80 if (result) {
80 callback_.Run(this, true); 81 callback_.Run(this, true);
81 } else if (GetLastError() == ERROR_IO_PENDING) { 82 } else if (GetLastError() == ERROR_IO_PENDING) {
82 base::MessageLoop::current()->AddDestructionObserver(this); 83 base::MessageLoop::current()->AddDestructionObserver(this);
83 AddRef(); 84 AddRef();
84 watcher_.StartWatching(event_.Get(), this); 85 watcher_.StartWatching(event_.Get(), this);
85 } else { 86 } else {
86 VPLOG(1) << "HID transfer failed"; 87 HID_PLOG(EVENT) << "HID transfer failed";
87 callback_.Run(this, false); 88 callback_.Run(this, false);
88 } 89 }
89 } 90 }
90 91
91 void PendingHidTransfer::OnObjectSignaled(HANDLE event_handle) { 92 void PendingHidTransfer::OnObjectSignaled(HANDLE event_handle) {
92 // TODO(vadimt): Remove ScopedTracker below once crbug.com/418183 is fixed. 93 // TODO(vadimt): Remove ScopedTracker below once crbug.com/418183 is fixed.
93 tracked_objects::ScopedTracker tracking_profile( 94 tracked_objects::ScopedTracker tracking_profile(
94 FROM_HERE_WITH_EXPLICIT_FUNCTION( 95 FROM_HERE_WITH_EXPLICIT_FUNCTION(
95 "418183 PendingHidTransfer::OnObjectSignaled")); 96 "418183 PendingHidTransfer::OnObjectSignaled"));
96 97
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 if (!signaled) { 210 if (!signaled) {
210 callback.Run(false, NULL, 0); 211 callback.Run(false, NULL, 0);
211 return; 212 return;
212 } 213 }
213 214
214 DWORD bytes_transferred; 215 DWORD bytes_transferred;
215 if (GetOverlappedResult( 216 if (GetOverlappedResult(
216 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { 217 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) {
217 CompleteRead(buffer, bytes_transferred, callback); 218 CompleteRead(buffer, bytes_transferred, callback);
218 } else { 219 } else {
219 VPLOG(1) << "HID read failed"; 220 HID_PLOG(EVENT) << "HID read failed";
220 callback.Run(false, NULL, 0); 221 callback.Run(false, NULL, 0);
221 } 222 }
222 } 223 }
223 224
224 void HidConnectionWin::OnReadFeatureComplete( 225 void HidConnectionWin::OnReadFeatureComplete(
225 scoped_refptr<net::IOBuffer> buffer, 226 scoped_refptr<net::IOBuffer> buffer,
226 const ReadCallback& callback, 227 const ReadCallback& callback,
227 PendingHidTransfer* transfer, 228 PendingHidTransfer* transfer,
228 bool signaled) { 229 bool signaled) {
229 if (!signaled) { 230 if (!signaled) {
230 callback.Run(false, NULL, 0); 231 callback.Run(false, NULL, 0);
231 return; 232 return;
232 } 233 }
233 234
234 DWORD bytes_transferred; 235 DWORD bytes_transferred;
235 if (GetOverlappedResult( 236 if (GetOverlappedResult(
236 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { 237 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) {
237 callback.Run(true, buffer, bytes_transferred); 238 callback.Run(true, buffer, bytes_transferred);
238 } else { 239 } else {
239 VPLOG(1) << "HID read failed"; 240 HID_PLOG(EVENT) << "HID read failed";
240 callback.Run(false, NULL, 0); 241 callback.Run(false, NULL, 0);
241 } 242 }
242 } 243 }
243 244
244 void HidConnectionWin::OnWriteComplete(const WriteCallback& callback, 245 void HidConnectionWin::OnWriteComplete(const WriteCallback& callback,
245 PendingHidTransfer* transfer, 246 PendingHidTransfer* transfer,
246 bool signaled) { 247 bool signaled) {
247 if (!signaled) { 248 if (!signaled) {
248 callback.Run(false); 249 callback.Run(false);
249 return; 250 return;
250 } 251 }
251 252
252 DWORD bytes_transferred; 253 DWORD bytes_transferred;
253 if (GetOverlappedResult( 254 if (GetOverlappedResult(
254 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { 255 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) {
255 callback.Run(true); 256 callback.Run(true);
256 } else { 257 } else {
257 VPLOG(1) << "HID write failed"; 258 HID_PLOG(EVENT) << "HID write failed";
258 callback.Run(false); 259 callback.Run(false);
259 } 260 }
260 } 261 }
261 262
262 } // namespace device 263 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698