| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 }; | 72 }; |
| 73 | 73 |
| 74 class FakeMidiManagerClient : public MidiManagerClient { | 74 class FakeMidiManagerClient : public MidiManagerClient { |
| 75 public: | 75 public: |
| 76 explicit FakeMidiManagerClient(Logger* logger) | 76 explicit FakeMidiManagerClient(Logger* logger) |
| 77 : complete_start_session_(false), | 77 : complete_start_session_(false), |
| 78 result_(MIDI_NOT_SUPPORTED), | 78 result_(MIDI_NOT_SUPPORTED), |
| 79 logger_(logger) {} | 79 logger_(logger) {} |
| 80 virtual ~FakeMidiManagerClient() {} | 80 virtual ~FakeMidiManagerClient() {} |
| 81 | 81 |
| 82 virtual void AddInputPort(const MidiPortInfo& info) override { |
| 83 input_ports_.push_back(info); |
| 84 } |
| 85 virtual void AddOutputPort(const MidiPortInfo& info) override { |
| 86 output_ports_.push_back(info); |
| 87 } |
| 88 |
| 82 virtual void CompleteStartSession(MidiResult result) override { | 89 virtual void CompleteStartSession(MidiResult result) override { |
| 83 complete_start_session_ = true; | 90 complete_start_session_ = true; |
| 84 result_ = result; | 91 result_ = result; |
| 85 } | 92 } |
| 86 | 93 |
| 87 virtual void ReceiveMidiData(uint32 port_index, | 94 virtual void ReceiveMidiData(uint32 port_index, |
| 88 const uint8* data, | 95 const uint8* data, |
| 89 size_t size, | 96 size_t size, |
| 90 double timestamp) override { | 97 double timestamp) override { |
| 91 logger_->AddLog("MidiManagerClient::ReceiveMidiData "); | 98 logger_->AddLog("MidiManagerClient::ReceiveMidiData "); |
| 92 logger_->AddLog(base::StringPrintf("port_index = %d data =", port_index)); | 99 logger_->AddLog(base::StringPrintf("port_index = %d data =", port_index)); |
| 93 for (size_t i = 0; i < size; ++i) | 100 for (size_t i = 0; i < size; ++i) |
| 94 logger_->AddLog(base::StringPrintf(" 0x%02x", data[i])); | 101 logger_->AddLog(base::StringPrintf(" 0x%02x", data[i])); |
| 95 logger_->AddLog("\n"); | 102 logger_->AddLog("\n"); |
| 96 } | 103 } |
| 97 | 104 |
| 98 virtual void AccumulateMidiBytesSent(size_t size) override { | 105 virtual void AccumulateMidiBytesSent(size_t size) override { |
| 99 logger_->AddLog("MidiManagerClient::AccumulateMidiBytesSent "); | 106 logger_->AddLog("MidiManagerClient::AccumulateMidiBytesSent "); |
| 100 // Windows has no "%zu". | 107 // Windows has no "%zu". |
| 101 logger_->AddLog(base::StringPrintf("size = %u\n", | 108 logger_->AddLog(base::StringPrintf("size = %u\n", |
| 102 static_cast<unsigned>(size))); | 109 static_cast<unsigned>(size))); |
| 103 } | 110 } |
| 104 | 111 |
| 105 bool complete_start_session_; | 112 bool complete_start_session_; |
| 106 MidiResult result_; | 113 MidiResult result_; |
| 114 MidiPortInfoList input_ports_; |
| 115 MidiPortInfoList output_ports_; |
| 107 | 116 |
| 108 private: | 117 private: |
| 109 Logger* logger_; | 118 Logger* logger_; |
| 110 | 119 |
| 111 DISALLOW_COPY_AND_ASSIGN(FakeMidiManagerClient); | 120 DISALLOW_COPY_AND_ASSIGN(FakeMidiManagerClient); |
| 112 }; | 121 }; |
| 113 | 122 |
| 114 class TestUsbMidiDeviceFactory : public UsbMidiDevice::Factory { | 123 class TestUsbMidiDeviceFactory : public UsbMidiDevice::Factory { |
| 115 public: | 124 public: |
| 116 TestUsbMidiDeviceFactory() {} | 125 TestUsbMidiDeviceFactory() {} |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 186 |
| 178 void RunCallbackUntilCallbackInvoked( | 187 void RunCallbackUntilCallbackInvoked( |
| 179 bool result, UsbMidiDevice::Devices* devices) { | 188 bool result, UsbMidiDevice::Devices* devices) { |
| 180 factory_->callback_.Run(result, devices); | 189 factory_->callback_.Run(result, devices); |
| 181 while (!client_->complete_start_session_) { | 190 while (!client_->complete_start_session_) { |
| 182 base::RunLoop run_loop; | 191 base::RunLoop run_loop; |
| 183 run_loop.RunUntilIdle(); | 192 run_loop.RunUntilIdle(); |
| 184 } | 193 } |
| 185 } | 194 } |
| 186 | 195 |
| 196 const MidiPortInfoList& input_ports() { return client_->input_ports_; } |
| 197 const MidiPortInfoList& output_ports() { return client_->output_ports_; } |
| 198 |
| 187 scoped_ptr<MidiManagerUsbForTesting> manager_; | 199 scoped_ptr<MidiManagerUsbForTesting> manager_; |
| 188 scoped_ptr<FakeMidiManagerClient> client_; | 200 scoped_ptr<FakeMidiManagerClient> client_; |
| 189 // Owned by manager_. | 201 // Owned by manager_. |
| 190 TestUsbMidiDeviceFactory* factory_; | 202 TestUsbMidiDeviceFactory* factory_; |
| 191 Logger logger_; | 203 Logger logger_; |
| 192 | 204 |
| 193 private: | 205 private: |
| 194 scoped_ptr<base::MessageLoop> message_loop_; | 206 scoped_ptr<base::MessageLoop> message_loop_; |
| 195 | 207 |
| 196 DISALLOW_COPY_AND_ASSIGN(MidiManagerUsbTest); | 208 DISALLOW_COPY_AND_ASSIGN(MidiManagerUsbTest); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 217 }; | 229 }; |
| 218 device->SetDescriptor(ToVector(descriptor)); | 230 device->SetDescriptor(ToVector(descriptor)); |
| 219 | 231 |
| 220 Initialize(); | 232 Initialize(); |
| 221 ScopedVector<UsbMidiDevice> devices; | 233 ScopedVector<UsbMidiDevice> devices; |
| 222 devices.push_back(device.release()); | 234 devices.push_back(device.release()); |
| 223 EXPECT_FALSE(IsInitializationCallbackInvoked()); | 235 EXPECT_FALSE(IsInitializationCallbackInvoked()); |
| 224 RunCallbackUntilCallbackInvoked(true, &devices); | 236 RunCallbackUntilCallbackInvoked(true, &devices); |
| 225 EXPECT_EQ(MIDI_OK, GetInitializationResult()); | 237 EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
| 226 | 238 |
| 227 ASSERT_EQ(1u, manager_->input_ports().size()); | 239 ASSERT_EQ(1u, input_ports().size()); |
| 228 ASSERT_EQ(2u, manager_->output_ports().size()); | 240 ASSERT_EQ(2u, output_ports().size()); |
| 229 ASSERT_TRUE(manager_->input_stream()); | 241 ASSERT_TRUE(manager_->input_stream()); |
| 230 std::vector<UsbMidiInputStream::JackUniqueKey> keys = | 242 std::vector<UsbMidiInputStream::JackUniqueKey> keys = |
| 231 manager_->input_stream()->RegisteredJackKeysForTesting(); | 243 manager_->input_stream()->RegisteredJackKeysForTesting(); |
| 232 ASSERT_EQ(2u, manager_->output_streams().size()); | 244 ASSERT_EQ(2u, manager_->output_streams().size()); |
| 233 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); | 245 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); |
| 234 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); | 246 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); |
| 235 ASSERT_EQ(1u, keys.size()); | 247 ASSERT_EQ(1u, keys.size()); |
| 236 EXPECT_EQ(2, keys[0].endpoint_number); | 248 EXPECT_EQ(2, keys[0].endpoint_number); |
| 237 | 249 |
| 238 EXPECT_EQ("UsbMidiDevice::GetDescriptor\n", logger_.TakeLog()); | 250 EXPECT_EQ("UsbMidiDevice::GetDescriptor\n", logger_.TakeLog()); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 "data = 0x90 0x45 0x7f\n" | 360 "data = 0x90 0x45 0x7f\n" |
| 349 "MidiManagerClient::ReceiveMidiData port_index = 0 " | 361 "MidiManagerClient::ReceiveMidiData port_index = 0 " |
| 350 "data = 0xf0 0x00 0x01\n" | 362 "data = 0xf0 0x00 0x01\n" |
| 351 "MidiManagerClient::ReceiveMidiData port_index = 0 data = 0xf7\n", | 363 "MidiManagerClient::ReceiveMidiData port_index = 0 data = 0xf7\n", |
| 352 logger_.TakeLog()); | 364 logger_.TakeLog()); |
| 353 } | 365 } |
| 354 | 366 |
| 355 } // namespace | 367 } // namespace |
| 356 | 368 |
| 357 } // namespace media | 369 } // namespace media |
| OLD | NEW |