Chromium Code Reviews| 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..6c80959013538e2873192a2efb283281146d8666 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,45 @@ class MidiManagerAlsa : public MidiManager { |
| double timestamp) override; |
| private: |
| + FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, ExtractManufacturer); |
| + FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, UdevEscape); |
| + |
| + class CardInfo { |
| + public: |
| + CardInfo(const MidiManagerAlsa* outer, |
| + const std::string& alsa_name, const std::string& alsa_longname, |
| + const std::string& alsa_driver, int card_index); |
| + ~CardInfo(); |
| + |
| + const std::string name() const; |
| + const std::string manufacturer() const; |
| + const std::string driver() const; |
| + const std::string udev_id_path() const; |
| + const std::string udev_id_id() const; |
| + |
| + private: |
| + FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, ExtractManufacturer); |
| + FRIEND_TEST_ALL_PREFIXES(MidiManagerAlsaTest, UdevEscape); |
| + |
| + // Extracts the manufacturer using heuristics and a variety of sources. |
| + static std::string ExtractManufacturerString( |
| + 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); |
| + |
| + // TODO(agoode) Move this into a common place. Maybe device/udev_linux? |
|
Takashi Toyoshima
2015/03/06 08:00:12
Nit; ":" after TODO(agoode)
Adam Goode
2015/03/06 15:25:02
Done.
|
| + // Decodes just \xXX in strings. |
| + static std::string UnescapeUdev(const std::string& s); |
| + |
| + std::string alsa_name_; |
| + std::string manufacturer_; |
| + std::string driver_; |
| + std::string udev_id_path_; |
| + std::string udev_id_id_; |
| + }; |
| + |
| // An internal callback that runs on MidiSendThread. |
| void SendMidiData(uint32 port_index, |
| const std::vector<uint8>& data); |
| @@ -55,6 +99,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_; |