blob: 53556d3ce52429d4ead3be8f5fcdc548e57561a2 [file] [log] [blame]
yhiranobc742d82015-09-17 07:41:44 -07001// Copyright 2015 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.
4
5#ifndef MEDIA_MIDI_MIDI_DEVICE_ANDROID_H_
6#define MEDIA_MIDI_MIDI_DEVICE_ANDROID_H_
7
8#include <jni.h>
xiaofeng.zhang06152d82017-05-21 04:39:34 -07009#include <memory>
yhiranobc742d82015-09-17 07:41:44 -070010#include <string>
xiaofeng.zhang06152d82017-05-21 04:39:34 -070011#include <vector>
yhiranobc742d82015-09-17 07:41:44 -070012
13#include "base/android/scoped_java_ref.h"
yhiranobc742d82015-09-17 07:41:44 -070014#include "media/midi/midi_input_port_android.h"
15
yhiranobc742d82015-09-17 07:41:44 -070016namespace midi {
17
18class MidiOutputPortAndroid;
19
20class MidiDeviceAndroid final {
21 public:
22 MidiDeviceAndroid(JNIEnv* env,
Torne (Richard Coles)7527ac62017-07-31 21:17:01 +000023 const base::android::JavaRef<jobject>& raw_device,
yhiranobc742d82015-09-17 07:41:44 -070024 MidiInputPortAndroid::Delegate* delegate);
25 ~MidiDeviceAndroid();
26
27 std::string GetManufacturer();
28 std::string GetProductName();
29 std::string GetDeviceVersion();
30
xiaofeng.zhang06152d82017-05-21 04:39:34 -070031 const std::vector<std::unique_ptr<MidiInputPortAndroid>>& input_ports()
32 const {
yhiranobc742d82015-09-17 07:41:44 -070033 return input_ports_;
34 }
xiaofeng.zhang06152d82017-05-21 04:39:34 -070035 const std::vector<std::unique_ptr<MidiOutputPortAndroid>>& output_ports()
36 const {
yhiranobc742d82015-09-17 07:41:44 -070037 return output_ports_;
38 }
39 bool HasRawDevice(JNIEnv* env, jobject raw_device) const {
40 return env->IsSameObject(raw_device_.obj(), raw_device);
41 }
42
yhiranobc742d82015-09-17 07:41:44 -070043 private:
44 base::android::ScopedJavaGlobalRef<jobject> raw_device_;
xiaofeng.zhang06152d82017-05-21 04:39:34 -070045 std::vector<std::unique_ptr<MidiInputPortAndroid>> input_ports_;
46 std::vector<std::unique_ptr<MidiOutputPortAndroid>> output_ports_;
yhiranobc742d82015-09-17 07:41:44 -070047};
48
49} // namespace midi
yhiranobc742d82015-09-17 07:41:44 -070050
51#endif // MEDIA_MIDI_MIDI_DEVICE_ANDROID_H_