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

Side by Side Diff: content/renderer/media/midi_message_filter.cc

Issue 2404443002: Web MIDI: use midi_service.mojom for media::midi::Result (Closed)
Patch Set: fix layout test Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/midi_message_filter.h" 5 #include "content/renderer/media/midi_message_filter.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 void MidiMessageFilter::OnAcknowledgeSentData(size_t bytes_sent) { 195 void MidiMessageFilter::OnAcknowledgeSentData(size_t bytes_sent) {
196 DCHECK(io_task_runner_->BelongsToCurrentThread()); 196 DCHECK(io_task_runner_->BelongsToCurrentThread());
197 main_task_runner_->PostTask( 197 main_task_runner_->PostTask(
198 FROM_HERE, base::Bind(&MidiMessageFilter::HandleAckknowledgeSentData, 198 FROM_HERE, base::Bind(&MidiMessageFilter::HandleAckknowledgeSentData,
199 this, bytes_sent)); 199 this, bytes_sent));
200 } 200 }
201 201
202 void MidiMessageFilter::HandleClientAdded(media::midi::Result result) { 202 void MidiMessageFilter::HandleClientAdded(media::midi::Result result) {
203 TRACE_EVENT0("midi", "MidiMessageFilter::HandleClientAdded"); 203 TRACE_EVENT0("midi", "MidiMessageFilter::HandleClientAdded");
204 DCHECK(main_task_runner_->BelongsToCurrentThread()); 204 DCHECK(main_task_runner_->BelongsToCurrentThread());
205 session_result_ = result;
206 std::string error;
207 std::string message;
208 switch (result) {
209 case media::midi::Result::OK:
210 break;
211 case media::midi::Result::NOT_SUPPORTED:
212 error = "NotSupportedError";
213 break;
214 case media::midi::Result::INITIALIZATION_ERROR:
215 error = "InvalidStateError";
216 message = "Platform dependent initialization failed.";
217 break;
218 default:
219 NOTREACHED();
220 error = "InvalidStateError";
221 message = "Unknown internal error occurred.";
222 break;
223 }
224 base::string16 error16 = base::UTF8ToUTF16(error);
225 base::string16 message16 = base::UTF8ToUTF16(message);
226 205
227 // A for-loop using iterators does not work because |client| may touch 206 // A for-loop using iterators does not work because |client| may touch
228 // |clients_waiting_session_queue_| in callbacks. 207 // |clients_waiting_session_queue_| in callbacks.
229 while (!clients_waiting_session_queue_.empty()) { 208 while (!clients_waiting_session_queue_.empty()) {
230 auto* client = clients_waiting_session_queue_.back(); 209 auto* client = clients_waiting_session_queue_.back();
231 clients_waiting_session_queue_.pop_back(); 210 clients_waiting_session_queue_.pop_back();
232 if (result == media::midi::Result::OK) { 211 if (result == media::midi::Result::OK) {
233 // Add the client's input and output ports. 212 // Add the client's input and output ports.
234 for (const auto& info : inputs_) { 213 for (const auto& info : inputs_) {
235 client->didAddInputPort( 214 client->didAddInputPort(
236 base::UTF8ToUTF16(info.id), 215 base::UTF8ToUTF16(info.id),
237 base::UTF8ToUTF16(info.manufacturer), 216 base::UTF8ToUTF16(info.manufacturer),
238 base::UTF8ToUTF16(info.name), 217 base::UTF8ToUTF16(info.name),
239 base::UTF8ToUTF16(info.version), 218 base::UTF8ToUTF16(info.version),
240 ToBlinkState(info.state)); 219 ToBlinkState(info.state));
241 } 220 }
242 221
243 for (const auto& info : outputs_) { 222 for (const auto& info : outputs_) {
244 client->didAddOutputPort( 223 client->didAddOutputPort(
245 base::UTF8ToUTF16(info.id), 224 base::UTF8ToUTF16(info.id),
246 base::UTF8ToUTF16(info.manufacturer), 225 base::UTF8ToUTF16(info.manufacturer),
247 base::UTF8ToUTF16(info.name), 226 base::UTF8ToUTF16(info.name),
248 base::UTF8ToUTF16(info.version), 227 base::UTF8ToUTF16(info.version),
249 ToBlinkState(info.state)); 228 ToBlinkState(info.state));
250 } 229 }
251 } 230 }
252 client->didStartSession(result == media::midi::Result::OK, error16, 231 client->didStartSession(result);
253 message16);
254 clients_.insert(client); 232 clients_.insert(client);
255 } 233 }
256 } 234 }
257 235
258 void MidiMessageFilter::HandleAddInputPort(media::midi::MidiPortInfo info) { 236 void MidiMessageFilter::HandleAddInputPort(media::midi::MidiPortInfo info) {
259 DCHECK(main_task_runner_->BelongsToCurrentThread()); 237 DCHECK(main_task_runner_->BelongsToCurrentThread());
260 inputs_.push_back(info); 238 inputs_.push_back(info);
261 const base::string16 id = base::UTF8ToUTF16(info.id); 239 const base::string16 id = base::UTF8ToUTF16(info.id);
262 const base::string16 manufacturer = base::UTF8ToUTF16(info.manufacturer); 240 const base::string16 manufacturer = base::UTF8ToUTF16(info.manufacturer);
263 const base::string16 name = base::UTF8ToUTF16(info.name); 241 const base::string16 name = base::UTF8ToUTF16(info.name);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 void MidiMessageFilter::HandleSetOutputPortState( 289 void MidiMessageFilter::HandleSetOutputPortState(
312 uint32_t port, 290 uint32_t port,
313 media::midi::MidiPortState state) { 291 media::midi::MidiPortState state) {
314 DCHECK(main_task_runner_->BelongsToCurrentThread()); 292 DCHECK(main_task_runner_->BelongsToCurrentThread());
315 outputs_[port].state = state; 293 outputs_[port].state = state;
316 for (auto* client : clients_) 294 for (auto* client : clients_)
317 client->didSetOutputPortState(port, ToBlinkState(state)); 295 client->didSetOutputPortState(port, ToBlinkState(state));
318 } 296 }
319 297
320 } // namespace content 298 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698