Index: Source/modules/webmidi/NavigatorWebMIDI.cpp |
diff --git a/Source/modules/webmidi/NavigatorWebMIDI.cpp b/Source/modules/webmidi/NavigatorWebMIDI.cpp |
index 4e34e8fac98c57b06d9cd1a476c6c2c17696c59e..1ee4e6af20e6b2fb9fcfdc217b4f72fad13d3452 100644 |
--- a/Source/modules/webmidi/NavigatorWebMIDI.cpp |
+++ b/Source/modules/webmidi/NavigatorWebMIDI.cpp |
@@ -37,7 +37,7 @@ |
#include "core/dom/Document.h" |
#include "core/frame/LocalFrame.h" |
#include "core/frame/Navigator.h" |
-#include "modules/webmidi/MIDIAccess.h" |
+#include "modules/webmidi/MIDIAccessInitializer.h" |
#include "modules/webmidi/MIDIOptions.h" |
namespace WebCore { |
@@ -68,10 +68,10 @@ NavigatorWebMIDI& NavigatorWebMIDI::from(Navigator& navigator) |
ScriptPromise NavigatorWebMIDI::requestMIDIAccess(ScriptState* scriptState, Navigator& navigator, const Dictionary& options) |
{ |
- return NavigatorWebMIDI::from(navigator).requestMIDIAccess(scriptState, options); |
+ return NavigatorWebMIDI::from(navigator).requestMIDIAccessInternal(scriptState, navigator, options); |
} |
-ScriptPromise NavigatorWebMIDI::requestMIDIAccess(ScriptState* scriptState, const Dictionary& options) |
+ScriptPromise NavigatorWebMIDI::requestMIDIAccessInternal(ScriptState* scriptState, Navigator& navigator, const Dictionary& options) |
{ |
if (!frame() || frame()->document()->activeDOMObjectsAreStopped()) { |
RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
@@ -81,7 +81,21 @@ ScriptPromise NavigatorWebMIDI::requestMIDIAccess(ScriptState* scriptState, cons |
return promise; |
} |
- return MIDIAccess::request(MIDIOptions(options), scriptState); |
+ const OwnPtr<MIDIAccessInitializer>& initializer = |
+ *m_initializers.add(MIDIAccessInitializer::create(scriptState, MIDIOptions(options), &navigator, this)).storedValue; |
+ return initializer->start(); |
+} |
+ |
+void NavigatorWebMIDI::didFinishMIDIAccessInitialization(MIDIAccessInitializer* initializer) |
+{ |
+ if (m_initializers.contains(initializer)) |
+ m_initializers.remove(initializer); |
+} |
+ |
+void NavigatorWebMIDI::didFailMIDIAccessInitialization(MIDIAccessInitializer* initializer) |
+{ |
+ if (m_initializers.contains(initializer)) |
+ m_initializers.remove(initializer); |
} |
} // namespace WebCore |