| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 | 119 |
| 120 virtual void postTaskToLoader(PassOwnPtr<ExecutionContextTask> task) OVERRID
E | 120 virtual void postTaskToLoader(PassOwnPtr<ExecutionContextTask> task) OVERRID
E |
| 121 { | 121 { |
| 122 toWebLocalFrameImpl(m_embeddedWorker.m_mainFrame)->frame()->document()->
postTask(task); | 122 toWebLocalFrameImpl(m_embeddedWorker.m_mainFrame)->frame()->document()->
postTask(task); |
| 123 } | 123 } |
| 124 | 124 |
| 125 virtual bool postTaskToWorkerGlobalScope(PassOwnPtr<ExecutionContextTask> ta
sk) OVERRIDE | 125 virtual bool postTaskToWorkerGlobalScope(PassOwnPtr<ExecutionContextTask> ta
sk) OVERRIDE |
| 126 { | 126 { |
| 127 if (m_embeddedWorker.m_askedToTerminate || !m_embeddedWorker.m_workerThr
ead) | 127 if (m_embeddedWorker.m_askedToTerminate || !m_embeddedWorker.m_workerThr
ead) |
| 128 return false; | 128 return false; |
| 129 return m_embeddedWorker.m_workerThread->runLoop().postTask(task); | 129 m_embeddedWorker.m_workerThread->postTask(task); |
| 130 return !m_embeddedWorker.m_workerThread->terminated(); |
| 130 } | 131 } |
| 131 | 132 |
| 132 private: | 133 private: |
| 133 explicit LoaderProxy(WebEmbeddedWorkerImpl& embeddedWorker) | 134 explicit LoaderProxy(WebEmbeddedWorkerImpl& embeddedWorker) |
| 134 : m_embeddedWorker(embeddedWorker) | 135 : m_embeddedWorker(embeddedWorker) |
| 135 { | 136 { |
| 136 } | 137 } |
| 137 | 138 |
| 138 // Not owned, embedded worker owns this. | 139 // Not owned, embedded worker owns this. |
| 139 WebEmbeddedWorkerImpl& m_embeddedWorker; | 140 WebEmbeddedWorkerImpl& m_embeddedWorker; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 ASSERT(!m_askedToTerminate); | 234 ASSERT(!m_askedToTerminate); |
| 234 bool wasPaused = (m_pauseAfterDownloadState == IsPausedAfterDownload); | 235 bool wasPaused = (m_pauseAfterDownloadState == IsPausedAfterDownload); |
| 235 m_pauseAfterDownloadState = DontPauseAfterDownload; | 236 m_pauseAfterDownloadState = DontPauseAfterDownload; |
| 236 if (wasPaused) | 237 if (wasPaused) |
| 237 startWorkerThread(); | 238 startWorkerThread(); |
| 238 } | 239 } |
| 239 | 240 |
| 240 void WebEmbeddedWorkerImpl::resumeWorkerContext() | 241 void WebEmbeddedWorkerImpl::resumeWorkerContext() |
| 241 { | 242 { |
| 242 if (m_workerThread) | 243 if (m_workerThread) |
| 243 m_workerThread->runLoop().postDebuggerTask(createCrossThreadTask(resumeW
orkerContextTask, true)); | 244 m_workerThread->postDebuggerTask(createCrossThreadTask(resumeWorkerConte
xtTask, true)); |
| 244 } | 245 } |
| 245 | 246 |
| 246 void WebEmbeddedWorkerImpl::attachDevTools() | 247 void WebEmbeddedWorkerImpl::attachDevTools() |
| 247 { | 248 { |
| 248 if (m_workerThread) | 249 if (m_workerThread) |
| 249 m_workerThread->runLoop().postDebuggerTask(createCrossThreadTask(connect
ToWorkerContextInspectorTask, true)); | 250 m_workerThread->postDebuggerTask(createCrossThreadTask(connectToWorkerCo
ntextInspectorTask, true)); |
| 250 } | 251 } |
| 251 | 252 |
| 252 void WebEmbeddedWorkerImpl::reattachDevTools(const WebString& savedState) | 253 void WebEmbeddedWorkerImpl::reattachDevTools(const WebString& savedState) |
| 253 { | 254 { |
| 254 m_workerThread->runLoop().postDebuggerTask(createCrossThreadTask(reconnectTo
WorkerContextInspectorTask, String(savedState))); | 255 m_workerThread->postDebuggerTask(createCrossThreadTask(reconnectToWorkerCont
extInspectorTask, String(savedState))); |
| 255 } | 256 } |
| 256 | 257 |
| 257 void WebEmbeddedWorkerImpl::detachDevTools() | 258 void WebEmbeddedWorkerImpl::detachDevTools() |
| 258 { | 259 { |
| 259 m_workerThread->runLoop().postDebuggerTask(createCrossThreadTask(disconnectF
romWorkerContextInspectorTask, true)); | 260 m_workerThread->postDebuggerTask(createCrossThreadTask(disconnectFromWorkerC
ontextInspectorTask, true)); |
| 260 } | 261 } |
| 261 | 262 |
| 262 void WebEmbeddedWorkerImpl::dispatchDevToolsMessage(const WebString& message) | 263 void WebEmbeddedWorkerImpl::dispatchDevToolsMessage(const WebString& message) |
| 263 { | 264 { |
| 264 if (m_askedToTerminate) | 265 if (m_askedToTerminate) |
| 265 return; | 266 return; |
| 266 m_workerThread->runLoop().postDebuggerTask(createCrossThreadTask(dispatchOnI
nspectorBackendTask, String(message))); | 267 m_workerThread->postDebuggerTask(createCrossThreadTask(dispatchOnInspectorBa
ckendTask, String(message))); |
| 267 m_workerThread->interruptAndDispatchInspectorCommands(); | 268 m_workerThread->interruptAndDispatchInspectorCommands(); |
| 268 } | 269 } |
| 269 | 270 |
| 270 void WebEmbeddedWorkerImpl::prepareShadowPageForLoader() | 271 void WebEmbeddedWorkerImpl::prepareShadowPageForLoader() |
| 271 { | 272 { |
| 272 // Create 'shadow page', which is never displayed and is used mainly to | 273 // Create 'shadow page', which is never displayed and is used mainly to |
| 273 // provide a context for loading on the main thread. | 274 // provide a context for loading on the main thread. |
| 274 // | 275 // |
| 275 // FIXME: This does mostly same as WebSharedWorkerImpl::initializeLoader. | 276 // FIXME: This does mostly same as WebSharedWorkerImpl::initializeLoader. |
| 276 // This code, and probably most of the code in this class should be shared | 277 // This code, and probably most of the code in this class should be shared |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 m_mainScriptLoader.clear(); | 362 m_mainScriptLoader.clear(); |
| 362 | 363 |
| 363 m_workerGlobalScopeProxy = ServiceWorkerGlobalScopeProxy::create(*this, *toW
ebLocalFrameImpl(m_mainFrame)->frame()->document(), *m_workerContextClient); | 364 m_workerGlobalScopeProxy = ServiceWorkerGlobalScopeProxy::create(*this, *toW
ebLocalFrameImpl(m_mainFrame)->frame()->document(), *m_workerContextClient); |
| 364 m_loaderProxy = LoaderProxy::create(*this); | 365 m_loaderProxy = LoaderProxy::create(*this); |
| 365 | 366 |
| 366 m_workerThread = ServiceWorkerThread::create(*m_loaderProxy, *m_workerGlobal
ScopeProxy, startupData.release()); | 367 m_workerThread = ServiceWorkerThread::create(*m_loaderProxy, *m_workerGlobal
ScopeProxy, startupData.release()); |
| 367 m_workerThread->start(); | 368 m_workerThread->start(); |
| 368 } | 369 } |
| 369 | 370 |
| 370 } // namespace blink | 371 } // namespace blink |
| OLD | NEW |