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

Side by Side Diff: device/usb/usb_service_android.cc

Issue 2849953003: Use the task scheduler for blocking tasks in the USB service on Linux (Closed)
Patch Set: Remove more passing of the SequencedTaskRunner Created 3 years, 7 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/usb/usb_service_android.h ('k') | device/usb/usb_service_linux.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/usb/usb_service_android.h" 5 #include "device/usb/usb_service_android.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/android/context_utils.h" 10 #include "base/android/context_utils.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/sequenced_task_runner.h" 13 #include "base/sequenced_task_runner.h"
14 #include "components/device_event_log/device_event_log.h" 14 #include "components/device_event_log/device_event_log.h"
15 #include "device/usb/usb_device_android.h" 15 #include "device/usb/usb_device_android.h"
16 #include "jni/ChromeUsbService_jni.h" 16 #include "jni/ChromeUsbService_jni.h"
17 17
18 using base::android::AttachCurrentThread; 18 using base::android::AttachCurrentThread;
19 using base::android::JavaRef; 19 using base::android::JavaRef;
20 using base::android::ScopedJavaLocalRef; 20 using base::android::ScopedJavaLocalRef;
21 21
22 namespace device { 22 namespace device {
23 23
24 // static 24 // static
25 bool UsbServiceAndroid::RegisterJNI(JNIEnv* env) { 25 bool UsbServiceAndroid::RegisterJNI(JNIEnv* env) {
26 return RegisterNativesImpl(env); // Generated in ChromeUsbService_jni.h 26 return RegisterNativesImpl(env); // Generated in ChromeUsbService_jni.h
27 } 27 }
28 28
29 UsbServiceAndroid::UsbServiceAndroid( 29 UsbServiceAndroid::UsbServiceAndroid()
30 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) 30 : UsbService(nullptr), weak_factory_(this) {
31 : UsbService(blocking_task_runner), weak_factory_(this) {
32 JNIEnv* env = AttachCurrentThread(); 31 JNIEnv* env = AttachCurrentThread();
33 j_object_.Reset( 32 j_object_.Reset(
34 Java_ChromeUsbService_create(env, base::android::GetApplicationContext(), 33 Java_ChromeUsbService_create(env, base::android::GetApplicationContext(),
35 reinterpret_cast<jlong>(this))); 34 reinterpret_cast<jlong>(this)));
36 ScopedJavaLocalRef<jobjectArray> devices = 35 ScopedJavaLocalRef<jobjectArray> devices =
37 Java_ChromeUsbService_getDevices(env, j_object_); 36 Java_ChromeUsbService_getDevices(env, j_object_);
38 jsize length = env->GetArrayLength(devices.obj()); 37 jsize length = env->GetArrayLength(devices.obj());
39 for (jsize i = 0; i < length; ++i) { 38 for (jsize i = 0; i < length; ++i) {
40 ScopedJavaLocalRef<jobject> usb_device( 39 ScopedJavaLocalRef<jobject> usb_device(
41 env, env->GetObjectArrayElement(devices.obj(), i)); 40 env, env->GetObjectArrayElement(devices.obj(), i));
42 scoped_refptr<UsbDeviceAndroid> device(UsbDeviceAndroid::Create( 41 scoped_refptr<UsbDeviceAndroid> device =
43 env, weak_factory_.GetWeakPtr(), blocking_task_runner, usb_device)); 42 UsbDeviceAndroid::Create(env, weak_factory_.GetWeakPtr(), usb_device);
44 AddDevice(device); 43 AddDevice(device);
45 } 44 }
46 } 45 }
47 46
48 UsbServiceAndroid::~UsbServiceAndroid() { 47 UsbServiceAndroid::~UsbServiceAndroid() {
49 JNIEnv* env = AttachCurrentThread(); 48 JNIEnv* env = AttachCurrentThread();
50 Java_ChromeUsbService_close(env, j_object_); 49 Java_ChromeUsbService_close(env, j_object_);
51 } 50 }
52 51
53 void UsbServiceAndroid::DeviceAttached(JNIEnv* env, 52 void UsbServiceAndroid::DeviceAttached(JNIEnv* env,
54 const JavaRef<jobject>& caller, 53 const JavaRef<jobject>& caller,
55 const JavaRef<jobject>& usb_device) { 54 const JavaRef<jobject>& usb_device) {
56 scoped_refptr<UsbDeviceAndroid> device(UsbDeviceAndroid::Create( 55 scoped_refptr<UsbDeviceAndroid> device =
57 env, weak_factory_.GetWeakPtr(), blocking_task_runner(), usb_device)); 56 UsbDeviceAndroid::Create(env, weak_factory_.GetWeakPtr(), usb_device);
58 AddDevice(device); 57 AddDevice(device);
59 NotifyDeviceAdded(device); 58 NotifyDeviceAdded(device);
60 } 59 }
61 60
62 void UsbServiceAndroid::DeviceDetached(JNIEnv* env, 61 void UsbServiceAndroid::DeviceDetached(JNIEnv* env,
63 const JavaRef<jobject>& caller, 62 const JavaRef<jobject>& caller,
64 jint device_id) { 63 jint device_id) {
65 auto it = devices_by_id_.find(device_id); 64 auto it = devices_by_id_.find(device_id);
66 if (it == devices_by_id_.end()) 65 if (it == devices_by_id_.end())
67 return; 66 return;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 106
108 USB_LOG(USER) << "USB device added: id=" << device->device_id() 107 USB_LOG(USER) << "USB device added: id=" << device->device_id()
109 << " vendor=" << device->vendor_id() << " \"" 108 << " vendor=" << device->vendor_id() << " \""
110 << device->manufacturer_string() 109 << device->manufacturer_string()
111 << "\", product=" << device->product_id() << " \"" 110 << "\", product=" << device->product_id() << " \""
112 << device->product_string() << "\", serial=\"" 111 << device->product_string() << "\", serial=\""
113 << device->serial_number() << "\", guid=" << device->guid(); 112 << device->serial_number() << "\", guid=" << device->guid();
114 } 113 }
115 114
116 } // namespace device 115 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_service_android.h ('k') | device/usb/usb_service_linux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698