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

Unified Diff: media/midi/midi_manager_alsa.h

Issue 968663004: Improve MidiManagerAlsa manufacturer reporting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@udev
Patch Set: Remove use of banned R"(...)" Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698