Chromium Code Reviews| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 258 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, | 258 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, |
| 259 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, | 259 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, |
| 260 0x01, 0x01, 0x07, | 260 0x01, 0x01, 0x07, |
| 261 }; | 261 }; |
| 262 device->SetDescriptors(ToVector(descriptors)); | 262 device->SetDescriptors(ToVector(descriptors)); |
| 263 device->SetManufacturer("vendor1"); | 263 device->SetManufacturer("vendor1"); |
| 264 device->SetProductName("device1"); | 264 device->SetProductName("device1"); |
| 265 device->SetDeviceVersion("1.02"); | 265 device->SetDeviceVersion("1.02"); |
| 266 | 266 |
| 267 Initialize(); | 267 Initialize(); |
| 268 ScopedVector<UsbMidiDevice> devices; | 268 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
|
xhwang
2017/05/17 16:39:45
nit: Use UsbMidiDevice::Devices as the type?
xiaofengzhang
2017/05/18 05:43:26
Done. Very nice!
| |
| 269 devices.push_back(std::move(device)); | 269 devices.push_back(std::move(device)); |
| 270 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 270 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 271 RunCallbackUntilCallbackInvoked(true, &devices); | 271 RunCallbackUntilCallbackInvoked(true, &devices); |
| 272 EXPECT_EQ(Result::OK, GetInitializationResult()); | 272 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 273 | 273 |
| 274 ASSERT_EQ(1u, input_ports().size()); | 274 ASSERT_EQ(1u, input_ports().size()); |
| 275 EXPECT_EQ("usb:port-0-2", input_ports()[0].id); | 275 EXPECT_EQ("usb:port-0-2", input_ports()[0].id); |
| 276 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); | 276 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); |
| 277 EXPECT_EQ("device1", input_ports()[0].name); | 277 EXPECT_EQ("device1", input_ports()[0].name); |
| 278 EXPECT_EQ("1.02", input_ports()[0].version); | 278 EXPECT_EQ("1.02", input_ports()[0].version); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 318 device1->SetDescriptors(ToVector(descriptors)); | 318 device1->SetDescriptors(ToVector(descriptors)); |
| 319 device1->SetManufacturer("vendor1"); | 319 device1->SetManufacturer("vendor1"); |
| 320 device1->SetProductName("device1"); | 320 device1->SetProductName("device1"); |
| 321 device1->SetDeviceVersion("1.02"); | 321 device1->SetDeviceVersion("1.02"); |
| 322 device2->SetDescriptors(ToVector(descriptors)); | 322 device2->SetDescriptors(ToVector(descriptors)); |
| 323 device2->SetManufacturer("vendor2"); | 323 device2->SetManufacturer("vendor2"); |
| 324 device2->SetProductName("device2"); | 324 device2->SetProductName("device2"); |
| 325 device2->SetDeviceVersion("98.76"); | 325 device2->SetDeviceVersion("98.76"); |
| 326 | 326 |
| 327 Initialize(); | 327 Initialize(); |
| 328 ScopedVector<UsbMidiDevice> devices; | 328 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 329 devices.push_back(std::move(device1)); | 329 devices.push_back(std::move(device1)); |
| 330 devices.push_back(std::move(device2)); | 330 devices.push_back(std::move(device2)); |
| 331 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 331 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 332 RunCallbackUntilCallbackInvoked(true, &devices); | 332 RunCallbackUntilCallbackInvoked(true, &devices); |
| 333 EXPECT_EQ(Result::OK, GetInitializationResult()); | 333 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 334 | 334 |
| 335 ASSERT_EQ(2u, input_ports().size()); | 335 ASSERT_EQ(2u, input_ports().size()); |
| 336 EXPECT_EQ("usb:port-0-2", input_ports()[0].id); | 336 EXPECT_EQ("usb:port-0-2", input_ports()[0].id); |
| 337 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); | 337 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); |
| 338 EXPECT_EQ("device1", input_ports()[0].name); | 338 EXPECT_EQ("device1", input_ports()[0].name); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 381 RunCallbackUntilCallbackInvoked(false, NULL); | 381 RunCallbackUntilCallbackInvoked(false, NULL); |
| 382 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult()); | 382 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult()); |
| 383 } | 383 } |
| 384 | 384 |
| 385 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) { | 385 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) { |
| 386 std::unique_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); | 386 std::unique_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); |
| 387 uint8_t descriptors[] = {0x04}; | 387 uint8_t descriptors[] = {0x04}; |
| 388 device->SetDescriptors(ToVector(descriptors)); | 388 device->SetDescriptors(ToVector(descriptors)); |
| 389 | 389 |
| 390 Initialize(); | 390 Initialize(); |
| 391 ScopedVector<UsbMidiDevice> devices; | 391 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 392 devices.push_back(std::move(device)); | 392 devices.push_back(std::move(device)); |
| 393 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 393 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 394 RunCallbackUntilCallbackInvoked(true, &devices); | 394 RunCallbackUntilCallbackInvoked(true, &devices); |
| 395 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult()); | 395 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult()); |
| 396 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 396 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST_F(MidiManagerUsbTest, Send) { | 399 TEST_F(MidiManagerUsbTest, Send) { |
| 400 Initialize(); | 400 Initialize(); |
| 401 std::unique_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); | 401 std::unique_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 412 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, | 412 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, |
| 413 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, | 413 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, |
| 414 0x01, 0x01, 0x07, | 414 0x01, 0x01, 0x07, |
| 415 }; | 415 }; |
| 416 | 416 |
| 417 device->SetDescriptors(ToVector(descriptors)); | 417 device->SetDescriptors(ToVector(descriptors)); |
| 418 uint8_t data[] = { | 418 uint8_t data[] = { |
| 419 0x90, 0x45, 0x7f, 0xf0, 0x00, 0x01, 0xf7, | 419 0x90, 0x45, 0x7f, 0xf0, 0x00, 0x01, 0xf7, |
| 420 }; | 420 }; |
| 421 | 421 |
| 422 ScopedVector<UsbMidiDevice> devices; | 422 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 423 devices.push_back(std::move(device)); | 423 devices.push_back(std::move(device)); |
| 424 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 424 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 425 RunCallbackUntilCallbackInvoked(true, &devices); | 425 RunCallbackUntilCallbackInvoked(true, &devices); |
| 426 EXPECT_EQ(Result::OK, GetInitializationResult()); | 426 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 427 ASSERT_EQ(2u, manager_->output_streams().size()); | 427 ASSERT_EQ(2u, manager_->output_streams().size()); |
| 428 | 428 |
| 429 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0); | 429 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0); |
| 430 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to | 430 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to |
| 431 // invoke the task. | 431 // invoke the task. |
| 432 base::RunLoop run_loop; | 432 base::RunLoop run_loop; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 456 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, | 456 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, |
| 457 0x01, 0x01, 0x07, | 457 0x01, 0x01, 0x07, |
| 458 }; | 458 }; |
| 459 | 459 |
| 460 device->SetDescriptors(ToVector(descriptors)); | 460 device->SetDescriptors(ToVector(descriptors)); |
| 461 uint8_t data[] = { | 461 uint8_t data[] = { |
| 462 0x90, 0x45, 0x7f, 0xf0, 0x00, 0x01, 0xf7, | 462 0x90, 0x45, 0x7f, 0xf0, 0x00, 0x01, 0xf7, |
| 463 }; | 463 }; |
| 464 | 464 |
| 465 Initialize(); | 465 Initialize(); |
| 466 ScopedVector<UsbMidiDevice> devices; | 466 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 467 devices.push_back(std::move(device)); | 467 devices.push_back(std::move(device)); |
| 468 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 468 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 469 RunCallbackUntilCallbackInvoked(true, &devices); | 469 RunCallbackUntilCallbackInvoked(true, &devices); |
| 470 EXPECT_EQ(Result::OK, GetInitializationResult()); | 470 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 471 ASSERT_EQ(2u, manager_->output_streams().size()); | 471 ASSERT_EQ(2u, manager_->output_streams().size()); |
| 472 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 472 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 473 | 473 |
| 474 // The specified port index is invalid. The manager must ignore the request. | 474 // The specified port index is invalid. The manager must ignore the request. |
| 475 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0); | 475 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0); |
| 476 EXPECT_EQ("", logger_.TakeLog()); | 476 EXPECT_EQ("", logger_.TakeLog()); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 498 }; | 498 }; |
| 499 | 499 |
| 500 device->SetDescriptors(ToVector(descriptors)); | 500 device->SetDescriptors(ToVector(descriptors)); |
| 501 uint8_t data[] = { | 501 uint8_t data[] = { |
| 502 0x09, 0x90, 0x45, 0x7f, 0x04, 0xf0, 0x00, | 502 0x09, 0x90, 0x45, 0x7f, 0x04, 0xf0, 0x00, |
| 503 0x01, 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4). | 503 0x01, 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4). |
| 504 0x05, 0xf7, 0x00, 0x00, | 504 0x05, 0xf7, 0x00, 0x00, |
| 505 }; | 505 }; |
| 506 | 506 |
| 507 Initialize(); | 507 Initialize(); |
| 508 ScopedVector<UsbMidiDevice> devices; | 508 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 509 UsbMidiDevice* device_raw = device.get(); | 509 UsbMidiDevice* device_raw = device.get(); |
| 510 devices.push_back(std::move(device)); | 510 devices.push_back(std::move(device)); |
| 511 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 511 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 512 RunCallbackUntilCallbackInvoked(true, &devices); | 512 RunCallbackUntilCallbackInvoked(true, &devices); |
| 513 EXPECT_EQ(Result::OK, GetInitializationResult()); | 513 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 514 | 514 |
| 515 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data), | 515 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data), |
| 516 base::TimeTicks()); | 516 base::TimeTicks()); |
| 517 Finalize(); | 517 Finalize(); |
| 518 | 518 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 536 0x00, 0x06, 0x24, 0x02, 0x01, 0x02, 0x00, 0x06, 0x24, 0x02, 0x01, 0x03, | 536 0x00, 0x06, 0x24, 0x02, 0x01, 0x02, 0x00, 0x06, 0x24, 0x02, 0x01, 0x03, |
| 537 0x00, 0x06, 0x24, 0x02, 0x02, 0x06, 0x00, 0x09, 0x24, 0x03, 0x01, 0x07, | 537 0x00, 0x06, 0x24, 0x02, 0x02, 0x06, 0x00, 0x09, 0x24, 0x03, 0x01, 0x07, |
| 538 0x01, 0x06, 0x01, 0x00, 0x09, 0x24, 0x03, 0x02, 0x04, 0x01, 0x02, 0x01, | 538 0x01, 0x06, 0x01, 0x00, 0x09, 0x24, 0x03, 0x02, 0x04, 0x01, 0x02, 0x01, |
| 539 0x00, 0x09, 0x24, 0x03, 0x02, 0x05, 0x01, 0x03, 0x01, 0x00, 0x09, 0x05, | 539 0x00, 0x09, 0x24, 0x03, 0x02, 0x05, 0x01, 0x03, 0x01, 0x00, 0x09, 0x05, |
| 540 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, | 540 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, |
| 541 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, | 541 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, |
| 542 0x01, 0x01, 0x07, | 542 0x01, 0x01, 0x07, |
| 543 }; | 543 }; |
| 544 | 544 |
| 545 Initialize(); | 545 Initialize(); |
| 546 ScopedVector<UsbMidiDevice> devices; | 546 std::vector<std::unique_ptr<UsbMidiDevice>> devices; |
| 547 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 547 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 548 RunCallbackUntilCallbackInvoked(true, &devices); | 548 RunCallbackUntilCallbackInvoked(true, &devices); |
| 549 EXPECT_EQ(Result::OK, GetInitializationResult()); | 549 EXPECT_EQ(Result::OK, GetInitializationResult()); |
| 550 | 550 |
| 551 ASSERT_EQ(0u, input_ports().size()); | 551 ASSERT_EQ(0u, input_ports().size()); |
| 552 ASSERT_EQ(0u, output_ports().size()); | 552 ASSERT_EQ(0u, output_ports().size()); |
| 553 ASSERT_TRUE(manager_->input_stream()); | 553 ASSERT_TRUE(manager_->input_stream()); |
| 554 std::vector<UsbMidiJack> jacks = manager_->input_stream()->jacks(); | 554 std::vector<UsbMidiJack> jacks = manager_->input_stream()->jacks(); |
| 555 ASSERT_EQ(0u, manager_->output_streams().size()); | 555 ASSERT_EQ(0u, manager_->output_streams().size()); |
| 556 ASSERT_EQ(0u, jacks.size()); | 556 ASSERT_EQ(0u, jacks.size()); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 569 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); | 569 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); |
| 570 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); | 570 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); |
| 571 ASSERT_EQ(1u, jacks.size()); | 571 ASSERT_EQ(1u, jacks.size()); |
| 572 EXPECT_EQ(2, jacks[0].endpoint_number()); | 572 EXPECT_EQ(2, jacks[0].endpoint_number()); |
| 573 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); | 573 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); |
| 574 } | 574 } |
| 575 | 575 |
| 576 } // namespace | 576 } // namespace |
| 577 | 577 |
| 578 } // namespace midi | 578 } // namespace midi |
| OLD | NEW |