OLD | NEW |
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 "media/midi/midi_device_android.h" | 5 #include "media/midi/midi_device_android.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
| 10 #include "base/memory/ptr_util.h" |
10 #include "jni/MidiDeviceAndroid_jni.h" | 11 #include "jni/MidiDeviceAndroid_jni.h" |
11 #include "media/midi/midi_output_port_android.h" | 12 #include "media/midi/midi_output_port_android.h" |
12 | 13 |
13 using base::android::ScopedJavaLocalRef; | 14 using base::android::ScopedJavaLocalRef; |
14 | 15 |
15 namespace midi { | 16 namespace midi { |
16 | 17 |
17 namespace { | 18 namespace { |
18 | 19 |
19 std::string ConvertMaybeJavaString(JNIEnv* env, | 20 std::string ConvertMaybeJavaString(JNIEnv* env, |
20 const base::android::JavaRef<jstring>& str) { | 21 const base::android::JavaRef<jstring>& str) { |
21 if (!str.obj()) | 22 if (!str.obj()) |
22 return std::string(); | 23 return std::string(); |
23 return base::android::ConvertJavaStringToUTF8(str); | 24 return base::android::ConvertJavaStringToUTF8(str); |
24 } | 25 } |
25 } | 26 } |
26 | 27 |
27 MidiDeviceAndroid::MidiDeviceAndroid(JNIEnv* env, | 28 MidiDeviceAndroid::MidiDeviceAndroid(JNIEnv* env, |
28 jobject raw_device, | 29 jobject raw_device, |
29 MidiInputPortAndroid::Delegate* delegate) | 30 MidiInputPortAndroid::Delegate* delegate) |
30 : raw_device_(env, raw_device) { | 31 : raw_device_(env, raw_device) { |
31 ScopedJavaLocalRef<jobjectArray> raw_input_ports = | 32 ScopedJavaLocalRef<jobjectArray> raw_input_ports = |
32 Java_MidiDeviceAndroid_getInputPorts(env, raw_device); | 33 Java_MidiDeviceAndroid_getInputPorts(env, raw_device); |
33 jsize num_input_ports = env->GetArrayLength(raw_input_ports.obj()); | 34 jsize num_input_ports = env->GetArrayLength(raw_input_ports.obj()); |
34 | 35 |
35 for (jsize i = 0; i < num_input_ports; ++i) { | 36 for (jsize i = 0; i < num_input_ports; ++i) { |
36 jobject port = env->GetObjectArrayElement(raw_input_ports.obj(), i); | 37 jobject port = env->GetObjectArrayElement(raw_input_ports.obj(), i); |
37 input_ports_.push_back(new MidiInputPortAndroid(env, port, delegate)); | 38 input_ports_.push_back( |
| 39 base::MakeUnique<MidiInputPortAndroid>(env, port, delegate)); |
38 } | 40 } |
39 | 41 |
40 ScopedJavaLocalRef<jobjectArray> raw_output_ports = | 42 ScopedJavaLocalRef<jobjectArray> raw_output_ports = |
41 Java_MidiDeviceAndroid_getOutputPorts(env, raw_device); | 43 Java_MidiDeviceAndroid_getOutputPorts(env, raw_device); |
42 jsize num_output_ports = env->GetArrayLength(raw_output_ports.obj()); | 44 jsize num_output_ports = env->GetArrayLength(raw_output_ports.obj()); |
43 for (jsize i = 0; i < num_output_ports; ++i) { | 45 for (jsize i = 0; i < num_output_ports; ++i) { |
44 jobject port = env->GetObjectArrayElement(raw_output_ports.obj(), i); | 46 jobject port = env->GetObjectArrayElement(raw_output_ports.obj(), i); |
45 output_ports_.push_back(new MidiOutputPortAndroid(env, port)); | 47 output_ports_.push_back(base::MakeUnique<MidiOutputPortAndroid>(env, port)); |
46 } | 48 } |
47 } | 49 } |
48 | 50 |
49 MidiDeviceAndroid::~MidiDeviceAndroid() {} | 51 MidiDeviceAndroid::~MidiDeviceAndroid() {} |
50 | 52 |
51 std::string MidiDeviceAndroid::GetManufacturer() { | 53 std::string MidiDeviceAndroid::GetManufacturer() { |
52 JNIEnv* env = base::android::AttachCurrentThread(); | 54 JNIEnv* env = base::android::AttachCurrentThread(); |
53 return ConvertMaybeJavaString( | 55 return ConvertMaybeJavaString( |
54 env, Java_MidiDeviceAndroid_getManufacturer(env, raw_device_)); | 56 env, Java_MidiDeviceAndroid_getManufacturer(env, raw_device_)); |
55 } | 57 } |
56 | 58 |
57 std::string MidiDeviceAndroid::GetProductName() { | 59 std::string MidiDeviceAndroid::GetProductName() { |
58 JNIEnv* env = base::android::AttachCurrentThread(); | 60 JNIEnv* env = base::android::AttachCurrentThread(); |
59 return ConvertMaybeJavaString( | 61 return ConvertMaybeJavaString( |
60 env, Java_MidiDeviceAndroid_getProduct(env, raw_device_)); | 62 env, Java_MidiDeviceAndroid_getProduct(env, raw_device_)); |
61 } | 63 } |
62 | 64 |
63 std::string MidiDeviceAndroid::GetDeviceVersion() { | 65 std::string MidiDeviceAndroid::GetDeviceVersion() { |
64 JNIEnv* env = base::android::AttachCurrentThread(); | 66 JNIEnv* env = base::android::AttachCurrentThread(); |
65 return ConvertMaybeJavaString( | 67 return ConvertMaybeJavaString( |
66 env, Java_MidiDeviceAndroid_getVersion(env, raw_device_)); | 68 env, Java_MidiDeviceAndroid_getVersion(env, raw_device_)); |
67 } | 69 } |
68 | 70 |
69 } // namespace midi | 71 } // namespace midi |
OLD | NEW |