Chromium Code Reviews| Index: Source/modules/webmidi/MIDIAccess.cpp |
| diff --git a/Source/modules/webmidi/MIDIAccess.cpp b/Source/modules/webmidi/MIDIAccess.cpp |
| index 5a572fb276a6af4272f4e980dc12a8416964d21f..827258071c07b727896975ffc5f510a6faa27af5 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("InvalidStateError")); |
|
Takashi Toyoshima
2013/12/03 10:48:50
AbortError?
yhirano
2013/12/03 12:14:16
Done.
|
| 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 |