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

Side by Side Diff: media/midi/midi_manager_usb_unittest.cc

Issue 664843002: Web MIDI: distributes MIDIPort information asynchronously (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lifecycle
Patch Set: typo on ipc Created 6 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 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
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
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
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
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
OLDNEW
« content/renderer/media/midi_message_filter.cc ('K') | « media/midi/midi_manager_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698