| Index: content/renderer/media/midi_message_filter.cc
|
| diff --git a/content/renderer/media/midi_message_filter.cc b/content/renderer/media/midi_message_filter.cc
|
| index 07b85436e654388e82c9d8b57682801c17a2c471..ceb4f08f9846c5d7eb846f8dd3c07a96327eee7f 100644
|
| --- a/content/renderer/media/midi_message_filter.cc
|
| +++ b/content/renderer/media/midi_message_filter.cc
|
| @@ -7,7 +7,7 @@
|
| #include <algorithm>
|
|
|
| #include "base/bind.h"
|
| -#include "base/message_loop/message_loop_proxy.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "content/common/media/midi_messages.h"
|
| @@ -25,10 +25,10 @@ namespace content {
|
|
|
| // TODO(crbug.com/425389): Rewrite this class as a RenderFrameObserver.
|
| MidiMessageFilter::MidiMessageFilter(
|
| - const scoped_refptr<base::MessageLoopProxy>& io_message_loop)
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
|
| : sender_(nullptr),
|
| - io_message_loop_(io_message_loop),
|
| - main_message_loop_(base::MessageLoopProxy::current()),
|
| + io_task_runner_(io_task_runner),
|
| + main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| session_result_(media::midi::MIDI_NOT_INITIALIZED),
|
| unacknowledged_bytes_sent_(0u) {
|
| }
|
| @@ -36,19 +36,20 @@ MidiMessageFilter::MidiMessageFilter(
|
| MidiMessageFilter::~MidiMessageFilter() {}
|
|
|
| void MidiMessageFilter::AddClient(blink::WebMIDIAccessorClient* client) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| TRACE_EVENT0("midi", "MidiMessageFilter::AddClient");
|
| clients_waiting_session_queue_.push_back(client);
|
| if (session_result_ != media::midi::MIDI_NOT_INITIALIZED) {
|
| HandleClientAdded(session_result_);
|
| } else if (clients_waiting_session_queue_.size() == 1u) {
|
| - io_message_loop_->PostTask(FROM_HERE,
|
| + io_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&MidiMessageFilter::StartSessionOnIOThread, this));
|
| }
|
| }
|
|
|
| void MidiMessageFilter::RemoveClient(blink::WebMIDIAccessorClient* client) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| clients_.erase(client);
|
| ClientsQueue::iterator it = std::find(clients_waiting_session_queue_.begin(),
|
| clients_waiting_session_queue_.end(),
|
| @@ -59,8 +60,8 @@ void MidiMessageFilter::RemoveClient(blink::WebMIDIAccessorClient* client) {
|
| session_result_ = media::midi::MIDI_NOT_INITIALIZED;
|
| inputs_.clear();
|
| outputs_.clear();
|
| - io_message_loop_->PostTask(FROM_HERE,
|
| - base::Bind(&MidiMessageFilter::EndSessionOnIOThread, this));
|
| + io_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::EndSessionOnIOThread, this));
|
| }
|
| }
|
|
|
| @@ -68,7 +69,7 @@ void MidiMessageFilter::SendMidiData(uint32 port,
|
| const uint8* data,
|
| size_t length,
|
| double timestamp) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| if ((kMaxUnacknowledgedBytesSent - unacknowledged_bytes_sent_) < length) {
|
| // TODO(toyoshim): buffer up the data to send at a later time.
|
| // For now we're just dropping these bytes on the floor.
|
| @@ -77,30 +78,31 @@ void MidiMessageFilter::SendMidiData(uint32 port,
|
|
|
| unacknowledged_bytes_sent_ += length;
|
| std::vector<uint8> v(data, data + length);
|
| - io_message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &MidiMessageFilter::SendMidiDataOnIOThread, this, port, v, timestamp));
|
| + io_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::SendMidiDataOnIOThread, this,
|
| + port, v, timestamp));
|
| }
|
|
|
| void MidiMessageFilter::StartSessionOnIOThread() {
|
| TRACE_EVENT0("midi", "MidiMessageFilter::StartSessionOnIOThread");
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| Send(new MidiHostMsg_StartSession());
|
| }
|
|
|
| void MidiMessageFilter::SendMidiDataOnIOThread(uint32 port,
|
| const std::vector<uint8>& data,
|
| double timestamp) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| Send(new MidiHostMsg_SendData(port, data, timestamp));
|
| }
|
|
|
| void MidiMessageFilter::EndSessionOnIOThread() {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| Send(new MidiHostMsg_EndSession());
|
| }
|
|
|
| void MidiMessageFilter::Send(IPC::Message* message) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| if (!sender_) {
|
| delete message;
|
| } else {
|
| @@ -109,7 +111,7 @@ void MidiMessageFilter::Send(IPC::Message* message) {
|
| }
|
|
|
| bool MidiMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(MidiMessageFilter, message)
|
| IPC_MESSAGE_HANDLER(MidiMsg_SessionStarted, OnSessionStarted)
|
| @@ -125,86 +127,82 @@ bool MidiMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
| }
|
|
|
| void MidiMessageFilter::OnFilterAdded(IPC::Sender* sender) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| sender_ = sender;
|
| }
|
|
|
| void MidiMessageFilter::OnFilterRemoved() {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| // Once removed, a filter will not be used again. At this time all
|
| // delegates must be notified so they release their reference.
|
| OnChannelClosing();
|
| }
|
|
|
| void MidiMessageFilter::OnChannelClosing() {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| sender_ = nullptr;
|
| }
|
|
|
| void MidiMessageFilter::OnSessionStarted(media::midi::MidiResult result) {
|
| TRACE_EVENT0("midi", "MidiMessageFilter::OnSessionStarted");
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| // Handle on the main JS thread.
|
| - main_message_loop_->PostTask(
|
| + main_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&MidiMessageFilter::HandleClientAdded, this, result));
|
| }
|
|
|
| void MidiMessageFilter::OnAddInputPort(media::midi::MidiPortInfo info) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| - main_message_loop_->PostTask(
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + main_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&MidiMessageFilter::HandleAddInputPort, this, info));
|
| }
|
|
|
| void MidiMessageFilter::OnAddOutputPort(media::midi::MidiPortInfo info) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| - main_message_loop_->PostTask(
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + main_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&MidiMessageFilter::HandleAddOutputPort, this, info));
|
| }
|
|
|
| void MidiMessageFilter::OnSetInputPortState(uint32 port,
|
| media::midi::MidiPortState state) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| - main_message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MidiMessageFilter::HandleSetInputPortState,
|
| - this, port, state));
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::HandleSetInputPortState, this,
|
| + port, state));
|
| }
|
|
|
| void MidiMessageFilter::OnSetOutputPortState(uint32 port,
|
| media::midi::MidiPortState state) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| - main_message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MidiMessageFilter::HandleSetOutputPortState,
|
| - this, port, state));
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::HandleSetOutputPortState, this,
|
| + port, state));
|
| }
|
|
|
| void MidiMessageFilter::OnDataReceived(uint32 port,
|
| const std::vector<uint8>& data,
|
| double timestamp) {
|
| TRACE_EVENT0("midi", "MidiMessageFilter::OnDataReceived");
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| // Handle on the main JS thread.
|
| - main_message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MidiMessageFilter::HandleDataReceived, this, port, data,
|
| - timestamp));
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::HandleDataReceived, this, port,
|
| + data, timestamp));
|
| }
|
|
|
| void MidiMessageFilter::OnAcknowledgeSentData(size_t bytes_sent) {
|
| - DCHECK(io_message_loop_->BelongsToCurrentThread());
|
| - main_message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&MidiMessageFilter::HandleAckknowledgeSentData, this,
|
| - bytes_sent));
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MidiMessageFilter::HandleAckknowledgeSentData,
|
| + this, bytes_sent));
|
| }
|
|
|
| void MidiMessageFilter::HandleClientAdded(media::midi::MidiResult result) {
|
| TRACE_EVENT0("midi", "MidiMessageFilter::HandleClientAdded");
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| session_result_ = result;
|
| std::string error;
|
| std::string message;
|
| @@ -258,7 +256,7 @@ void MidiMessageFilter::HandleClientAdded(media::midi::MidiResult result) {
|
| }
|
|
|
| void MidiMessageFilter::HandleAddInputPort(media::midi::MidiPortInfo info) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| inputs_.push_back(info);
|
| const base::string16 id = base::UTF8ToUTF16(info.id);
|
| const base::string16 manufacturer = base::UTF8ToUTF16(info.manufacturer);
|
| @@ -271,7 +269,7 @@ void MidiMessageFilter::HandleAddInputPort(media::midi::MidiPortInfo info) {
|
| }
|
|
|
| void MidiMessageFilter::HandleAddOutputPort(media::midi::MidiPortInfo info) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| outputs_.push_back(info);
|
| const base::string16 id = base::UTF8ToUTF16(info.id);
|
| const base::string16 manufacturer = base::UTF8ToUTF16(info.manufacturer);
|
| @@ -287,7 +285,7 @@ void MidiMessageFilter::HandleDataReceived(uint32 port,
|
| const std::vector<uint8>& data,
|
| double timestamp) {
|
| TRACE_EVENT0("midi", "MidiMessageFilter::HandleDataReceived");
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| DCHECK(!data.empty());
|
|
|
| for (auto client : clients_)
|
| @@ -295,7 +293,7 @@ void MidiMessageFilter::HandleDataReceived(uint32 port,
|
| }
|
|
|
| void MidiMessageFilter::HandleAckknowledgeSentData(size_t bytes_sent) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| DCHECK_GE(unacknowledged_bytes_sent_, bytes_sent);
|
| if (unacknowledged_bytes_sent_ >= bytes_sent)
|
| unacknowledged_bytes_sent_ -= bytes_sent;
|
| @@ -304,7 +302,7 @@ void MidiMessageFilter::HandleAckknowledgeSentData(size_t bytes_sent) {
|
| void MidiMessageFilter::HandleSetInputPortState(
|
| uint32 port,
|
| media::midi::MidiPortState state) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| inputs_[port].state = state;
|
| for (auto client : clients_)
|
| client->didSetInputPortState(port, ToBlinkState(state));
|
| @@ -313,7 +311,7 @@ void MidiMessageFilter::HandleSetInputPortState(
|
| void MidiMessageFilter::HandleSetOutputPortState(
|
| uint32 port,
|
| media::midi::MidiPortState state) {
|
| - DCHECK(main_message_loop_->BelongsToCurrentThread());
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| outputs_[port].state = state;
|
| for (auto client : clients_)
|
| client->didSetOutputPortState(port, ToBlinkState(state));
|
|
|