Index: media/midi/midi_manager_alsa.h |
diff --git a/media/midi/midi_manager_alsa.h b/media/midi/midi_manager_alsa.h |
index cbe03c5fee776a69e1ec715e40a71a7edd936c1e..d75b47e48baf9b5b1d71a3566e8d0a0f86efdbd2 100644 |
--- a/media/midi/midi_manager_alsa.h |
+++ b/media/midi/midi_manager_alsa.h |
@@ -10,14 +10,19 @@ |
#include <vector> |
#include "base/basictypes.h" |
+#include "base/gtest_prod_util.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/synchronization/lock.h" |
#include "base/threading/thread.h" |
#include "media/midi/midi_manager.h" |
+#if defined(USE_UDEV) |
+#include "device/udev_linux/scoped_udev.h" |
+#endif // defined(USE_UDEV) |
+ |
namespace media { |
-class MidiManagerAlsa : public MidiManager { |
+class MEDIA_EXPORT MidiManagerAlsa : public MidiManager { |
public: |
MidiManagerAlsa(); |
~MidiManagerAlsa() override; |
@@ -30,6 +35,9 @@ class MidiManagerAlsa : public MidiManager { |
double timestamp) override; |
private: |
+ FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, ExtractManufacturer); |
+ FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, UdevEscape); |
+ |
// An internal callback that runs on MidiSendThread. |
void SendMidiData(uint32 port_index, |
const std::vector<uint8>& data); |
@@ -37,6 +45,17 @@ class MidiManagerAlsa : public MidiManager { |
void EventReset(); |
void EventLoop(); |
+ // Extracts the manufacturer using heuristics and a variety of sources. |
+ static std::string ExtractManufacturer( |
+ const std::string& udev_id_vendor_enc, |
+ const std::string& udev_id_vendor_id, |
+ const std::string& udev_id_vendor_from_database, |
+ const std::string& alsa_name, |
+ const std::string& alsa_longname); |
+ |
+ // Decodes just \xXX in strings. |
+ static std::string UnescapeUdev(const std::string& s); |
+ |
// Alsa seq handles. |
snd_seq_t* in_client_; |
snd_seq_t* out_client_; |
@@ -55,6 +74,11 @@ class MidiManagerAlsa : public MidiManager { |
typedef std::vector<snd_midi_event_t*> EncoderList; |
EncoderList encoders_; |
+ // udev, for querying hardware devices. |
+#if defined(USE_UDEV) |
+ device::ScopedUdevPtr udev_; |
+#endif // defined(USE_UDEV) |
+ |
base::Thread send_thread_; |
base::Thread event_thread_; |