virtual void performTask(ScriptExecutionContext *context) { ASSERT(context->isWorkerContext()); WorkerContext* workerContext = static_cast<WorkerContext*>(context); // It's not safe to call clearScript until all the cleanup tasks posted by functions initiated by WorkerThreadShutdownStartTask have completed. workerContext->clearScript(); workerContext->thread()->runLoop().terminate(); }
virtual void performTask(ScriptExecutionContext *context) { ASSERT(context->isWorkerContext()); WorkerContext* workerContext = static_cast<WorkerContext*>(context); #if ENABLE(INSPECTOR) workerContext->clearInspector(); #endif // It's not safe to call clearScript until all the cleanup tasks posted by functions initiated by WorkerThreadShutdownStartTask have completed. workerContext->clearScript(); }
virtual void performTask(ScriptExecutionContext *context) { ASSERT(context->isWorkerContext()); WorkerContext* workerContext = static_cast<WorkerContext*>(context); // We currently ignore any DatabasePolicy used for the document's // databases; if it's actually used anywhere, this should be revisited. DatabaseTaskSynchronizer cleanupSync; workerContext->stopDatabases(&cleanupSync); workerContext->stopActiveDOMObjects(); workerContext->clearScript(); // We wait for the database thread to clean up all its stuff so that we // can do more stringent leak checks as we exit. cleanupSync.waitForTaskCompletion(); // Stick a shutdown command at the end of the queue, so that we deal // with all the cleanup tasks the databases post first. workerContext->postTask(WorkerThreadShutdownFinishTask::create()); }