| Index: content/browser/renderer_host/media/midi_host.cc
|
| diff --git a/content/browser/renderer_host/media/midi_host.cc b/content/browser/renderer_host/media/midi_host.cc
|
| index e03b3dfba12027f01ba30c98c16d8e4021028f43..0467404bda31a6c2946ed25bdaeefbaadb2d143f 100644
|
| --- a/content/browser/renderer_host/media/midi_host.cc
|
| +++ b/content/browser/renderer_host/media/midi_host.cc
|
| @@ -136,13 +136,16 @@ void MIDIHost::ReceiveMIDIData(
|
| double timestamp) {
|
| TRACE_EVENT0("midi", "MIDIHost::ReceiveMIDIData");
|
|
|
| - // For now disallow all System Exclusive messages even if we
|
| - // have permission.
|
| - // TODO(toyoshim): allow System Exclusive if browser has granted
|
| - // this client access. We'll likely need to pass a GURL
|
| - // here to compare against our permissions.
|
| - if (length > 0 && data[0] >= kSysExMessage)
|
| + // Check a process security policy to receive a system exclusive message.
|
| + if (length > 0 && data[0] >= kSysExMessage) {
|
| + if (!ChildProcessSecurityPolicyImpl::GetInstance()->CanSendMIDISysExMessage(
|
| + renderer_process_id_)) {
|
| + // MIDI devices may send a system exclusive messages even if the renderer
|
| + // doesn't have a permission to receive it. Don't kill the renderer as
|
| + // OnSendData() does.
|
| return;
|
| + }
|
| + }
|
|
|
| // Send to the renderer.
|
| std::vector<uint8> v(data, data + length);
|
|
|