| Index: Source/modules/navigatorconnect/ServicePortCollection.h
|
| diff --git a/Source/modules/navigatorconnect/ServicePortCollection.h b/Source/modules/navigatorconnect/ServicePortCollection.h
|
| index c1eb26ae205c6100a297094c97920d6b0834c2ff..e357e9ca991956c6ee492e762acb0ee817fcc11e 100644
|
| --- a/Source/modules/navigatorconnect/ServicePortCollection.h
|
| +++ b/Source/modules/navigatorconnect/ServicePortCollection.h
|
| @@ -9,17 +9,22 @@
|
| #include "core/dom/ContextLifecycleObserver.h"
|
| #include "core/events/EventTarget.h"
|
| #include "modules/ModulesExport.h"
|
| +#include "public/platform/modules/navigator_services/WebServicePortProvider.h"
|
| +#include "public/platform/modules/navigator_services/WebServicePortProviderClient.h"
|
| #include "wtf/RefCounted.h"
|
| +#include "wtf/WeakPtr.h"
|
|
|
| namespace blink {
|
|
|
| +class ServicePort;
|
| class ServicePortConnectOptions;
|
| class ServicePortMatchOptions;
|
|
|
| class MODULES_EXPORT ServicePortCollection final
|
| : public EventTargetWithInlineData
|
| , public RefCountedWillBeNoBase<ServicePortCollection>
|
| - , public ContextLifecycleObserver {
|
| + , public ContextLifecycleObserver
|
| + , public WebServicePortProviderClient {
|
| DEFINE_WRAPPERTYPEINFO();
|
| REFCOUNTED_EVENT_TARGET(ServicePortCollection);
|
| WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ServicePortCollection);
|
| @@ -28,8 +33,22 @@ public:
|
| static PassRefPtrWillBeRawPtr<ServicePortCollection> create(ExecutionContext*);
|
| virtual ~ServicePortCollection();
|
|
|
| + // Adds a port to this collection to keep track of it and allow delivering
|
| + // events related to it.
|
| + void addPort(ServicePort*);
|
| +
|
| + // Called when a port is closed to signal the WebServicePortProvider as well
|
| + // as remove the port from this collection.
|
| + void closePort(ServicePort*);
|
| +
|
| + WebServicePortProvider* provider() { return m_provider.get(); }
|
| +
|
| +#if !ENABLE(OILPAN)
|
| + WeakPtr<ServicePortCollection> weakPtr() { return m_weakFactory.createWeakPtr(); }
|
| +#endif
|
| +
|
| // ServicePortCollection.idl
|
| - ScriptPromise connect(ScriptState*, const String& url, const ServicePortConnectOptions&);
|
| + ScriptPromise connect(ScriptState*, const String& url, const ServicePortConnectOptions&, ExceptionState&);
|
| ScriptPromise match(ScriptState*, const ServicePortMatchOptions&);
|
| ScriptPromise matchAll(ScriptState*, const ServicePortMatchOptions&);
|
| DEFINE_ATTRIBUTE_EVENT_LISTENER(connect);
|
| @@ -40,10 +59,19 @@ public:
|
| const AtomicString& interfaceName() const override;
|
| ExecutionContext* executionContext() const override;
|
|
|
| + // WebServicePortProviderClient overrides.
|
| + void postMessage(WebServicePortID, const WebString&, const WebMessagePortChannelArray&) override;
|
| +
|
| DECLARE_VIRTUAL_TRACE();
|
|
|
| private:
|
| explicit ServicePortCollection(ExecutionContext*);
|
| +
|
| + OwnPtr<WebServicePortProvider> m_provider;
|
| + PersistentHeapVectorWillBeHeapVector<Member<ServicePort>> m_ports;
|
| +#if !ENABLE(OILPAN)
|
| + WeakPtrFactory<ServicePortCollection> m_weakFactory;
|
| +#endif
|
| };
|
|
|
| } // namespace blink
|
|
|