| Index: Source/modules/websockets/WorkerThreadableWebSocketChannel.h
|
| diff --git a/Source/modules/websockets/WorkerThreadableWebSocketChannel.h b/Source/modules/websockets/WorkerThreadableWebSocketChannel.h
|
| index d5d7a84ec03ab87511869b1ba7c21bed4735ce0a..3b0dda8c2f9ace73f7811a755856ceecbd9ea7fe 100644
|
| --- a/Source/modules/websockets/WorkerThreadableWebSocketChannel.h
|
| +++ b/Source/modules/websockets/WorkerThreadableWebSocketChannel.h
|
| @@ -94,17 +94,16 @@ public:
|
| WTF_MAKE_NONCOPYABLE(Peer);
|
| WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
|
| public:
|
| + static PassOwnPtrWillBeRawPtr<Peer> create(PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderProxy&, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelSyncHelper>);
|
| virtual ~Peer();
|
|
|
| // sourceURLAtConnection and lineNumberAtConnection parameters may
|
| // be shown when the connection fails.
|
| -#if ENABLE(OILPAN)
|
| - static void initialize(ExecutionContext*, WeakMember<Peer>*, WorkerLoaderProxy*, RawPtr<ThreadableWebSocketChannelClientWrapper>, const String& sourceURLAtConnection, unsigned lineNumberAtConnection, RawPtr<ThreadableWebSocketChannelSyncHelper>);
|
| -#else
|
| - static void initialize(ExecutionContext*, PassRefPtr<WeakReference<Peer> >, WorkerLoaderProxy*, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, const String& sourceURLAtConnection, unsigned lineNumberAtConnection, PassRefPtr<ThreadableWebSocketChannelSyncHelper>);
|
| -#endif
|
| + static void initialize(ExecutionContext* executionContext, Peer* peer, const String& sourceURLAtConnection, unsigned lineNumberAtConnection)
|
| + {
|
| + peer->initializeInternal(executionContext, sourceURLAtConnection, lineNumberAtConnection);
|
| + }
|
|
|
| - void destroy();
|
| void connect(const KURL&, const String& protocol);
|
| void send(const String& message);
|
| void sendArrayBuffer(PassOwnPtr<Vector<char> >);
|
| @@ -126,27 +125,14 @@ public:
|
| virtual void didReceiveMessageError() OVERRIDE;
|
|
|
| private:
|
| -#if ENABLE(OILPAN)
|
| - Peer(RawPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderProxy&, ExecutionContext*, const String& sourceURL, unsigned lineNumber, RawPtr<ThreadableWebSocketChannelSyncHelper>);
|
| -#else
|
| - Peer(PassRefPtr<WeakReference<Peer> >, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderProxy&, ExecutionContext*, const String& sourceURL, unsigned lineNumber, PassRefPtr<ThreadableWebSocketChannelSyncHelper>);
|
| -#endif
|
| + Peer(PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderProxy&, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelSyncHelper>);
|
| +
|
| + void initializeInternal(ExecutionContext*, const String& sourceURLAtConnection, unsigned lineNumberAtConnection);
|
|
|
| const RefPtrWillBeMember<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
|
| WorkerLoaderProxy& m_loaderProxy;
|
| RefPtrWillBeMember<WebSocketChannel> m_mainWebSocketChannel;
|
| RefPtrWillBeMember<ThreadableWebSocketChannelSyncHelper> m_syncHelper;
|
| -#if ENABLE(OILPAN)
|
| - // The lifetime of the Peer object is explicitly managed by the Bridge object.
|
| - // When the Bridge object calls Peer::initialize, the persistent handle is created.
|
| - // When the Bridge object calls Peer::destroy, the persistent handle is destroyed.
|
| - // This is because we cannot dispatch a disconnect chain from Peer's destructor since
|
| - // the disconnect chain touches on-heap objets.
|
| - GC_PLUGIN_IGNORE("")
|
| - Persistent<Peer> m_keepAlive;
|
| -#else
|
| - WeakPtrFactory<Peer> m_weakFactory;
|
| -#endif
|
| };
|
|
|
| // Bridge for Peer. Running on the worker thread.
|
| @@ -182,17 +168,11 @@ public:
|
| // Returns false if shutdown event is received before method completion.
|
| bool waitForMethodCompletion(PassOwnPtr<ExecutionContextTask>);
|
|
|
| - void terminatePeer();
|
| -
|
| - bool hasTerminatedPeer() { return !m_syncHelper; }
|
| -
|
| - const RefPtrWillBeMember<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
|
| + RefPtrWillBeMember<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
|
| RefPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope;
|
| WorkerLoaderProxy& m_loaderProxy;
|
| - RawPtrWillBeMember<ThreadableWebSocketChannelSyncHelper> m_syncHelper;
|
| - // The value of this pointer is set when a Peer object is created in Peer::initilize()
|
| - // in the main thread.
|
| - WeakPtrWillBeWeakMember<Peer> m_peer;
|
| + RefPtrWillBeMember<ThreadableWebSocketChannelSyncHelper> m_syncHelper;
|
| + OwnPtrWillBeMember<Peer> m_peer;
|
| };
|
|
|
| private:
|
|
|