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

Side by Side Diff: Source/core/workers/WorkerGlobalScope.cpp

Issue 17648006: Rename WorkerContext to WorkerGlobalScope (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/workers/WorkerGlobalScope.h ('k') | Source/core/workers/WorkerGlobalScope.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2009, 2011 Google Inc. All Rights Reserved. 3 * Copyright (C) 2009, 2011 Google Inc. All Rights Reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 * 25 *
26 */ 26 */
27 27
28 #include "config.h" 28 #include "config.h"
29 29
30 #include "core/workers/WorkerContext.h" 30 #include "core/workers/WorkerGlobalScope.h"
31 31
32 #include <wtf/RefPtr.h>
33 #include <wtf/UnusedParam.h>
34 #include "bindings/v8/ScheduledAction.h" 32 #include "bindings/v8/ScheduledAction.h"
35 #include "bindings/v8/ScriptSourceCode.h" 33 #include "bindings/v8/ScriptSourceCode.h"
36 #include "bindings/v8/ScriptValue.h" 34 #include "bindings/v8/ScriptValue.h"
37 #include "core/dom/ActiveDOMObject.h" 35 #include "core/dom/ActiveDOMObject.h"
38 #include "core/dom/ContextLifecycleNotifier.h" 36 #include "core/dom/ContextLifecycleNotifier.h"
39 #include "core/dom/ErrorEvent.h" 37 #include "core/dom/ErrorEvent.h"
40 #include "core/dom/Event.h" 38 #include "core/dom/Event.h"
41 #include "core/dom/MessagePort.h" 39 #include "core/dom/MessagePort.h"
42 #include "core/html/DOMURL.h" 40 #include "core/html/DOMURL.h"
43 #include "core/inspector/InspectorConsoleInstrumentation.h" 41 #include "core/inspector/InspectorConsoleInstrumentation.h"
44 #include "core/inspector/ScriptCallStack.h" 42 #include "core/inspector/ScriptCallStack.h"
45 #include "core/inspector/WorkerInspectorController.h" 43 #include "core/inspector/WorkerInspectorController.h"
46 #include "core/loader/WorkerThreadableLoader.h" 44 #include "core/loader/WorkerThreadableLoader.h"
47 #include "core/page/ContentSecurityPolicy.h" 45 #include "core/page/ContentSecurityPolicy.h"
48 #include "core/page/DOMTimer.h" 46 #include "core/page/DOMTimer.h"
49 #include "core/page/DOMWindow.h" 47 #include "core/page/DOMWindow.h"
50 #include "core/page/WorkerNavigator.h" 48 #include "core/page/WorkerNavigator.h"
51 #include "core/platform/NotImplemented.h" 49 #include "core/platform/NotImplemented.h"
52 #include "core/workers/WorkerLocation.h" 50 #include "core/workers/WorkerLocation.h"
53 #include "core/workers/WorkerObjectProxy.h" 51 #include "core/workers/WorkerObjectProxy.h"
54 #include "core/workers/WorkerScriptLoader.h" 52 #include "core/workers/WorkerScriptLoader.h"
55 #include "core/workers/WorkerThread.h" 53 #include "core/workers/WorkerThread.h"
56 #include "weborigin/KURL.h" 54 #include "weborigin/KURL.h"
57 #include "weborigin/SecurityOrigin.h" 55 #include "weborigin/SecurityOrigin.h"
56 #include "wtf/RefPtr.h"
57 #include "wtf/UnusedParam.h"
58 58
59 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS) 59 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
60 #include "modules/notifications/NotificationCenter.h" 60 #include "modules/notifications/NotificationCenter.h"
61 #endif 61 #endif
62 62
63 #include "core/dom/ExceptionCode.h" 63 #include "core/dom/ExceptionCode.h"
64 64
65 namespace WebCore { 65 namespace WebCore {
66 66
67 class CloseWorkerContextTask : public ScriptExecutionContext::Task { 67 class CloseWorkerGlobalScopeTask : public ScriptExecutionContext::Task {
68 public: 68 public:
69 static PassOwnPtr<CloseWorkerContextTask> create() 69 static PassOwnPtr<CloseWorkerGlobalScopeTask> create()
70 { 70 {
71 return adoptPtr(new CloseWorkerContextTask); 71 return adoptPtr(new CloseWorkerGlobalScopeTask);
72 } 72 }
73 73
74 virtual void performTask(ScriptExecutionContext *context) 74 virtual void performTask(ScriptExecutionContext *context)
75 { 75 {
76 ASSERT_WITH_SECURITY_IMPLICATION(context->isWorkerContext()); 76 ASSERT_WITH_SECURITY_IMPLICATION(context->isWorkerGlobalScope());
77 WorkerContext* workerContext = static_cast<WorkerContext*>(context); 77 WorkerGlobalScope* workerGlobalScope = static_cast<WorkerGlobalScope*>(c ontext);
78 // Notify parent that this context is closed. Parent is responsible for calling WorkerThread::stop(). 78 // Notify parent that this context is closed. Parent is responsible for calling WorkerThread::stop().
79 workerContext->thread()->workerReportingProxy().workerContextClosed(); 79 workerGlobalScope->thread()->workerReportingProxy().workerGlobalScopeClo sed();
80 } 80 }
81 81
82 virtual bool isCleanupTask() const { return true; } 82 virtual bool isCleanupTask() const { return true; }
83 }; 83 };
84 84
85 WorkerContext::WorkerContext(const KURL& url, const String& userAgent, WorkerThr ead* thread, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin) 85 WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, W orkerThread* thread, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin)
86 : m_url(url) 86 : m_url(url)
87 , m_userAgent(userAgent) 87 , m_userAgent(userAgent)
88 , m_script(adoptPtr(new WorkerScriptController(this))) 88 , m_script(adoptPtr(new WorkerScriptController(this)))
89 , m_thread(thread) 89 , m_thread(thread)
90 , m_workerInspectorController(adoptPtr(new WorkerInspectorController(this))) 90 , m_workerInspectorController(adoptPtr(new WorkerInspectorController(this)))
91 , m_closing(false) 91 , m_closing(false)
92 , m_eventQueue(WorkerEventQueue::create(this)) 92 , m_eventQueue(WorkerEventQueue::create(this))
93 , m_topOrigin(topOrigin) 93 , m_topOrigin(topOrigin)
94 , m_timeOrigin(timeOrigin) 94 , m_timeOrigin(timeOrigin)
95 { 95 {
96 ScriptWrappable::init(this); 96 ScriptWrappable::init(this);
97 setSecurityOrigin(SecurityOrigin::create(url)); 97 setSecurityOrigin(SecurityOrigin::create(url));
98 } 98 }
99 99
100 WorkerContext::~WorkerContext() 100 WorkerGlobalScope::~WorkerGlobalScope()
101 { 101 {
102 ASSERT(thread()->isCurrentThread()); 102 ASSERT(thread()->isCurrentThread());
103 103
104 // Make sure we have no observers. 104 // Make sure we have no observers.
105 notifyObserversOfStop(); 105 notifyObserversOfStop();
106 106
107 // Notify proxy that we are going away. This can free the WorkerThread objec t, so do not access it after this. 107 // Notify proxy that we are going away. This can free the WorkerThread objec t, so do not access it after this.
108 thread()->workerReportingProxy().workerContextDestroyed(); 108 thread()->workerReportingProxy().workerGlobalScopeDestroyed();
109 } 109 }
110 110
111 void WorkerContext::applyContentSecurityPolicyFromString(const String& policy, C ontentSecurityPolicy::HeaderType contentSecurityPolicyType) 111 void WorkerGlobalScope::applyContentSecurityPolicyFromString(const String& polic y, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
112 { 112 {
113 setContentSecurityPolicy(ContentSecurityPolicy::create(this)); 113 setContentSecurityPolicy(ContentSecurityPolicy::create(this));
114 contentSecurityPolicy()->didReceiveHeader(policy, contentSecurityPolicyType) ; 114 contentSecurityPolicy()->didReceiveHeader(policy, contentSecurityPolicyType) ;
115 } 115 }
116 116
117 ScriptExecutionContext* WorkerContext::scriptExecutionContext() const 117 ScriptExecutionContext* WorkerGlobalScope::scriptExecutionContext() const
118 { 118 {
119 return const_cast<WorkerContext*>(this); 119 return const_cast<WorkerGlobalScope*>(this);
120 } 120 }
121 121
122 const KURL& WorkerContext::virtualURL() const 122 const KURL& WorkerGlobalScope::virtualURL() const
123 { 123 {
124 return m_url; 124 return m_url;
125 } 125 }
126 126
127 KURL WorkerContext::virtualCompleteURL(const String& url) const 127 KURL WorkerGlobalScope::virtualCompleteURL(const String& url) const
128 { 128 {
129 return completeURL(url); 129 return completeURL(url);
130 } 130 }
131 131
132 KURL WorkerContext::completeURL(const String& url) const 132 KURL WorkerGlobalScope::completeURL(const String& url) const
133 { 133 {
134 // Always return a null URL when passed a null string. 134 // Always return a null URL when passed a null string.
135 // FIXME: Should we change the KURL constructor to have this behavior? 135 // FIXME: Should we change the KURL constructor to have this behavior?
136 if (url.isNull()) 136 if (url.isNull())
137 return KURL(); 137 return KURL();
138 // Always use UTF-8 in Workers. 138 // Always use UTF-8 in Workers.
139 return KURL(m_url, url); 139 return KURL(m_url, url);
140 } 140 }
141 141
142 String WorkerContext::userAgent(const KURL&) const 142 String WorkerGlobalScope::userAgent(const KURL&) const
143 { 143 {
144 return m_userAgent; 144 return m_userAgent;
145 } 145 }
146 146
147 void WorkerContext::disableEval(const String& errorMessage) 147 void WorkerGlobalScope::disableEval(const String& errorMessage)
148 { 148 {
149 m_script->disableEval(errorMessage); 149 m_script->disableEval(errorMessage);
150 } 150 }
151 151
152 WorkerLocation* WorkerContext::location() const 152 WorkerLocation* WorkerGlobalScope::location() const
153 { 153 {
154 if (!m_location) 154 if (!m_location)
155 m_location = WorkerLocation::create(m_url); 155 m_location = WorkerLocation::create(m_url);
156 return m_location.get(); 156 return m_location.get();
157 } 157 }
158 158
159 void WorkerContext::close() 159 void WorkerGlobalScope::close()
160 { 160 {
161 if (m_closing) 161 if (m_closing)
162 return; 162 return;
163 163
164 // Let current script run to completion but prevent future script evaluation s. 164 // Let current script run to completion but prevent future script evaluation s.
165 // After m_closing is set, all the tasks in the queue continue to be fetched but only 165 // After m_closing is set, all the tasks in the queue continue to be fetched but only
166 // tasks with isCleanupTask()==true will be executed. 166 // tasks with isCleanupTask()==true will be executed.
167 m_closing = true; 167 m_closing = true;
168 postTask(CloseWorkerContextTask::create()); 168 postTask(CloseWorkerGlobalScopeTask::create());
169 } 169 }
170 170
171 WorkerNavigator* WorkerContext::navigator() const 171 WorkerNavigator* WorkerGlobalScope::navigator() const
172 { 172 {
173 if (!m_navigator) 173 if (!m_navigator)
174 m_navigator = WorkerNavigator::create(m_userAgent); 174 m_navigator = WorkerNavigator::create(m_userAgent);
175 return m_navigator.get(); 175 return m_navigator.get();
176 } 176 }
177 177
178 void WorkerContext::postTask(PassOwnPtr<Task> task) 178 void WorkerGlobalScope::postTask(PassOwnPtr<Task> task)
179 { 179 {
180 thread()->runLoop().postTask(task); 180 thread()->runLoop().postTask(task);
181 } 181 }
182 182
183 int WorkerContext::setTimeout(PassOwnPtr<ScheduledAction> action, int timeout) 183 int WorkerGlobalScope::setTimeout(PassOwnPtr<ScheduledAction> action, int timeou t)
184 { 184 {
185 return DOMTimer::install(scriptExecutionContext(), action, timeout, true); 185 return DOMTimer::install(scriptExecutionContext(), action, timeout, true);
186 } 186 }
187 187
188 void WorkerContext::clearTimeout(int timeoutId) 188 void WorkerGlobalScope::clearTimeout(int timeoutId)
189 { 189 {
190 DOMTimer::removeById(scriptExecutionContext(), timeoutId); 190 DOMTimer::removeById(scriptExecutionContext(), timeoutId);
191 } 191 }
192 192
193 void WorkerContext::clearInspector() 193 void WorkerGlobalScope::clearInspector()
194 { 194 {
195 m_workerInspectorController.clear(); 195 m_workerInspectorController.clear();
196 } 196 }
197 197
198 int WorkerContext::setInterval(PassOwnPtr<ScheduledAction> action, int timeout) 198 int WorkerGlobalScope::setInterval(PassOwnPtr<ScheduledAction> action, int timeo ut)
199 { 199 {
200 return DOMTimer::install(scriptExecutionContext(), action, timeout, false); 200 return DOMTimer::install(scriptExecutionContext(), action, timeout, false);
201 } 201 }
202 202
203 void WorkerContext::clearInterval(int timeoutId) 203 void WorkerGlobalScope::clearInterval(int timeoutId)
204 { 204 {
205 DOMTimer::removeById(scriptExecutionContext(), timeoutId); 205 DOMTimer::removeById(scriptExecutionContext(), timeoutId);
206 } 206 }
207 207
208 void WorkerContext::importScripts(const Vector<String>& urls, ExceptionCode& ec) 208 void WorkerGlobalScope::importScripts(const Vector<String>& urls, ExceptionCode& ec)
209 { 209 {
210 ASSERT(contentSecurityPolicy()); 210 ASSERT(contentSecurityPolicy());
211 ec = 0; 211 ec = 0;
212 Vector<String>::const_iterator urlsEnd = urls.end(); 212 Vector<String>::const_iterator urlsEnd = urls.end();
213 Vector<KURL> completedURLs; 213 Vector<KURL> completedURLs;
214 for (Vector<String>::const_iterator it = urls.begin(); it != urlsEnd; ++it) { 214 for (Vector<String>::const_iterator it = urls.begin(); it != urlsEnd; ++it) {
215 const KURL& url = scriptExecutionContext()->completeURL(*it); 215 const KURL& url = scriptExecutionContext()->completeURL(*it);
216 if (!url.isValid()) { 216 if (!url.isValid()) {
217 ec = SYNTAX_ERR; 217 ec = SYNTAX_ERR;
218 return; 218 return;
(...skipping 17 matching lines...) Expand all
236 236
237 ScriptValue exception; 237 ScriptValue exception;
238 m_script->evaluate(ScriptSourceCode(scriptLoader->script(), scriptLoader ->responseURL()), &exception); 238 m_script->evaluate(ScriptSourceCode(scriptLoader->script(), scriptLoader ->responseURL()), &exception);
239 if (!exception.hasNoValue()) { 239 if (!exception.hasNoValue()) {
240 m_script->setException(exception); 240 m_script->setException(exception);
241 return; 241 return;
242 } 242 }
243 } 243 }
244 } 244 }
245 245
246 EventTarget* WorkerContext::errorEventTarget() 246 EventTarget* WorkerGlobalScope::errorEventTarget()
247 { 247 {
248 return this; 248 return this;
249 } 249 }
250 250
251 void WorkerContext::logExceptionToConsole(const String& errorMessage, const Stri ng& sourceURL, int lineNumber, PassRefPtr<ScriptCallStack>) 251 void WorkerGlobalScope::logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, PassRefPtr<ScriptCallStack>)
252 { 252 {
253 thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, l ineNumber, sourceURL); 253 thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, l ineNumber, sourceURL);
254 } 254 }
255 255
256 void WorkerContext::addConsoleMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier) 256 void WorkerGlobalScope::addConsoleMessage(MessageSource source, MessageLevel lev el, const String& message, unsigned long requestIdentifier)
257 { 257 {
258 if (!isContextThread()) { 258 if (!isContextThread()) {
259 postTask(AddConsoleMessageTask::create(source, level, message)); 259 postTask(AddConsoleMessageTask::create(source, level, message));
260 return; 260 return;
261 } 261 }
262 thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, le vel, message, 0, String()); 262 thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, le vel, message, 0, String());
263 263
264 addMessageToWorkerConsole(source, level, message, String(), 0, 0, 0, request Identifier); 264 addMessageToWorkerConsole(source, level, message, String(), 0, 0, 0, request Identifier);
265 } 265 }
266 266
267 void WorkerContext::addMessage(MessageSource source, MessageLevel level, const S tring& message, const String& sourceURL, unsigned lineNumber, PassRefPtr<ScriptC allStack> callStack, ScriptState* state, unsigned long requestIdentifier) 267 void WorkerGlobalScope::addMessage(MessageSource source, MessageLevel level, con st String& message, const String& sourceURL, unsigned lineNumber, PassRefPtr<Scr iptCallStack> callStack, ScriptState* state, unsigned long requestIdentifier)
268 { 268 {
269 if (!isContextThread()) { 269 if (!isContextThread()) {
270 postTask(AddConsoleMessageTask::create(source, level, message)); 270 postTask(AddConsoleMessageTask::create(source, level, message));
271 return; 271 return;
272 } 272 }
273 thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, le vel, message, lineNumber, sourceURL); 273 thread()->workerReportingProxy().postConsoleMessageToWorkerObject(source, le vel, message, lineNumber, sourceURL);
274 addMessageToWorkerConsole(source, level, message, sourceURL, lineNumber, cal lStack, state, requestIdentifier); 274 addMessageToWorkerConsole(source, level, message, sourceURL, lineNumber, cal lStack, state, requestIdentifier);
275 } 275 }
276 276
277 void WorkerContext::addMessageToWorkerConsole(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber, Pas sRefPtr<ScriptCallStack> callStack, ScriptState* state, unsigned long requestIde ntifier) 277 void WorkerGlobalScope::addMessageToWorkerConsole(MessageSource source, MessageL evel level, const String& message, const String& sourceURL, unsigned lineNumber, PassRefPtr<ScriptCallStack> callStack, ScriptState* state, unsigned long reques tIdentifier)
278 { 278 {
279 ASSERT(isContextThread()); 279 ASSERT(isContextThread());
280 if (callStack) 280 if (callStack)
281 InspectorInstrumentation::addMessageToConsole(this, source, LogMessageTy pe, level, message, callStack, requestIdentifier); 281 InspectorInstrumentation::addMessageToConsole(this, source, LogMessageTy pe, level, message, callStack, requestIdentifier);
282 else 282 else
283 InspectorInstrumentation::addMessageToConsole(this, source, LogMessageTy pe, level, message, sourceURL, lineNumber, state, requestIdentifier); 283 InspectorInstrumentation::addMessageToConsole(this, source, LogMessageTy pe, level, message, sourceURL, lineNumber, state, requestIdentifier);
284 } 284 }
285 285
286 bool WorkerContext::isContextThread() const 286 bool WorkerGlobalScope::isContextThread() const
287 { 287 {
288 return thread()->isCurrentThread(); 288 return thread()->isCurrentThread();
289 } 289 }
290 290
291 bool WorkerContext::isJSExecutionForbidden() const 291 bool WorkerGlobalScope::isJSExecutionForbidden() const
292 { 292 {
293 return m_script->isExecutionForbidden(); 293 return m_script->isExecutionForbidden();
294 } 294 }
295 295
296 EventTargetData* WorkerContext::eventTargetData() 296 EventTargetData* WorkerGlobalScope::eventTargetData()
297 { 297 {
298 return &m_eventTargetData; 298 return &m_eventTargetData;
299 } 299 }
300 300
301 EventTargetData* WorkerContext::ensureEventTargetData() 301 EventTargetData* WorkerGlobalScope::ensureEventTargetData()
302 { 302 {
303 return &m_eventTargetData; 303 return &m_eventTargetData;
304 } 304 }
305 305
306 WorkerContext::Observer::Observer(WorkerContext* context) 306 WorkerGlobalScope::Observer::Observer(WorkerGlobalScope* context)
307 : m_context(context) 307 : m_context(context)
308 { 308 {
309 ASSERT(m_context && m_context->isContextThread()); 309 ASSERT(m_context && m_context->isContextThread());
310 m_context->registerObserver(this); 310 m_context->registerObserver(this);
311 } 311 }
312 312
313 WorkerContext::Observer::~Observer() 313 WorkerGlobalScope::Observer::~Observer()
314 { 314 {
315 if (!m_context) 315 if (!m_context)
316 return; 316 return;
317 ASSERT(m_context->isContextThread()); 317 ASSERT(m_context->isContextThread());
318 m_context->unregisterObserver(this); 318 m_context->unregisterObserver(this);
319 } 319 }
320 320
321 void WorkerContext::Observer::stopObserving() 321 void WorkerGlobalScope::Observer::stopObserving()
322 { 322 {
323 if (!m_context) 323 if (!m_context)
324 return; 324 return;
325 ASSERT(m_context->isContextThread()); 325 ASSERT(m_context->isContextThread());
326 m_context->unregisterObserver(this); 326 m_context->unregisterObserver(this);
327 m_context = 0; 327 m_context = 0;
328 } 328 }
329 329
330 void WorkerContext::registerObserver(Observer* observer) 330 void WorkerGlobalScope::registerObserver(Observer* observer)
331 { 331 {
332 ASSERT(observer); 332 ASSERT(observer);
333 m_workerObservers.add(observer); 333 m_workerObservers.add(observer);
334 } 334 }
335 335
336 void WorkerContext::unregisterObserver(Observer* observer) 336 void WorkerGlobalScope::unregisterObserver(Observer* observer)
337 { 337 {
338 ASSERT(observer); 338 ASSERT(observer);
339 m_workerObservers.remove(observer); 339 m_workerObservers.remove(observer);
340 } 340 }
341 341
342 void WorkerContext::notifyObserversOfStop() 342 void WorkerGlobalScope::notifyObserversOfStop()
343 { 343 {
344 HashSet<Observer*>::iterator iter = m_workerObservers.begin(); 344 HashSet<Observer*>::iterator iter = m_workerObservers.begin();
345 while (iter != m_workerObservers.end()) { 345 while (iter != m_workerObservers.end()) {
346 WorkerContext::Observer* observer = *iter; 346 WorkerGlobalScope::Observer* observer = *iter;
347 observer->stopObserving(); 347 observer->stopObserving();
348 observer->notifyStop(); 348 observer->notifyStop();
349 iter = m_workerObservers.begin(); 349 iter = m_workerObservers.begin();
350 } 350 }
351 } 351 }
352 352
353 WorkerEventQueue* WorkerContext::eventQueue() const 353 WorkerEventQueue* WorkerGlobalScope::eventQueue() const
354 { 354 {
355 return m_eventQueue.get(); 355 return m_eventQueue.get();
356 } 356 }
357 357
358 } // namespace WebCore 358 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/workers/WorkerGlobalScope.h ('k') | Source/core/workers/WorkerGlobalScope.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698