| Index: Source/modules/webmidi/MIDIAccess.cpp
|
| diff --git a/Source/modules/webmidi/MIDIAccess.cpp b/Source/modules/webmidi/MIDIAccess.cpp
|
| index 5a572fb276a6af4272f4e980dc12a8416964d21f..1be48ef4ec4a89a540f8e76690973db12db7dcab 100644
|
| --- a/Source/modules/webmidi/MIDIAccess.cpp
|
| +++ b/Source/modules/webmidi/MIDIAccess.cpp
|
| @@ -35,18 +35,18 @@
|
| #include "core/dom/Document.h"
|
| #include "core/loader/DocumentLoadTiming.h"
|
| #include "core/loader/DocumentLoader.h"
|
| -#include "modules/webmidi/MIDIAccessPromise.h"
|
| #include "modules/webmidi/MIDIConnectionEvent.h"
|
| #include "modules/webmidi/MIDIController.h"
|
| +#include "modules/webmidi/MIDIOptions.h"
|
| #include "modules/webmidi/MIDIPort.h"
|
| +#include "modules/webmidi/NavigatorWebMIDI.h"
|
|
|
| namespace WebCore {
|
|
|
| -PassRefPtr<MIDIAccess> MIDIAccess::create(ExecutionContext* context, MIDIAccessPromise* promise)
|
| +PassRefPtr<MIDIAccess> MIDIAccess::create(const MIDIOptions& options, ExecutionContext* context, NavigatorWebMIDI* navigator)
|
| {
|
| - RefPtr<MIDIAccess> midiAccess(adoptRef(new MIDIAccess(context, promise)));
|
| + RefPtr<MIDIAccess> midiAccess(adoptRef(new MIDIAccess(options, context, navigator)));
|
| midiAccess->suspendIfNeeded();
|
| - midiAccess->startRequest();
|
| return midiAccess.release();
|
| }
|
|
|
| @@ -55,9 +55,10 @@ MIDIAccess::~MIDIAccess()
|
| stop();
|
| }
|
|
|
| -MIDIAccess::MIDIAccess(ExecutionContext* context, MIDIAccessPromise* promise)
|
| +MIDIAccess::MIDIAccess(const MIDIOptions& options, ExecutionContext* context, NavigatorWebMIDI* navigator)
|
| : ActiveDOMObject(context)
|
| - , m_promise(promise)
|
| + , m_navigator(navigator)
|
| + , m_options(options)
|
| , m_hasAccess(false)
|
| , m_sysExEnabled(false)
|
| , m_requesting(false)
|
| @@ -97,9 +98,9 @@ void MIDIAccess::didStartSession(bool success)
|
|
|
| m_hasAccess = success;
|
| if (success)
|
| - m_promise->fulfill();
|
| + m_navigator->didFinishRequest(this);
|
| else
|
| - m_promise->reject(DOMError::create("InvalidStateError"));
|
| + m_navigator->didFailRequest(this, DOMError::create("InvalidStateError"));
|
| }
|
|
|
| void MIDIAccess::didReceiveMIDIData(unsigned portIndex, const unsigned char* data, size_t length, double timeStamp)
|
| @@ -147,6 +148,7 @@ void MIDIAccess::stop()
|
| if (!m_requesting)
|
| return;
|
| m_requesting = false;
|
| + m_navigator->didFailRequest(this, DOMError::create("AbortError"));
|
| Document* document = toDocument(executionContext());
|
| ASSERT(document);
|
| MIDIController* controller = MIDIController::from(document->page());
|
| @@ -158,7 +160,7 @@ void MIDIAccess::stop()
|
|
|
| void MIDIAccess::startRequest()
|
| {
|
| - if (!m_promise->options()->sysex) {
|
| + if (!m_options.sysex) {
|
| m_accessor->startSession();
|
| return;
|
| }
|
| @@ -178,7 +180,7 @@ void MIDIAccess::permissionDenied()
|
| ASSERT(isMainThread());
|
|
|
| m_hasAccess = false;
|
| - m_promise->reject(DOMError::create("SecurityError"));
|
| + m_navigator->didFailRequest(this, DOMError::create("SecurityError"));
|
| }
|
|
|
| } // namespace WebCore
|
|
|