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

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

Issue 77773003: Make WebMIDI use blink Promise. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years 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
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

Powered by Google App Engine
This is Rietveld 408576698