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