2009-06-08 Dmitry Titov <dimich@chromium.org>
authordimich@chromium.org <dimich@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Jun 2009 03:01:52 +0000 (03:01 +0000)
committerdimich@chromium.org <dimich@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Jun 2009 03:01:52 +0000 (03:01 +0000)
commitd79c14262dec9db47ca13386bafc8f41bfa7797d
tree56ec1608348fa4d7ee38da3e5bbfa5014bca0259
parent548a52ced6b9f826110e440b3d33e1b3613b2d0c
2009-06-08  Dmitry Titov  <dimich@chromium.org>

        Reviewed by David Levin.

        https://bugs.webkit.org/show_bug.cgi?id=26126
        Refactor methods of WorkerMessagingProxy used to talk to main-thread loader into new interface.

        Split a couple of methods used to schedule cross-thread tasks between worker thread and loader thread
        implemented on WorkerMessagingProxy into a separate interface so the loading can be implemented in
        Chromium's workers.

        No changes in functionality so no tests added.

        * GNUmakefile.am:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        Added WorkerLoaderProxy.h to the bulid.

        * bindings/js/WorkerScriptController.cpp:
        (WebCore::WorkerScriptController::evaluate): WorkerThread::workerObjectProxy() now returns & instead of *
        * bindings/v8/WorkerScriptController.cpp:
        (WebCore::WorkerScriptController::evaluate): same.
        * workers/WorkerContext.cpp:
        (WebCore::WorkerContext::~WorkerContext): same.
        (WebCore::WorkerContext::reportException): same.
        (WebCore::WorkerContext::addMessage): same.
        (WebCore::WorkerContext::postMessage): same.

        * loader/WorkerThreadableLoader.cpp:
        (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::destroy):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
        (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveAuthenticationCancellation):
        Use WorkerLoaderProxy instead of WorkerMessagingProxy for the MainThreadBridge.
        Mostly rename.

        (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
        In addition to using WorkerLoaderProxy instead of WorkerMessagingProxy, the check for
        AskedToTerminate is removed. It seems to be an optimization for a very small number of cases
        when worker termination is requested a very short time before the request to load something
        (XHR or importScript) was dispatched on the main thread.

        * loader/WorkerThreadableLoader.h:
        Now keeps a pointer to WorkerLoaderProxy rather then to a WorkerMessagingProxy. This allows
        to implement WorkerThreadableLoader for Chromium.

        * workers/WorkerLoaderProxy.h: Added.
        (WebCore::WorkerLoaderProxy::~WorkerLoaderProxy):

        * workers/WorkerMessagingProxy.cpp:
        (WebCore::WorkerMessagingProxy::startWorkerContext):
        (WebCore::WorkerMessagingProxy::postTaskToLoader): Added ASSERT since this needs to be implemented for nested workers.
        * workers/WorkerMessagingProxy.h:
        Derived from WorkerLoaderProxy, the methods for posting tasks cross-thread are now virtual.
        Removed unused postTaskToWorkerContext() method.

        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::create):
        (WebCore::WorkerThread::WorkerThread):
        * workers/WorkerThread.h:
        (WebCore::WorkerThread::workerLoaderProxy):
        * workers/WorkerThread.cpp:
        (WebCore::WorkerThread::create):
        (WebCore::WorkerThread::WorkerThread):
        (WebCore::WorkerThread::workerThread):
        * workers/WorkerThread.h:
        (WebCore::WorkerThread::workerLoaderProxy):
        (WebCore::WorkerThread::workerObjectProxy):
        WorkerThread gets a new member of type WorkerLoaderProxy&, and accessor.
        Also, existing WorkerObjectProxy* member is now WorkerObjectProxy& because it can't be null.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@44515 268f45cc-cd09-0410-ab3c-d52691b4dbfc
14 files changed:
WebCore/ChangeLog
WebCore/GNUmakefile.am
WebCore/WebCore.vcproj/WebCore.vcproj
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/bindings/js/WorkerScriptController.cpp
WebCore/bindings/v8/WorkerScriptController.cpp
WebCore/loader/WorkerThreadableLoader.cpp
WebCore/loader/WorkerThreadableLoader.h
WebCore/workers/WorkerContext.cpp
WebCore/workers/WorkerLoaderProxy.h [new file with mode: 0644]
WebCore/workers/WorkerMessagingProxy.cpp
WebCore/workers/WorkerMessagingProxy.h
WebCore/workers/WorkerThread.cpp
WebCore/workers/WorkerThread.h