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

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

Issue 1098913003: [WebMIDI] [Android] Set appropriate port properties. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 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 "base/callback.h" 7 #include "base/callback.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 if (!AddPorts(devices_[i], i)) { 117 if (!AddPorts(devices_[i], i)) {
118 initialize_callback_.Run(MIDI_INITIALIZATION_ERROR); 118 initialize_callback_.Run(MIDI_INITIALIZATION_ERROR);
119 return; 119 return;
120 } 120 }
121 } 121 }
122 initialize_callback_.Run(MIDI_OK); 122 initialize_callback_.Run(MIDI_OK);
123 } 123 }
124 124
125 bool MidiManagerUsb::AddPorts(UsbMidiDevice* device, int device_id) { 125 bool MidiManagerUsb::AddPorts(UsbMidiDevice* device, int device_id) {
126 UsbMidiDescriptorParser parser; 126 UsbMidiDescriptorParser parser;
127 std::vector<uint8> descriptor = device->GetDescriptor(); 127 std::vector<uint8> descriptor = device->GetDescriptors();
128 const uint8* data = descriptor.size() > 0 ? &descriptor[0] : NULL; 128 const uint8* data = descriptor.size() > 0 ? &descriptor[0] : NULL;
129 std::vector<UsbMidiJack> jacks; 129 std::vector<UsbMidiJack> jacks;
130 bool parse_result = parser.Parse(device, 130 bool parse_result = parser.Parse(device,
131 data, 131 data,
132 descriptor.size(), 132 descriptor.size(),
133 &jacks); 133 &jacks);
134 if (!parse_result) 134 if (!parse_result)
135 return false; 135 return false;
136 136
137 std::string manufacturer(device->GetManufacturer());
138 std::string product_name(device->GetProductName());
139 std::string version(device->GetDeviceVersion());
140
137 for (size_t j = 0; j < jacks.size(); ++j) { 141 for (size_t j = 0; j < jacks.size(); ++j) {
142 // Port ID must be unique in a MIDI manager. This ID setting is
143 // sufficiently unique although there is no user-friendly meaning.
144 // TODO(yhirano): Use a hashed string as ID.
145 std::string id(
146 base::StringPrintf("port-%d-%ld", device_id, static_cast<long>(j)));
138 if (jacks[j].direction() == UsbMidiJack::DIRECTION_OUT) { 147 if (jacks[j].direction() == UsbMidiJack::DIRECTION_OUT) {
139 output_streams_.push_back(new UsbMidiOutputStream(jacks[j])); 148 output_streams_.push_back(new UsbMidiOutputStream(jacks[j]));
140 // TODO(yhirano): Set appropriate properties. 149 AddOutputPort(MidiPortInfo(id, manufacturer, product_name, version,
141 // TODO(yhiran): Port ID should contain product ID / vendor ID. 150 MIDI_PORT_OPENED));
142 // Port ID must be unique in a MIDI manager. This (and the below) ID
143 // setting is sufficiently unique although there is no user-friendly
144 // meaning.
145 MidiPortInfo port;
146 port.state = MIDI_PORT_OPENED;
147 port.id = base::StringPrintf("port-%d-%ld",
148 device_id,
149 static_cast<long>(j));
150 AddOutputPort(port);
151 } else { 151 } else {
152 DCHECK_EQ(jacks[j].direction(), UsbMidiJack::DIRECTION_IN); 152 DCHECK_EQ(jacks[j].direction(), UsbMidiJack::DIRECTION_IN);
153 input_stream_->Add(jacks[j]); 153 input_stream_->Add(jacks[j]);
154 // TODO(yhirano): Set appropriate properties. 154 AddInputPort(MidiPortInfo(id, manufacturer, product_name, version,
155 MidiPortInfo port; 155 MIDI_PORT_OPENED));
156 port.state = MIDI_PORT_OPENED;
157 port.id = base::StringPrintf("port-%d-%ld",
158 device_id,
159 static_cast<long>(j));
160 AddInputPort(port);
161 } 156 }
162 } 157 }
163 return true; 158 return true;
164 } 159 }
165 160
166 } // namespace media 161 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/java/src/org/chromium/media/UsbMidiDeviceAndroid.java ('k') | media/midi/midi_manager_usb_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698