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

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

Issue 17619003: Fulfill or reject MIDIAccessPromise from MIDIAccessor (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: move layout test from fast/webmidi to webmidi Created 7 years, 6 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/MIDIAccessPromise.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 4720a5fb72ce68289f87b592d167c6f35e92a025..67343bf2bea51f455fca7084cba241e03e38427f 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("SecurityError");
+ 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
« no previous file with comments | « Source/modules/webmidi/MIDIAccess.h ('k') | Source/modules/webmidi/MIDIAccessPromise.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698