Index: content/browser/media/midi_host.cc |
diff --git a/content/browser/media/midi_host.cc b/content/browser/media/midi_host.cc |
index c26a719471887ba6e885690627c00634714fb6c2..1823431f35c54bf322c651a0506d760d8413c0bb 100644 |
--- a/content/browser/media/midi_host.cc |
+++ b/content/browser/media/midi_host.cc |
@@ -56,12 +56,12 @@ MidiHost::MidiHost(int renderer_process_id, |
sent_bytes_in_flight_(0), |
bytes_sent_since_last_acknowledgement_(0), |
output_port_count_(0) { |
- CHECK(midi_manager_); |
+ DCHECK(midi_manager_); |
} |
MidiHost::~MidiHost() { |
// Close an open session, or abort opening a session. |
- if (is_session_requested_) |
+ if (is_session_requested_ && midi_manager_) |
midi_manager_->EndSession(this); |
} |
@@ -84,7 +84,8 @@ bool MidiHost::OnMessageReceived(const IPC::Message& message) { |
void MidiHost::OnStartSession() { |
is_session_requested_ = true; |
- midi_manager_->StartSession(this); |
+ if (midi_manager_) |
+ midi_manager_->StartSession(this); |
} |
void MidiHost::OnSendData(uint32 port, |
@@ -122,12 +123,14 @@ void MidiHost::OnSendData(uint32 port, |
return; |
sent_bytes_in_flight_ += data.size(); |
} |
- midi_manager_->DispatchSendMidiData(this, port, data, timestamp); |
+ if (midi_manager_) |
+ midi_manager_->DispatchSendMidiData(this, port, data, timestamp); |
} |
void MidiHost::OnEndSession() { |
is_session_requested_ = false; |
- midi_manager_->EndSession(this); |
+ if (midi_manager_) |
+ midi_manager_->EndSession(this); |
} |
void MidiHost::CompleteStartSession(media::midi::Result result) { |
@@ -216,6 +219,10 @@ void MidiHost::AccumulateMidiBytesSent(size_t n) { |
} |
} |
+void MidiHost::Detached() { |
+ midi_manager_ = nullptr; |
+} |
+ |
// static |
bool MidiHost::IsValidWebMIDIData(const std::vector<uint8>& data) { |
bool in_sysex = false; |