| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "media/midi/midi_manager_usb.h" | 5 #include "media/midi/midi_manager_usb.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, | 248 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, |
| 249 0x05, 0x25, 0x01, 0x01, 0x07, | 249 0x05, 0x25, 0x01, 0x01, 0x07, |
| 250 }; | 250 }; |
| 251 device->SetDescriptors(ToVector(descriptors)); | 251 device->SetDescriptors(ToVector(descriptors)); |
| 252 device->SetManufacturer("vendor1"); | 252 device->SetManufacturer("vendor1"); |
| 253 device->SetProductName("device1"); | 253 device->SetProductName("device1"); |
| 254 device->SetDeviceVersion("1.02"); | 254 device->SetDeviceVersion("1.02"); |
| 255 | 255 |
| 256 Initialize(); | 256 Initialize(); |
| 257 ScopedVector<UsbMidiDevice> devices; | 257 ScopedVector<UsbMidiDevice> devices; |
| 258 devices.push_back(device.release()); | 258 devices.push_back(device.Pass()); |
| 259 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 259 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 260 RunCallbackUntilCallbackInvoked(true, &devices); | 260 RunCallbackUntilCallbackInvoked(true, &devices); |
| 261 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 261 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 262 | 262 |
| 263 ASSERT_EQ(1u, input_ports().size()); | 263 ASSERT_EQ(1u, input_ports().size()); |
| 264 EXPECT_EQ("port-0-2", input_ports()[0].id); | 264 EXPECT_EQ("port-0-2", input_ports()[0].id); |
| 265 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); | 265 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); |
| 266 EXPECT_EQ("device1", input_ports()[0].name); | 266 EXPECT_EQ("device1", input_ports()[0].name); |
| 267 EXPECT_EQ("1.02", input_ports()[0].version); | 267 EXPECT_EQ("1.02", input_ports()[0].version); |
| 268 | 268 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 device1->SetManufacturer("vendor1"); | 308 device1->SetManufacturer("vendor1"); |
| 309 device1->SetProductName("device1"); | 309 device1->SetProductName("device1"); |
| 310 device1->SetDeviceVersion("1.02"); | 310 device1->SetDeviceVersion("1.02"); |
| 311 device2->SetDescriptors(ToVector(descriptors)); | 311 device2->SetDescriptors(ToVector(descriptors)); |
| 312 device2->SetManufacturer("vendor2"); | 312 device2->SetManufacturer("vendor2"); |
| 313 device2->SetProductName("device2"); | 313 device2->SetProductName("device2"); |
| 314 device2->SetDeviceVersion("98.76"); | 314 device2->SetDeviceVersion("98.76"); |
| 315 | 315 |
| 316 Initialize(); | 316 Initialize(); |
| 317 ScopedVector<UsbMidiDevice> devices; | 317 ScopedVector<UsbMidiDevice> devices; |
| 318 devices.push_back(device1.release()); | 318 devices.push_back(device1.Pass()); |
| 319 devices.push_back(device2.release()); | 319 devices.push_back(device2.Pass()); |
| 320 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 320 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 321 RunCallbackUntilCallbackInvoked(true, &devices); | 321 RunCallbackUntilCallbackInvoked(true, &devices); |
| 322 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 322 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 323 | 323 |
| 324 ASSERT_EQ(2u, input_ports().size()); | 324 ASSERT_EQ(2u, input_ports().size()); |
| 325 EXPECT_EQ("port-0-2", input_ports()[0].id); | 325 EXPECT_EQ("port-0-2", input_ports()[0].id); |
| 326 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); | 326 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); |
| 327 EXPECT_EQ("device1", input_ports()[0].name); | 327 EXPECT_EQ("device1", input_ports()[0].name); |
| 328 EXPECT_EQ("1.02", input_ports()[0].version); | 328 EXPECT_EQ("1.02", input_ports()[0].version); |
| 329 EXPECT_EQ("port-1-2", input_ports()[1].id); | 329 EXPECT_EQ("port-1-2", input_ports()[1].id); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); | 371 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); |
| 372 } | 372 } |
| 373 | 373 |
| 374 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) { | 374 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) { |
| 375 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); | 375 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); |
| 376 uint8 descriptors[] = {0x04}; | 376 uint8 descriptors[] = {0x04}; |
| 377 device->SetDescriptors(ToVector(descriptors)); | 377 device->SetDescriptors(ToVector(descriptors)); |
| 378 | 378 |
| 379 Initialize(); | 379 Initialize(); |
| 380 ScopedVector<UsbMidiDevice> devices; | 380 ScopedVector<UsbMidiDevice> devices; |
| 381 devices.push_back(device.release()); | 381 devices.push_back(device.Pass()); |
| 382 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 382 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 383 RunCallbackUntilCallbackInvoked(true, &devices); | 383 RunCallbackUntilCallbackInvoked(true, &devices); |
| 384 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); | 384 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); |
| 385 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 385 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 386 } | 386 } |
| 387 | 387 |
| 388 TEST_F(MidiManagerUsbTest, Send) { | 388 TEST_F(MidiManagerUsbTest, Send) { |
| 389 Initialize(); | 389 Initialize(); |
| 390 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); | 390 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); |
| 391 uint8 descriptors[] = { | 391 uint8 descriptors[] = { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 405 0x05, 0x25, 0x01, 0x01, 0x07, | 405 0x05, 0x25, 0x01, 0x01, 0x07, |
| 406 }; | 406 }; |
| 407 | 407 |
| 408 device->SetDescriptors(ToVector(descriptors)); | 408 device->SetDescriptors(ToVector(descriptors)); |
| 409 uint8 data[] = { | 409 uint8 data[] = { |
| 410 0x90, 0x45, 0x7f, | 410 0x90, 0x45, 0x7f, |
| 411 0xf0, 0x00, 0x01, 0xf7, | 411 0xf0, 0x00, 0x01, 0xf7, |
| 412 }; | 412 }; |
| 413 | 413 |
| 414 ScopedVector<UsbMidiDevice> devices; | 414 ScopedVector<UsbMidiDevice> devices; |
| 415 devices.push_back(device.release()); | 415 devices.push_back(device.Pass()); |
| 416 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 416 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 417 RunCallbackUntilCallbackInvoked(true, &devices); | 417 RunCallbackUntilCallbackInvoked(true, &devices); |
| 418 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 418 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 419 ASSERT_EQ(2u, manager_->output_streams().size()); | 419 ASSERT_EQ(2u, manager_->output_streams().size()); |
| 420 | 420 |
| 421 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0); | 421 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0); |
| 422 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to | 422 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to |
| 423 // invoke the task. | 423 // invoke the task. |
| 424 base::RunLoop run_loop; | 424 base::RunLoop run_loop; |
| 425 run_loop.RunUntilIdle(); | 425 run_loop.RunUntilIdle(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 452 }; | 452 }; |
| 453 | 453 |
| 454 device->SetDescriptors(ToVector(descriptors)); | 454 device->SetDescriptors(ToVector(descriptors)); |
| 455 uint8 data[] = { | 455 uint8 data[] = { |
| 456 0x90, 0x45, 0x7f, | 456 0x90, 0x45, 0x7f, |
| 457 0xf0, 0x00, 0x01, 0xf7, | 457 0xf0, 0x00, 0x01, 0xf7, |
| 458 }; | 458 }; |
| 459 | 459 |
| 460 Initialize(); | 460 Initialize(); |
| 461 ScopedVector<UsbMidiDevice> devices; | 461 ScopedVector<UsbMidiDevice> devices; |
| 462 devices.push_back(device.release()); | 462 devices.push_back(device.Pass()); |
| 463 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 463 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 464 RunCallbackUntilCallbackInvoked(true, &devices); | 464 RunCallbackUntilCallbackInvoked(true, &devices); |
| 465 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 465 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 466 ASSERT_EQ(2u, manager_->output_streams().size()); | 466 ASSERT_EQ(2u, manager_->output_streams().size()); |
| 467 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 467 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 468 | 468 |
| 469 // The specified port index is invalid. The manager must ignore the request. | 469 // The specified port index is invalid. The manager must ignore the request. |
| 470 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0); | 470 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0); |
| 471 EXPECT_EQ("", logger_.TakeLog()); | 471 EXPECT_EQ("", logger_.TakeLog()); |
| 472 | 472 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 498 uint8 data[] = { | 498 uint8 data[] = { |
| 499 0x09, 0x90, 0x45, 0x7f, | 499 0x09, 0x90, 0x45, 0x7f, |
| 500 0x04, 0xf0, 0x00, 0x01, | 500 0x04, 0xf0, 0x00, 0x01, |
| 501 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4). | 501 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4). |
| 502 0x05, 0xf7, 0x00, 0x00, | 502 0x05, 0xf7, 0x00, 0x00, |
| 503 }; | 503 }; |
| 504 | 504 |
| 505 Initialize(); | 505 Initialize(); |
| 506 ScopedVector<UsbMidiDevice> devices; | 506 ScopedVector<UsbMidiDevice> devices; |
| 507 UsbMidiDevice* device_raw = device.get(); | 507 UsbMidiDevice* device_raw = device.get(); |
| 508 devices.push_back(device.release()); | 508 devices.push_back(device.Pass()); |
| 509 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 509 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 510 RunCallbackUntilCallbackInvoked(true, &devices); | 510 RunCallbackUntilCallbackInvoked(true, &devices); |
| 511 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 511 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 512 | 512 |
| 513 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data), | 513 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data), |
| 514 base::TimeTicks()); | 514 base::TimeTicks()); |
| 515 Finalize(); | 515 Finalize(); |
| 516 | 516 |
| 517 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n" | 517 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n" |
| 518 "MidiManagerClient::ReceiveMidiData port_index = 0 " | 518 "MidiManagerClient::ReceiveMidiData port_index = 0 " |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); | 568 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); |
| 569 ASSERT_EQ(1u, jacks.size()); | 569 ASSERT_EQ(1u, jacks.size()); |
| 570 EXPECT_EQ(2, jacks[0].endpoint_number()); | 570 EXPECT_EQ(2, jacks[0].endpoint_number()); |
| 571 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 571 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 572 } | 572 } |
| 573 | 573 |
| 574 } // namespace | 574 } // namespace |
| 575 | 575 |
| 576 } // namespace midi | 576 } // namespace midi |
| 577 } // namespace media | 577 } // namespace media |
| OLD | NEW |