Index: content/browser/renderer_host/media/midi_host.h |
diff --git a/content/browser/renderer_host/media/midi_host.h b/content/browser/renderer_host/media/midi_host.h |
index e3b9df1b6bea56f7bc113c223e48c51d18d3974c..153863fe603a748312ce75c1545d9b04305cfd39 100644 |
--- a/content/browser/renderer_host/media/midi_host.h |
+++ b/content/browser/renderer_host/media/midi_host.h |
@@ -7,8 +7,10 @@ |
#include <vector> |
+#include "base/gtest_prod_util.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/scoped_vector.h" |
#include "content/common/content_export.h" |
#include "content/public/browser/browser_message_filter.h" |
#include "content/public/browser/browser_thread.h" |
@@ -16,6 +18,7 @@ |
namespace media { |
class MIDIManager; |
+class MIDIMessageQueue; |
} |
namespace content { |
@@ -33,11 +36,10 @@ class CONTENT_EXPORT MIDIHost |
bool* message_was_ok) OVERRIDE; |
// MIDIManagerClient implementation. |
- virtual void ReceiveMIDIData( |
- uint32 port, |
- const uint8* data, |
- size_t length, |
- double timestamp) OVERRIDE; |
+ virtual void ReceiveMIDIData(uint32 port, |
+ const uint8* data, |
+ size_t length, |
+ double timestamp) OVERRIDE; |
virtual void AccumulateMIDIBytesSent(size_t n) OVERRIDE; |
// Start session to access MIDI hardware. |
@@ -49,13 +51,25 @@ class CONTENT_EXPORT MIDIHost |
double timestamp); |
private: |
+ FRIEND_TEST_ALL_PREFIXES(MIDIHostTest, IsValidWebMIDIData); |
friend class base::DeleteHelper<MIDIHost>; |
friend class BrowserThread; |
virtual ~MIDIHost(); |
+ // Returns true if |data| fulfills the requirements of MIDIOutput.send API |
+ // defined in the WebMIDI spec. |
+ // - |data| must be any number of complete MIDI messages (data abbreviation |
+ // called "running status" is disallowed). |
+ // - 1-byte MIDI realtime messages can be placed at any position of |data|. |
+ static bool IsValidWebMIDIData(const std::vector<uint8>& data); |
+ |
int renderer_process_id_; |
+ // Represents if the renderer has a permission to send/receive MIDI SysEX |
+ // messages. |
+ bool has_sys_ex_permission_; |
+ |
// |midi_manager_| talks to the platform-specific MIDI APIs. |
// It can be NULL if the platform (or our current implementation) |
// does not support MIDI. If not supported then a call to |
@@ -63,6 +77,9 @@ class CONTENT_EXPORT MIDIHost |
// OnSendData() will do nothing. |
media::MIDIManager* const midi_manager_; |
+ // Buffers where data sent from each MIDI input port is stored. |
+ ScopedVector<media::MIDIMessageQueue> received_messages_queues_; |
+ |
// The number of bytes sent to the platform-specific MIDI sending |
// system, but not yet completed. |
size_t sent_bytes_in_flight_; |