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 |