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

Side by Side Diff: Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h

Issue 10270006: Merge 113138 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 7 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #ifndef WorkerThreadableWebSocketChannel_h 31 #ifndef WorkerThreadableWebSocketChannel_h
32 #define WorkerThreadableWebSocketChannel_h 32 #define WorkerThreadableWebSocketChannel_h
33 33
34 #if ENABLE(WEB_SOCKETS) && ENABLE(WORKERS) 34 #if ENABLE(WEB_SOCKETS) && ENABLE(WORKERS)
35 35
36 #include "PlatformString.h" 36 #include "PlatformString.h"
37 #include "ThreadableWebSocketChannel.h" 37 #include "ThreadableWebSocketChannel.h"
38 #include "WebSocketChannelClient.h" 38 #include "WebSocketChannelClient.h"
39 #include "WorkerContext.h"
39 40
40 #include <wtf/PassRefPtr.h> 41 #include <wtf/PassRefPtr.h>
41 #include <wtf/RefCounted.h> 42 #include <wtf/RefCounted.h>
42 #include <wtf/RefPtr.h> 43 #include <wtf/RefPtr.h>
43 #include <wtf/Threading.h> 44 #include <wtf/Threading.h>
44 45
45 namespace WebCore { 46 namespace WebCore {
46 47
47 class KURL; 48 class KURL;
48 class ScriptExecutionContext; 49 class ScriptExecutionContext;
(...skipping 19 matching lines...) Expand all
68 virtual ThreadableWebSocketChannel::SendResult send(const String& message) O VERRIDE; 69 virtual ThreadableWebSocketChannel::SendResult send(const String& message) O VERRIDE;
69 virtual ThreadableWebSocketChannel::SendResult send(const ArrayBuffer&) OVER RIDE; 70 virtual ThreadableWebSocketChannel::SendResult send(const ArrayBuffer&) OVER RIDE;
70 virtual ThreadableWebSocketChannel::SendResult send(const Blob&) OVERRIDE; 71 virtual ThreadableWebSocketChannel::SendResult send(const Blob&) OVERRIDE;
71 virtual unsigned long bufferedAmount() const OVERRIDE; 72 virtual unsigned long bufferedAmount() const OVERRIDE;
72 virtual void close(int code, const String& reason) OVERRIDE; 73 virtual void close(int code, const String& reason) OVERRIDE;
73 virtual void fail(const String& reason) OVERRIDE; 74 virtual void fail(const String& reason) OVERRIDE;
74 virtual void disconnect() OVERRIDE; // Will suppress didClose(). 75 virtual void disconnect() OVERRIDE; // Will suppress didClose().
75 virtual void suspend() OVERRIDE; 76 virtual void suspend() OVERRIDE;
76 virtual void resume() OVERRIDE; 77 virtual void resume() OVERRIDE;
77 78
78 using RefCounted<WorkerThreadableWebSocketChannel>::ref;
79 using RefCounted<WorkerThreadableWebSocketChannel>::deref;
80
81 protected:
82 virtual void refThreadableWebSocketChannel() { ref(); }
83 virtual void derefThreadableWebSocketChannel() { deref(); }
84
85 private:
86 // Generated by the bridge. The Peer and its bridge should have identical 79 // Generated by the bridge. The Peer and its bridge should have identical
87 // lifetimes. 80 // lifetimes.
88 class Peer : public WebSocketChannelClient { 81 class Peer : public WebSocketChannelClient {
89 WTF_MAKE_NONCOPYABLE(Peer); WTF_MAKE_FAST_ALLOCATED; 82 WTF_MAKE_NONCOPYABLE(Peer); WTF_MAKE_FAST_ALLOCATED;
90 public: 83 public:
91 static Peer* create(PassRefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper, WorkerLoaderProxy& loaderProxy, ScriptExecutionContext* context, const String& taskMode) 84 static Peer* create(PassRefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper, WorkerLoaderProxy& loaderProxy, ScriptExecutionContext* context, const String& taskMode)
92 { 85 {
93 return new Peer(clientWrapper, loaderProxy, context, taskMode); 86 return new Peer(clientWrapper, loaderProxy, context, taskMode);
94 } 87 }
95 ~Peer(); 88 ~Peer();
(...skipping 20 matching lines...) Expand all
116 109
117 private: 110 private:
118 Peer(PassRefPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderPr oxy&, ScriptExecutionContext*, const String& taskMode); 111 Peer(PassRefPtr<ThreadableWebSocketChannelClientWrapper>, WorkerLoaderPr oxy&, ScriptExecutionContext*, const String& taskMode);
119 112
120 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper; 113 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
121 WorkerLoaderProxy& m_loaderProxy; 114 WorkerLoaderProxy& m_loaderProxy;
122 RefPtr<ThreadableWebSocketChannel> m_mainWebSocketChannel; 115 RefPtr<ThreadableWebSocketChannel> m_mainWebSocketChannel;
123 String m_taskMode; 116 String m_taskMode;
124 }; 117 };
125 118
119 using RefCounted<WorkerThreadableWebSocketChannel>::ref;
120 using RefCounted<WorkerThreadableWebSocketChannel>::deref;
121
122 protected:
123 virtual void refThreadableWebSocketChannel() { ref(); }
124 virtual void derefThreadableWebSocketChannel() { deref(); }
125
126 private:
126 // Bridge for Peer. Running on the worker thread. 127 // Bridge for Peer. Running on the worker thread.
127 class Bridge : public RefCounted<Bridge> { 128 class Bridge : public RefCounted<Bridge> {
128 public: 129 public:
129 static PassRefPtr<Bridge> create(PassRefPtr<ThreadableWebSocketChannelCl ientWrapper> workerClientWrapper, PassRefPtr<WorkerContext> workerContext, const String& taskMode) 130 static PassRefPtr<Bridge> create(PassRefPtr<ThreadableWebSocketChannelCl ientWrapper> workerClientWrapper, PassRefPtr<WorkerContext> workerContext, const String& taskMode)
130 { 131 {
131 return adoptRef(new Bridge(workerClientWrapper, workerContext, taskM ode)); 132 return adoptRef(new Bridge(workerClientWrapper, workerContext, taskM ode));
132 } 133 }
133 ~Bridge(); 134 ~Bridge();
135 void initialize();
134 void connect(const KURL&, const String& protocol); 136 void connect(const KURL&, const String& protocol);
135 ThreadableWebSocketChannel::SendResult send(const String& message); 137 ThreadableWebSocketChannel::SendResult send(const String& message);
136 ThreadableWebSocketChannel::SendResult send(const ArrayBuffer&); 138 ThreadableWebSocketChannel::SendResult send(const ArrayBuffer&);
137 ThreadableWebSocketChannel::SendResult send(const Blob&); 139 ThreadableWebSocketChannel::SendResult send(const Blob&);
138 unsigned long bufferedAmount(); 140 unsigned long bufferedAmount();
139 void close(int code, const String& reason); 141 void close(int code, const String& reason);
140 void fail(const String& reason); 142 void fail(const String& reason);
141 void disconnect(); 143 void disconnect();
142 void suspend(); 144 void suspend();
143 void resume(); 145 void resume();
144 146
145 using RefCounted<Bridge>::ref; 147 using RefCounted<Bridge>::ref;
146 using RefCounted<Bridge>::deref; 148 using RefCounted<Bridge>::deref;
147 149
148 private: 150 private:
149 Bridge(PassRefPtr<ThreadableWebSocketChannelClientWrapper>, PassRefPtr<W orkerContext>, const String& taskMode); 151 Bridge(PassRefPtr<ThreadableWebSocketChannelClientWrapper>, PassRefPtr<W orkerContext>, const String& taskMode);
150 152
151 static void setWebSocketChannel(ScriptExecutionContext*, Bridge* thisPtr , Peer*, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, bool useHixie76Pro tocol); 153 static void setWebSocketChannel(ScriptExecutionContext*, Bridge* thisPtr , Peer*, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, bool useHixie76Pro tocol);
152 154
153 // Executed on the main thread to create a Peer for this bridge. 155 // Executed on the main thread to create a Peer for this bridge.
154 static void mainThreadCreateWebSocketChannel(ScriptExecutionContext*, Br idge* thisPtr, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, const String & taskMode); 156 static void mainThreadInitialize(ScriptExecutionContext*, WorkerLoaderPr oxy*, PassRefPtr<ThreadableWebSocketChannelClientWrapper>, const String& taskMod e);
155 157
156 // Executed on the worker context's thread. 158 // Executed on the worker context's thread.
157 void clearClientWrapper(); 159 void clearClientWrapper();
158 160
159 void setMethodNotCompleted(); 161 void setMethodNotCompleted();
160 void waitForMethodCompletion(); 162 void waitForMethodCompletion();
161 163
162 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper; 164 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
163 RefPtr<WorkerContext> m_workerContext; 165 RefPtr<WorkerContext> m_workerContext;
164 WorkerLoaderProxy& m_loaderProxy; 166 WorkerLoaderProxy& m_loaderProxy;
(...skipping 17 matching lines...) Expand all
182 RefPtr<WorkerContext> m_workerContext; 184 RefPtr<WorkerContext> m_workerContext;
183 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper; 185 RefPtr<ThreadableWebSocketChannelClientWrapper> m_workerClientWrapper;
184 RefPtr<Bridge> m_bridge; 186 RefPtr<Bridge> m_bridge;
185 }; 187 };
186 188
187 } // namespace WebCore 189 } // namespace WebCore
188 190
189 #endif // ENABLE(WEB_SOCKETS) 191 #endif // ENABLE(WEB_SOCKETS)
190 192
191 #endif // WorkerThreadableWebSocketChannel_h 193 #endif // WorkerThreadableWebSocketChannel_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698