Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=22308
        Improve Worker GC behavior

        * dom/ActiveDOMObject.cpp: (WebCore::ActiveDOMObject::hasPendingActivity):
        * dom/ActiveDOMObject.h:
        Made hasPendingActivity() virtual, letting Worker add behavior to it.

        * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate):
        * dom/WorkerThread.cpp: (WebCore::WorkerThread::workerThread):
        Tell message proxy whether there are active objects in the worker whenever JS execution
        finishes.

        * dom/ScriptExecutionContext.h: (WebCore::ScriptExecutionContext::activeDOMObjects):
        Added a typedef for activeDOMObjects() return type, necessary to declare iterators.

        * dom/Worker.h:
        * dom/Worker.cpp: (WebCore::Worker::hasPendingActivity): A Worker is active if it is still
        loading, or if it has unconfirmed messages, or it the worker thread has pending activity.

        * dom/WorkerContext.h:
        * dom/WorkerContext.cpp: (WebCore::WorkerContext::hasPendingActivity): Check all registered
        active objects for pending activity.

        * dom/WorkerMessagingProxy.cpp:
        (WebCore::MessageWorkerContextTask::performTask):
        (WebCore::WorkerThreadActivityReportTask::create):
        (WebCore::WorkerThreadActivityReportTask::WorkerThreadActivityReportTask):
        (WebCore::WorkerThreadActivityReportTask::performTask):
        (WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
        (WebCore::WorkerMessagingProxy::postMessageToWorkerContext):
        (WebCore::WorkerMessagingProxy::workerObjectDestroyed):
        (WebCore::WorkerMessagingProxy::workerContextDestroyedInternal):
        (WebCore::WorkerMessagingProxy::confirmWorkerThreadMessage):
        (WebCore::WorkerMessagingProxy::reportWorkerThreadActivity):
        (WebCore::WorkerMessagingProxy::reportWorkerThreadActivityInternal):
        (WebCore::WorkerMessagingProxy::workerThreadHasPendingActivity):
        * dom/WorkerMessagingProxy.h:
        Track outstanding messages, and activity reported by worker thread.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38549 268f45cc-cd09-0410-ab3c-d52691b4dbfc
12 files changed