 Chromium Code Reviews
 Chromium Code Reviews Issue 17619003:
  Fulfill or reject MIDIAccessPromise from MIDIAccessor  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 17619003:
  Fulfill or reject MIDIAccessPromise from MIDIAccessor  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| Index: Source/modules/webmidi/MIDIAccess.cpp | 
| diff --git a/Source/modules/webmidi/MIDIAccess.cpp b/Source/modules/webmidi/MIDIAccess.cpp | 
| index 4720a5fb72ce68289f87b592d167c6f35e92a025..ee9794ccba28ebb3c9f0173b15296cad4bc60da6 100644 | 
| --- a/Source/modules/webmidi/MIDIAccess.cpp | 
| +++ b/Source/modules/webmidi/MIDIAccess.cpp | 
| @@ -31,7 +31,9 @@ | 
| #include "config.h" | 
| #include "modules/webmidi/MIDIAccess.h" | 
| +#include "core/dom/DOMError.h" | 
| #include "core/dom/ExceptionCode.h" | 
| +#include "modules/webmidi/MIDIAccessPromise.h" | 
| #include "modules/webmidi/MIDIConnectionEvent.h" | 
| #include "modules/webmidi/MIDIInput.h" | 
| #include "modules/webmidi/MIDIOutput.h" | 
| @@ -54,8 +56,50 @@ MIDIAccess::~MIDIAccess() | 
| MIDIAccess::MIDIAccess(ScriptExecutionContext* context, MIDIAccessPromise* promise) | 
| : ActiveDOMObject(context) | 
| , m_promise(promise) | 
| + , m_hasAccess(false) | 
| { | 
| ScriptWrappable::init(this); | 
| + m_accessor = MIDIAccessor::create(this); | 
| + m_accessor->requestAccess(promise->options()->sysexEnabled); | 
| +} | 
| + | 
| +void MIDIAccess::didAddInputPort(const String& id, const String& manufacturer, const String& name, const String& version) | 
| +{ | 
| + ASSERT(isMainThread()); | 
| + | 
| + m_inputs.append(MIDIInput::create(scriptExecutionContext(), id, manufacturer, name, version)); | 
| +} | 
| + | 
| +void MIDIAccess::didAddOutputPort(const String& id, const String& manufacturer, const String& name, const String& version) | 
| +{ | 
| + ASSERT(isMainThread()); | 
| + | 
| + m_outputs.append(MIDIOutput::create(scriptExecutionContext(), id, manufacturer, name, version)); | 
| +} | 
| + | 
| +void MIDIAccess::didAllowAccess() | 
| +{ | 
| + ASSERT(isMainThread()); | 
| + | 
| + m_hasAccess = true; | 
| + m_promise->fulfill(); | 
| +} | 
| + | 
| +void MIDIAccess::didBlockAccess() | 
| +{ | 
| + ASSERT(isMainThread()); | 
| + | 
| + m_hasAccess = false; | 
| + RefPtr<DOMError> error = DOMError::create("MIDI access blocked"); | 
| 
Takashi Toyoshima
2013/06/25 07:48:58
Should be "SecurityError".
http://webaudio.github
 
Chris Rogers
2013/06/26 01:47:56
Done.
 | 
| + m_promise->reject(error); | 
| +} | 
| + | 
| +void MIDIAccess::didReceiveMIDIData(unsigned portIndex, const unsigned char* data, size_t length, double timeStamp) | 
| +{ | 
| + ASSERT(isMainThread()); | 
| + | 
| + if (m_hasAccess && portIndex < m_inputs.size()) | 
| + m_inputs[portIndex]->didReceiveMIDIData(portIndex, data, length, timeStamp); | 
| } | 
| } // namespace WebCore |