| Index: Source/modules/webmidi/MIDIAccessInitializer.h
|
| diff --git a/Source/modules/webmidi/MIDIAccessInitializer.h b/Source/modules/webmidi/MIDIAccessInitializer.h
|
| index 9f1e49733605dc8edc74238be787a7c3a8516295..4fc434ecc088a1d7302354294bba3a8e648b1db2 100644
|
| --- a/Source/modules/webmidi/MIDIAccessInitializer.h
|
| +++ b/Source/modules/webmidi/MIDIAccessInitializer.h
|
| @@ -6,46 +6,29 @@
|
| #define MIDIAccessInitializer_h
|
|
|
| #include "bindings/v8/ScriptPromise.h"
|
| -#include "bindings/v8/ScriptPromiseResolverWithContext.h"
|
| #include "modules/webmidi/MIDIAccessor.h"
|
| #include "modules/webmidi/MIDIAccessorClient.h"
|
| #include "modules/webmidi/MIDIOptions.h"
|
| -#include "modules/webmidi/MIDIPort.h"
|
| #include "wtf/OwnPtr.h"
|
| -#include "wtf/RawPtr.h"
|
| -#include "wtf/Vector.h"
|
|
|
| namespace WebCore {
|
|
|
| class MIDIAccess;
|
| -class Navigator;
|
| class ScriptState;
|
| +class ScriptPromiseResolverWithContext;
|
|
|
| -class MIDIAccessInitializer : public ScriptPromiseResolverWithContext, public MIDIAccessorClient {
|
| +class MIDIAccessInitializer : public MIDIAccessorClient {
|
| public:
|
| - struct PortDescriptor {
|
| - String id;
|
| - String manufacturer;
|
| - String name;
|
| - MIDIPort::MIDIPortTypeCode type;
|
| - String version;
|
| + static PassOwnPtr<MIDIAccessInitializer> create(const MIDIOptions& options, MIDIAccess* access)
|
| + {
|
| + return adoptPtr(new MIDIAccessInitializer(options, access));
|
| + }
|
| + virtual ~MIDIAccessInitializer();
|
|
|
| - PortDescriptor(const String& id, const String& manufacturer, const String& name, MIDIPort::MIDIPortTypeCode type, const String& version)
|
| - : id(id)
|
| - , manufacturer(manufacturer)
|
| - , name(name)
|
| - , type(type)
|
| - , version(version) { }
|
| - };
|
| + ScriptPromise initialize(ScriptState*);
|
| + void cancel();
|
|
|
| - static ScriptPromise start(ScriptState* scriptState, const MIDIOptions& options)
|
| - {
|
| - RefPtr<MIDIAccessInitializer> p = adoptRef(new MIDIAccessInitializer(scriptState, options));
|
| - p->suspendIfNeeded();
|
| - return p->start();
|
| - }
|
| -
|
| - virtual ~MIDIAccessInitializer();
|
| + bool hasPendingActivity() const { return m_state == Requesting; }
|
|
|
| // MIDIAccessorClient
|
| virtual void didAddInputPort(const String& id, const String& manufacturer, const String& name, const String& version) OVERRIDE;
|
| @@ -57,16 +40,27 @@
|
| SecurityOrigin* securityOrigin() const;
|
|
|
| private:
|
| - ScriptPromise start();
|
| + class PostAction;
|
| + enum State {
|
| + Requesting,
|
| + Resolved,
|
| + Stopped,
|
| + };
|
|
|
| - MIDIAccessInitializer(ScriptState*, const MIDIOptions&);
|
| + MIDIAccessInitializer(const MIDIOptions&, MIDIAccess*);
|
|
|
| ExecutionContext* executionContext() const;
|
| + void permissionDenied();
|
| + void doPostAction(State);
|
|
|
| + State m_state;
|
| + WeakPtrFactory<MIDIAccessInitializer> m_weakPtrFactory;
|
| + RefPtr<ScriptPromiseResolverWithContext> m_resolver;
|
| OwnPtr<MIDIAccessor> m_accessor;
|
| MIDIOptions m_options;
|
| bool m_sysexEnabled;
|
| - Vector<PortDescriptor> m_portDescriptors;
|
| + // m_access has this object, so it's safe to have the raw pointer.
|
| + MIDIAccess* m_access;
|
| };
|
|
|
| } // namespace WebCore
|
|
|