Changeset 87074 in webkit


Ignore:
Timestamp:
May 23, 2011 8:07:47 AM (13 years ago)
Author:
yurys@chromium.org
Message:

2011-05-23 Yury Semikhatsky <yurys@chromium.org>

Reviewed by Pavel Feldman.

[Chromium] Web Inspector: provide initial implementation of worker inspector transport
https://bugs.webkit.org/show_bug.cgi?id=60267

All methods of WorkerContextInspectorProxy are inlined in WorkerContextProxy and
the class itself is removed. Messages from worker inspector to page inspector
are sent by means of WorkerReportingProxy.

  • GNUmakefile.list.am:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • inspector/InspectorWorkerAgent.cpp: (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::WorkerFrontendChannel): (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::proxy): (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::dispatchMessageFromWorker): (WebCore::InspectorWorkerAgent::sendMessageToWorker): (WebCore::InspectorWorkerAgent::didStartWorkerContext):
  • inspector/InspectorWorkerAgent.h:
  • inspector/WorkerInspectorController.cpp: (WebCore::WorkerInspectorController::connectFrontend): (WebCore::WorkerInspectorController::disconnectFrontend):
  • inspector/WorkerInspectorController.h:
  • workers/DefaultSharedWorkerRepository.cpp: (WebCore::SharedWorkerProxy::postMessageToPageInspector):
  • workers/WorkerContextInspectorProxy.h: Removed.
  • workers/WorkerContextProxy.h: (WebCore::WorkerContextProxy::PageInspector::~PageInspector): (WebCore::WorkerContextProxy::connectToInspector): (WebCore::WorkerContextProxy::disconnectFromInspector): (WebCore::WorkerContextProxy::sendMessageToInspector):
  • workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::postMessageToPageInspector):
  • workers/WorkerMessagingProxy.h:
  • workers/WorkerReportingProxy.h:

2011-05-23 Yury Semikhatsky <yurys@chromium.org>

Reviewed by Pavel Feldman.

[Chromium] Web Inspector: provide initial implementation of worker inspector transport
https://bugs.webkit.org/show_bug.cgi?id=60267

WebWorker and WebWorkerClient are extended with methods for passing
DevTools messages between worker context inspector and page inspector.

  • public/WebWorker.h: (WebKit::WebWorker::attachDevTools): (WebKit::WebWorker::detachDevTools): (WebKit::WebWorker::dispatchDevToolsMessage):
  • public/WebWorkerClient.h: (WebKit::WebWorkerClient::dispatchDevToolsMessage):
  • src/WebWorkerBase.cpp: (WebKit::WebWorkerBase::postMessageToPageInspector): (WebKit::WebWorkerBase::postMessageToPageInspectorTask):
  • src/WebWorkerBase.h:
  • src/WebWorkerClientImpl.cpp: (WebKit::WebWorkerClientImpl::WebWorkerClientImpl): (WebKit::WebWorkerClientImpl::connectToInspector): (WebKit::WebWorkerClientImpl::disconnectFromInspector): (WebKit::WebWorkerClientImpl::sendMessageToInspector): (WebKit::WebWorkerClientImpl::dispatchDevToolsMessage):
  • src/WebWorkerClientImpl.h:
  • src/WebWorkerImpl.cpp: (WebKit::WebWorkerImpl::startWorkerContext): (WebKit::connectToWorkerContextInspectorTask): (WebKit::WebWorkerImpl::attachDevTools): (WebKit::disconnectFromWorkerContextInspectorTask): (WebKit::WebWorkerImpl::detachDevTools): (WebKit::dispatchOnInspectorBackendTask): (WebKit::WebWorkerImpl::dispatchDevToolsMessage):
  • src/WebWorkerImpl.h:
Location:
trunk/Source
Files:
1 deleted
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87073 r87074  
     12011-05-23  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        [Chromium] Web Inspector: provide initial implementation of worker inspector transport
     6        https://bugs.webkit.org/show_bug.cgi?id=60267
     7
     8        All methods of WorkerContextInspectorProxy are inlined in WorkerContextProxy and
     9        the class itself is removed. Messages from worker inspector to page inspector
     10        are sent by means of WorkerReportingProxy.
     11
     12        * GNUmakefile.list.am:
     13        * WebCore.gypi:
     14        * WebCore.vcproj/WebCore.vcproj:
     15        * WebCore.xcodeproj/project.pbxproj:
     16        * inspector/InspectorWorkerAgent.cpp:
     17        (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::WorkerFrontendChannel):
     18        (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::proxy):
     19        (WebCore::InspectorWorkerAgent::WorkerFrontendChannel::dispatchMessageFromWorker):
     20        (WebCore::InspectorWorkerAgent::sendMessageToWorker):
     21        (WebCore::InspectorWorkerAgent::didStartWorkerContext):
     22        * inspector/InspectorWorkerAgent.h:
     23        * inspector/WorkerInspectorController.cpp:
     24        (WebCore::WorkerInspectorController::connectFrontend):
     25        (WebCore::WorkerInspectorController::disconnectFrontend):
     26        * inspector/WorkerInspectorController.h:
     27        * workers/DefaultSharedWorkerRepository.cpp:
     28        (WebCore::SharedWorkerProxy::postMessageToPageInspector):
     29        * workers/WorkerContextInspectorProxy.h: Removed.
     30        * workers/WorkerContextProxy.h:
     31        (WebCore::WorkerContextProxy::PageInspector::~PageInspector):
     32        (WebCore::WorkerContextProxy::connectToInspector):
     33        (WebCore::WorkerContextProxy::disconnectFromInspector):
     34        (WebCore::WorkerContextProxy::sendMessageToInspector):
     35        * workers/WorkerMessagingProxy.cpp:
     36        (WebCore::WorkerMessagingProxy::postMessageToPageInspector):
     37        * workers/WorkerMessagingProxy.h:
     38        * workers/WorkerReportingProxy.h:
     39
    1402011-05-23  Sheriff Bot  <webkit.review.bot@gmail.com>
    241
  • trunk/Source/WebCore/GNUmakefile.list.am

    r86854 r87074  
    35963596        Source/WebCore/workers/WorkerContext.cpp \
    35973597        Source/WebCore/workers/WorkerContext.h \
    3598         Source/WebCore/workers/WorkerContextInspectorProxy.h \
    35993598        Source/WebCore/workers/WorkerContextProxy.h \
    36003599        Source/WebCore/workers/Worker.cpp \
  • trunk/Source/WebCore/WebCore.gypi

    r86879 r87074  
    60176017            'workers/WorkerContext.cpp',
    60186018            'workers/WorkerContext.h',
    6019             'workers/WorkerContextInspectorProxy.h',
    60206019            'workers/WorkerContextProxy.h',
    60216020            'workers/WorkerLoaderProxy.h',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r86854 r87074  
    4815148151                        </File>
    4815248152                        <File
    48153                                 RelativePath="..\workers\WorkerContextInspectorProxy.h"
    48154                                 >
    48155                         </File>
    48156                         <File
    4815748153                                RelativePath="..\workers\WorkerContextProxy.h"
    4815848154                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r86944 r87074  
    56505650                F3810C1B1365A49600ED6E33 /* InspectorWorkerAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */; };
    56515651                F3810C1C1365A49600ED6E33 /* InspectorWorkerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */; };
    5652                 F3810C1E1365A4D400ED6E33 /* WorkerContextInspectorProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F3810C1D1365A4D400ED6E33 /* WorkerContextInspectorProxy.h */; };
    56535652                F392249C126F11AE00A926D9 /* ScriptCallStackFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F392249A126F11AE00A926D9 /* ScriptCallStackFactory.cpp */; };
    56545653                F392249D126F11AE00A926D9 /* ScriptCallStackFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F392249B126F11AE00A926D9 /* ScriptCallStackFactory.h */; };
     
    1214412143                F3810C191365A49600ED6E33 /* InspectorWorkerAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorWorkerAgent.cpp; sourceTree = "<group>"; };
    1214512144                F3810C1A1365A49600ED6E33 /* InspectorWorkerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorWorkerAgent.h; sourceTree = "<group>"; };
    12146                 F3810C1D1365A4D400ED6E33 /* WorkerContextInspectorProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerContextInspectorProxy.h; path = workers/WorkerContextInspectorProxy.h; sourceTree = "<group>"; };
    1214712145                F392249A126F11AE00A926D9 /* ScriptCallStackFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallStackFactory.cpp; sourceTree = "<group>"; };
    1214812146                F392249B126F11AE00A926D9 /* ScriptCallStackFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptCallStackFactory.h; sourceTree = "<group>"; };
     
    1338413382                                2E4346370F546A8200B0F1BA /* WorkerContext.h */,
    1338513383                                2E4346380F546A8200B0F1BA /* WorkerContext.idl */,
    13386                                 F3810C1D1365A4D400ED6E33 /* WorkerContextInspectorProxy.h */,
    1338713384                                2E4346390F546A8200B0F1BA /* WorkerContextProxy.h */,
    1338813385                                18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */,
     
    2277422771                                2E4346460F546A8200B0F1BA /* Worker.h in Headers */,
    2277522772                                2E4346490F546A8200B0F1BA /* WorkerContext.h in Headers */,
    22776                                 F3810C1E1365A4D400ED6E33 /* WorkerContextInspectorProxy.h in Headers */,
    2277722773                                2E43464B0F546A8200B0F1BA /* WorkerContextProxy.h in Headers */,
    2277822774                                F34742E11343631F00531BC2 /* WorkerDebuggerAgent.h in Headers */,
  • trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp

    r84773 r87074  
    3939#include "InspectorValues.h"
    4040#include "InstrumentingAgents.h"
    41 #include "WorkerContextInspectorProxy.h"
    4241#include "WorkerContextProxy.h"
    4342#include <wtf/PassOwnPtr.h>
     
    4645namespace WebCore {
    4746
    48 class InspectorWorkerAgent::WorkerFrontendChannel : public InspectorFrontendChannel {
     47class InspectorWorkerAgent::WorkerFrontendChannel : public WorkerContextProxy::PageInspector {
    4948public:
    50     explicit WorkerFrontendChannel(InspectorFrontend* frontend, WorkerContextInspectorProxy* inspectorProxy)
     49    explicit WorkerFrontendChannel(InspectorFrontend* frontend, WorkerContextProxy* proxy)
    5150        : m_frontend(frontend)
    52         , m_inspectorProxy(inspectorProxy)
     51        , m_proxy(proxy)
    5352        , m_id(s_nextId++)
    5453    {
     
    5756
    5857    int id() const { return m_id; }
    59     WorkerContextInspectorProxy* inspectorProxy() const { return m_inspectorProxy; }
     58    WorkerContextProxy* proxy() const { return m_proxy; }
    6059
    6160private:
    62     virtual bool sendMessageToFrontend(const String& message)
     61    // WorkerContextProxy::PageInspector implementation
     62    virtual void dispatchMessageFromWorker(const String& message)
    6363    {
    6464        RefPtr<InspectorValue> value = InspectorValue::parseJSON(message);
    6565        if (!value)
    66             return false;
     66            return;
    6767        RefPtr<InspectorObject> messageObject = value->asObject();
    6868        if (!messageObject)
    69             return false;
     69            return;
    7070        m_frontend->worker()->dispatchMessageFromWorker(m_id, messageObject);
    71         return true;
    7271    }
    7372
    7473    InspectorFrontend* m_frontend;
    75     WorkerContextInspectorProxy* m_inspectorProxy;
     74    WorkerContextProxy* m_proxy;
    7675    int m_id;
    7776    static int s_nextId;
     
    112111    WorkerFrontendChannel* channel = m_idToChannel.get(workerId);
    113112    if (channel)
    114         channel->inspectorProxy()->sendMessageToWorkerContextInspector(message->toJSONString());
     113        channel->proxy()->sendMessageToInspector(message->toJSONString());
    115114    else
    116115        *error = "Worker is gone";
     
    119118void InspectorWorkerAgent::didStartWorkerContext(WorkerContextProxy* workerContextProxy)
    120119{
    121     WorkerFrontendChannel* channel = new WorkerFrontendChannel(m_inspectorFrontend, workerContextProxy->inspectorProxy());
     120    WorkerFrontendChannel* channel = new WorkerFrontendChannel(m_inspectorFrontend, workerContextProxy);
    122121    m_idToChannel.set(channel->id(), channel);
    123122
    124     workerContextProxy->inspectorProxy()->connectFrontend(channel);
     123    workerContextProxy->connectToInspector(channel);
    125124    if (m_inspectorFrontend)
    126125        m_inspectorFrontend->worker()->workerCreated(channel->id());
  • trunk/Source/WebCore/inspector/InspectorWorkerAgent.h

    r84773 r87074  
    4242class InstrumentingAgents;
    4343class WorkerContextProxy;
    44 class WorkerContextInspectorProxy;
    4544
    4645typedef String ErrorString;
  • trunk/Source/WebCore/inspector/WorkerInspectorController.cpp

    r86955 r87074  
    4444#include "InspectorState.h"
    4545#include "InstrumentingAgents.h"
     46#include "WorkerContext.h"
    4647#include "WorkerDebuggerAgent.h"
     48#include "WorkerReportingProxy.h"
     49#include "WorkerThread.h"
    4750#include <wtf/PassOwnPtr.h>
    4851
     
    6467    }
    6568
     69    WorkerContext* m_workerContext;
     70};
     71
     72class PageInspectorProxy : public InspectorFrontendChannel {
     73public:
     74    explicit PageInspectorProxy(WorkerContext* workerContext) : m_workerContext(workerContext) { }
     75    virtual ~PageInspectorProxy() { }
     76private:
     77    virtual bool sendMessageToFrontend(const String& message)
     78    {
     79        m_workerContext->thread()->workerReportingProxy().postMessageToPageInspector(message);
     80        return true;
     81    }
    6682    WorkerContext* m_workerContext;
    6783};
     
    94110}
    95111
    96 void WorkerInspectorController::connectFrontend(InspectorFrontendChannel* channel)
     112void WorkerInspectorController::connectFrontend()
    97113{
    98114    ASSERT(!m_frontend);
    99115    m_state->unmute();
    100     m_frontend = adoptPtr(new InspectorFrontend(channel));
     116    m_frontendChannel = adoptPtr(new PageInspectorProxy(m_workerContext));
     117    m_frontend = adoptPtr(new InspectorFrontend(m_frontendChannel.get()));
    101118    m_backendDispatcher = adoptRef(new InspectorBackendDispatcher(
    102         channel,
     119        m_frontendChannel.get(),
    103120#if ENABLE(OFFLINE_WEB_APPLICATIONS)
    104121        0, // InspectorApplicationCacheAgent
     
    150167
    151168    m_frontend.clear();
     169    m_frontendChannel.clear();
    152170}
    153171
  • trunk/Source/WebCore/inspector/WorkerInspectorController.h

    r86955 r87074  
    6060    ~WorkerInspectorController();
    6161
    62     void connectFrontend(InspectorFrontendChannel*);
     62    void connectFrontend();
    6363    void disconnectFrontend();
    6464    void dispatchMessageFromFrontend(const String&);
     
    7272    OwnPtr<InspectorRuntimeAgent> m_runtimeAgent;
    7373
     74    OwnPtr<InspectorFrontendChannel> m_frontendChannel;
    7475    OwnPtr<InspectorFrontend> m_frontend;
    7576    RefPtr<InspectorBackendDispatcher> m_backendDispatcher;
  • trunk/Source/WebCore/workers/DefaultSharedWorkerRepository.cpp

    r84923 r87074  
    8282    virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL);
    8383    virtual void postConsoleMessageToWorkerObject(MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL);
     84#if ENABLE(INSPECTOR)
     85    virtual void postMessageToPageInspector(const String&);
     86#endif
    8487    virtual void workerContextClosed();
    8588    virtual void workerContextDestroyed();
     
    179182}
    180183
     184#if ENABLE(INSPECTOR)
     185void SharedWorkerProxy::postMessageToPageInspector(const String&)
     186{
     187}
     188#endif
     189
    181190void SharedWorkerProxy::workerContextClosed()
    182191{
  • trunk/Source/WebCore/workers/WorkerContextProxy.h

    r84773 r87074  
    4242    class KURL;
    4343    class Worker;
    44     class WorkerContextInspectorProxy;
    4544
    4645    // A proxy to talk to the worker context.
     
    6261
    6362#if ENABLE(INSPECTOR)
    64         virtual WorkerContextInspectorProxy* inspectorProxy() { return 0; }
     63        class PageInspector {
     64        public:
     65            virtual ~PageInspector() { }
     66            virtual void dispatchMessageFromWorker(const String&) = 0;
     67        };
     68        virtual void connectToInspector(PageInspector*) { }
     69        virtual void disconnectFromInspector() { }
     70        virtual void sendMessageToInspector(const String&) { }
    6571#endif
    6672    };
  • trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp

    r85165 r87074  
    354354}
    355355
     356#if ENABLE(INSPECTOR)
     357void WorkerMessagingProxy::postMessageToPageInspector(const String&)
     358{
     359}
     360#endif
     361
    356362void WorkerMessagingProxy::confirmMessageFromWorkerObject(bool hasPendingActivity)
    357363{
  • trunk/Source/WebCore/workers/WorkerMessagingProxy.h

    r76248 r87074  
    6565        virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL);
    6666        virtual void postConsoleMessageToWorkerObject(MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL);
     67#if ENABLE(INSPECTOR)
     68        virtual void postMessageToPageInspector(const String&);
     69#endif
    6770        virtual void confirmMessageFromWorkerObject(bool hasPendingActivity);
    6871        virtual void reportPendingActivity(bool hasPendingActivity);
  • trunk/Source/WebCore/workers/WorkerReportingProxy.h

    r86251 r87074  
    4747
    4848        virtual void postConsoleMessageToWorkerObject(MessageSource, MessageType, MessageLevel, const String& message, int lineNumber, const String& sourceURL) = 0;
    49 
     49#if ENABLE(INSPECTOR)
     50        virtual void postMessageToPageInspector(const String&) = 0;
     51#endif
    5052        // Invoked when close() is invoked on the worker context.
    5153        virtual void workerContextClosed() = 0;
  • trunk/Source/WebKit/chromium/ChangeLog

    r87050 r87074  
     12011-05-23  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        [Chromium] Web Inspector: provide initial implementation of worker inspector transport
     6        https://bugs.webkit.org/show_bug.cgi?id=60267
     7
     8        WebWorker and WebWorkerClient are extended with methods for passing
     9        DevTools messages between worker context inspector and page inspector.
     10
     11        * public/WebWorker.h:
     12        (WebKit::WebWorker::attachDevTools):
     13        (WebKit::WebWorker::detachDevTools):
     14        (WebKit::WebWorker::dispatchDevToolsMessage):
     15        * public/WebWorkerClient.h:
     16        (WebKit::WebWorkerClient::dispatchDevToolsMessage):
     17        * src/WebWorkerBase.cpp:
     18        (WebKit::WebWorkerBase::postMessageToPageInspector):
     19        (WebKit::WebWorkerBase::postMessageToPageInspectorTask):
     20        * src/WebWorkerBase.h:
     21        * src/WebWorkerClientImpl.cpp:
     22        (WebKit::WebWorkerClientImpl::WebWorkerClientImpl):
     23        (WebKit::WebWorkerClientImpl::connectToInspector):
     24        (WebKit::WebWorkerClientImpl::disconnectFromInspector):
     25        (WebKit::WebWorkerClientImpl::sendMessageToInspector):
     26        (WebKit::WebWorkerClientImpl::dispatchDevToolsMessage):
     27        * src/WebWorkerClientImpl.h:
     28        * src/WebWorkerImpl.cpp:
     29        (WebKit::WebWorkerImpl::startWorkerContext):
     30        (WebKit::connectToWorkerContextInspectorTask):
     31        (WebKit::WebWorkerImpl::attachDevTools):
     32        (WebKit::disconnectFromWorkerContextInspectorTask):
     33        (WebKit::WebWorkerImpl::detachDevTools):
     34        (WebKit::dispatchOnInspectorBackendTask):
     35        (WebKit::WebWorkerImpl::dispatchDevToolsMessage):
     36        * src/WebWorkerImpl.h:
     37
    1382011-05-22  Greg Simon  <gregsimon@chromium.org>
    239
  • trunk/Source/WebKit/chromium/public/WebWorker.h

    r50681 r87074  
    5656    virtual void workerObjectDestroyed() = 0;
    5757    virtual void clientDestroyed() = 0;
     58
     59    virtual void attachDevTools() { }
     60    virtual void detachDevTools() { }
     61    virtual void dispatchDevToolsMessage(const WebString&) { }
    5862};
    5963
  • trunk/Source/WebKit/chromium/public/WebWorkerClient.h

    r50681 r87074  
    5353    virtual void reportPendingActivity(bool hasPendingActivity) = 0;
    5454
     55    virtual void dispatchDevToolsMessage(const WebString&) { }
     56
    5557protected:
    5658    ~WebWorkerClient() { }
  • trunk/Source/WebKit/chromium/src/WebWorkerBase.cpp

    r86356 r87074  
    423423}
    424424
     425void WebWorkerBase::postMessageToPageInspector(const String& message)
     426{
     427    dispatchTaskToMainThread(createCallbackTask(&postMessageToPageInspectorTask, AllowCrossThreadAccess(this), message));
     428}
     429
     430void WebWorkerBase::postMessageToPageInspectorTask(ScriptExecutionContext*, WebWorkerBase* thisPtr, const String& message)
     431{
     432    if (!thisPtr->client())
     433        return;
     434    thisPtr->client()->dispatchDevToolsMessage(message);
     435}
     436
    425437void WebWorkerBase::confirmMessageFromWorkerObject(bool hasPendingActivity)
    426438{
  • trunk/Source/WebKit/chromium/src/WebWorkerBase.h

    r86356 r87074  
    7575        WebCore::MessageSource, WebCore::MessageType,
    7676        WebCore::MessageLevel, const WTF::String&, int, const WTF::String&);
     77    virtual void postMessageToPageInspector(const WTF::String&);
    7778    virtual void confirmMessageFromWorkerObject(bool);
    7879    virtual void reportPendingActivity(bool);
     
    139140        int lineNumber,
    140141        const WTF::String& sourceURL);
     142    static void postMessageToPageInspectorTask(WebCore::ScriptExecutionContext*, WebWorkerBase*, const WTF::String&);
    141143    static void confirmMessageTask(
    142144        WebCore::ScriptExecutionContext* context,
  • trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp

    r86135 r87074  
    121121    , m_workerContextHadPendingActivity(false)
    122122    , m_workerThreadId(currentThread())
     123    , m_pageInspector(0)
    123124{
    124125}
     
    206207    WebWorkerBase::dispatchTaskToMainThread(createCallbackTask(&workerObjectDestroyedTask,
    207208                                                               AllowCrossThreadAccess(this)));
     209}
     210
     211void WebWorkerClientImpl::connectToInspector(WorkerContextProxy::PageInspector* pageInspector)
     212{
     213    ASSERT(!m_pageInspector);
     214    m_pageInspector = pageInspector;
     215    m_webWorker->attachDevTools();
     216}
     217
     218void WebWorkerClientImpl::disconnectFromInspector()
     219{
     220    m_webWorker->detachDevTools();
     221    m_pageInspector = 0;
     222}
     223
     224void WebWorkerClientImpl::sendMessageToInspector(const String& message)
     225{
     226    m_webWorker->dispatchDevToolsMessage(message);
    208227}
    209228
     
    316335}
    317336
     337void WebWorkerClientImpl::dispatchDevToolsMessage(const WebString& message)
     338{
     339    if (m_pageInspector)
     340        m_pageInspector->dispatchMessageFromWorker(message);
     341}
     342
    318343void WebWorkerClientImpl::startWorkerContextTask(ScriptExecutionContext* context,
    319344                                                 WebWorkerClientImpl* thisPtr,
  • trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.h

    r86362 r87074  
    3737#include "WebWorkerClient.h"
    3838#include "WorkerContextProxy.h"
     39#include <wtf/OwnPtr.h>
    3940#include <wtf/PassOwnPtr.h>
    4041#include <wtf/RefPtr.h>
     
    7475    virtual void workerObjectDestroyed();
    7576
     77    virtual void connectToInspector(WorkerContextProxy::PageInspector*);
     78    virtual void disconnectFromInspector();
     79    virtual void sendMessageToInspector(const String&);
     80
    7681    // WebWorkerClient methods:
    7782    // These are called on the main WebKit thread.
     
    7984    virtual void postExceptionToWorkerObject(const WebString&, int, const WebString&);
    8085
    81     // FIXME: the below is for compatibility only and should be     
    82     // removed once Chromium is updated to remove message 
     86    // FIXME: the below is for compatibility only and should be
     87    // removed once Chromium is updated to remove message
    8388    // destination parameter <http://webkit.org/b/37155>.
    8489    virtual void postConsoleMessageToWorkerObject(int, int, int, int, const WebString&, int, const WebString&);
     
    105110        return true;
    106111    }
     112
     113    virtual void dispatchDevToolsMessage(const WebString&);
    107114
    108115private:
     
    161168    bool m_workerContextHadPendingActivity;
    162169    ThreadIdentifier m_workerThreadId;
     170    WorkerContextProxy::PageInspector* m_pageInspector;
    163171};
    164172
  • trunk/Source/WebKit/chromium/src/WebWorkerImpl.cpp

    r86067 r87074  
    4343#include "SerializedScriptValue.h"
    4444#include "SubstituteData.h"
     45#include "WorkerInspectorController.h"
     46#include <wtf/OwnPtr.h>
    4547#include <wtf/Threading.h>
    4648
     
    102104{
    103105    initializeLoader(scriptUrl);
    104     setWorkerThread(DedicatedWorkerThread::create(scriptUrl, userAgent,
    105                                                   sourceCode, *this, *this));
     106    setWorkerThread(DedicatedWorkerThread::create(scriptUrl, userAgent, sourceCode, *this, *this));
    106107    // Worker initialization means a pending activity.
    107108    reportPendingActivity(true);
     
    147148}
    148149
     150static void connectToWorkerContextInspectorTask(ScriptExecutionContext* context, bool)
     151{
     152    ASSERT(context->isWorkerContext());
     153    static_cast<WorkerContext*>(context)->workerInspectorController()->connectFrontend();
     154}
     155
     156void WebWorkerImpl::attachDevTools()
     157{
     158    workerThread()->runLoop().postTask(createCallbackTask(connectToWorkerContextInspectorTask, true));
     159}
     160
     161static void disconnectFromWorkerContextInspectorTask(ScriptExecutionContext* context, bool)
     162{
     163    ASSERT(context->isWorkerContext());
     164    static_cast<WorkerContext*>(context)->workerInspectorController()->disconnectFrontend();
     165}
     166
     167void WebWorkerImpl::detachDevTools()
     168{
     169    workerThread()->runLoop().postTask(createCallbackTask(disconnectFromWorkerContextInspectorTask, true));
     170}
     171
     172static void dispatchOnInspectorBackendTask(ScriptExecutionContext* context, const String& message)
     173{
     174    ASSERT(context->isWorkerContext());
     175    static_cast<WorkerContext*>(context)->workerInspectorController()->dispatchMessageFromFrontend(message);
     176}
     177
     178void WebWorkerImpl::dispatchDevToolsMessage(const WebString& message)
     179{
     180    workerThread()->runLoop().postTaskForMode(createCallbackTask(dispatchOnInspectorBackendTask, String(message)), "debugger");
     181}
     182
    149183#else
    150184
  • trunk/Source/WebKit/chromium/src/WebWorkerImpl.h

    r65021 r87074  
    4141
    4242namespace WebKit {
    43 class WebView;
    4443
    4544// This class is used by the worker process code to talk to the WebCore::Worker
     
    5958    virtual void clientDestroyed();
    6059
     60    virtual void attachDevTools();
     61    virtual void detachDevTools();
     62    virtual void dispatchDevToolsMessage(const WebKit::WebString&);
     63
    6164    // WebWorkerBase methods:
    6265    virtual WebWorkerClient* client() { return m_client; }
     
    7477
    7578    WebWorkerClient* m_client;
    76 
    7779};
    7880
Note: See TracChangeset for help on using the changeset viewer.