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

Unified Diff: Source/modules/webmidi/MIDIAccess.cpp

Issue 649683006: Web MIDI: add blink APIs to notify device connection events (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: address a comment at #21 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/webmidi/MIDIAccess.h ('k') | Source/modules/webmidi/MIDIAccessInitializer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/webmidi/MIDIAccess.cpp
diff --git a/Source/modules/webmidi/MIDIAccess.cpp b/Source/modules/webmidi/MIDIAccess.cpp
index a004a9571f8dbe97c997f2baf0e2158ecbe81deb..5da99b509264a51c309e2f3d84ea70337579808a 100644
--- a/Source/modules/webmidi/MIDIAccess.cpp
+++ b/Source/modules/webmidi/MIDIAccess.cpp
@@ -56,9 +56,9 @@ MIDIAccess::MIDIAccess(PassOwnPtr<MIDIAccessor> accessor, bool sysexEnabled, con
for (size_t i = 0; i < ports.size(); ++i) {
const MIDIAccessInitializer::PortDescriptor& port = ports[i];
if (port.type == MIDIPort::MIDIPortTypeInput) {
- m_inputs.append(MIDIInput::create(this, port.id, port.manufacturer, port.name, port.version));
+ m_inputs.append(MIDIInput::create(this, port.id, port.manufacturer, port.name, port.version, port.isActive));
} else {
- m_outputs.append(MIDIOutput::create(this, m_outputs.size(), port.id, port.manufacturer, port.name, port.version));
+ m_outputs.append(MIDIOutput::create(this, m_outputs.size(), port.id, port.manufacturer, port.name, port.version, port.isActive));
}
}
}
@@ -70,11 +70,15 @@ MIDIAccess::~MIDIAccess()
MIDIInputMap* MIDIAccess::inputs() const
{
HeapHashMap<String, Member<MIDIInput> > inputs;
+ size_t inactiveCount = 0;
for (size_t i = 0; i < m_inputs.size(); ++i) {
MIDIInput* input = m_inputs[i];
- inputs.add(input->id(), input);
+ if (input->isActive())
+ inputs.add(input->id(), input);
+ else
+ inactiveCount++;
}
- if (inputs.size() != m_inputs.size()) {
+ if ((inputs.size() + inactiveCount) != m_inputs.size()) {
// There is id duplication that violates the spec.
inputs.clear();
}
@@ -84,28 +88,46 @@ MIDIInputMap* MIDIAccess::inputs() const
MIDIOutputMap* MIDIAccess::outputs() const
{
HeapHashMap<String, Member<MIDIOutput> > outputs;
+ size_t inactiveCount = 0;
for (size_t i = 0; i < m_outputs.size(); ++i) {
MIDIOutput* output = m_outputs[i];
- outputs.add(output->id(), output);
+ if (output->isActive())
+ outputs.add(output->id(), output);
+ else
+ inactiveCount++;
}
- if (outputs.size() != m_outputs.size()) {
+ if ((outputs.size() + inactiveCount) != m_outputs.size()) {
// There is id duplication that violates the spec.
outputs.clear();
}
return new MIDIOutputMap(outputs);
}
-void MIDIAccess::didAddInputPort(const String& id, const String& manufacturer, const String& name, const String& version)
+void MIDIAccess::didAddInputPort(const String& id, const String& manufacturer, const String& name, const String& version, bool isActive)
{
ASSERT(isMainThread());
- m_inputs.append(MIDIInput::create(this, id, manufacturer, name, version));
+ m_inputs.append(MIDIInput::create(this, id, manufacturer, name, version, isActive));
}
-void MIDIAccess::didAddOutputPort(const String& id, const String& manufacturer, const String& name, const String& version)
+void MIDIAccess::didAddOutputPort(const String& id, const String& manufacturer, const String& name, const String& version, bool isActive)
{
ASSERT(isMainThread());
unsigned portIndex = m_outputs.size();
- m_outputs.append(MIDIOutput::create(this, portIndex, id, manufacturer, name, version));
+ m_outputs.append(MIDIOutput::create(this, portIndex, id, manufacturer, name, version, isActive));
+}
+
+void MIDIAccess::didSetInputPortState(unsigned portIndex, bool isActive)
+{
+ ASSERT(isMainThread());
+ if (portIndex < m_inputs.size())
+ m_inputs[portIndex]->setActiveState(isActive);
+}
+
+void MIDIAccess::didSetOutputPortState(unsigned portIndex, bool isActive)
+{
+ ASSERT(isMainThread());
+ if (portIndex < m_outputs.size())
+ m_outputs[portIndex]->setActiveState(isActive);
}
void MIDIAccess::didReceiveMIDIData(unsigned portIndex, const unsigned char* data, size_t length, double timeStamp)
« no previous file with comments | « Source/modules/webmidi/MIDIAccess.h ('k') | Source/modules/webmidi/MIDIAccessInitializer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698