Title: [98237] trunk
Revision
98237
Author
[email protected]
Date
2011-10-24 07:32:44 -0700 (Mon, 24 Oct 2011)

Log Message

Web Inspector: allow debugging dedicated worker initialization
https://bugs.webkit.org/show_bug.cgi?id=70723

Source/WebCore:

Now it is possible to pause each new dedicated worker on start. The user
needs to select a checkbox and then each newly created dedicated worker
will be paused on the first statement until the user resumes it explicitely.

Reviewed by Pavel Feldman.

* inspector/Inspector.json: resume command is added. It is similar to GDB's run
command, i.e. worker execution will be paused until explicit "resume" command is
received.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStartImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart):
* inspector/InspectorRuntimeAgent.cpp:
(WebCore::InspectorRuntimeAgent::resume):
(WebCore::InspectorRuntimeAgent::pauseWorkerContext):
* inspector/InspectorRuntimeAgent.h:
* inspector/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::shouldPauseDedicatedWorkerOnStart): returns true
if the user chose to automatically pause all new workers.
* inspector/InspectorWorkerAgent.h:
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::resume):
* inspector/front-end/WorkerManager.js:
(WebInspector.WorkerManager.loaded):
(WebInspector.WorkerManager.loadCompleted):
(WebInspector.WorkerManager.prototype._workerCreated):
(WebInspector.WorkerManager.prototype.openWorkerInspector):
(WebInspector.WorkerManager.prototype._openInspectorWindow):
* inspector/front-end/inspector.js:
(WebInspector.loaded):
* workers/Worker.cpp:
(WebCore::Worker::notifyFinished):
* workers/WorkerContextProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerContext): additional flag specifying
worker initial state(paused/not paused) is added to the factory method. The flag
will be carried to the corresponding WorkerThread.
(WebCore::WorkerMessagingProxy::connectToInspector):
* workers/WorkerMessagingProxy.h:

Source/WebKit/chromium:

Pass worker thread start mode to the worker thread.

Reviewed by Pavel Feldman.

* src/WebWorkerClientImpl.cpp:
(WebKit::WebWorkerClientImpl::startWorkerContext):
* src/WebWorkerClientImpl.h:

LayoutTests:

Reviewed by Pavel Feldman.

* inspector/protocol/runtime-agent-expected.txt:
* inspector/protocol/runtime-agent.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (98236 => 98237)


--- trunk/LayoutTests/ChangeLog	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/LayoutTests/ChangeLog	2011-10-24 14:32:44 UTC (rev 98237)
@@ -1,3 +1,13 @@
+2011-10-24  Yury Semikhatsky  <[email protected]>
+
+        Web Inspector: allow debugging dedicated worker initialization
+        https://bugs.webkit.org/show_bug.cgi?id=70723
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/protocol/runtime-agent-expected.txt:
+        * inspector/protocol/runtime-agent.html:
+
 2011-10-24  Alejandro G. Castro  <[email protected]>
 
         Unreviewed, skip failing test in GTK, added bug 70720. Rebaseline

Modified: trunk/LayoutTests/inspector/protocol/runtime-agent-expected.txt (98236 => 98237)


--- trunk/LayoutTests/inspector/protocol/runtime-agent-expected.txt	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/LayoutTests/inspector/protocol/runtime-agent-expected.txt	2011-10-24 14:32:44 UTC (rev 98237)
@@ -253,6 +253,22 @@
     id : <number>
 }
 
+-----------------------------------------------------------
+RuntimeAgent.run()
+
+request:
+{
+    method : "Runtime.run"
+    id : <number>
+}
+
+response:
+{
+    result : {
+    }
+    id : <number>
+}
+
 ===========================================================
 Coverage for RuntimeAgent
 {
@@ -261,5 +277,6 @@
     getProperties : "checked"
     releaseObject : "checked"
     releaseObjectGroup : "checked"
+    run : "checked"
 }
 

Modified: trunk/LayoutTests/inspector/protocol/runtime-agent.html (98236 => 98237)


--- trunk/LayoutTests/inspector/protocol/runtime-agent.html	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/LayoutTests/inspector/protocol/runtime-agent.html	2011-10-24 14:32:44 UTC (rev 98237)
@@ -28,7 +28,8 @@
 
             ["RuntimeAgent", "getProperties", result.objectId, true],
             ["RuntimeAgent", "releaseObject", result.objectId],
-            ["RuntimeAgent", "releaseObjectGroup", 'test']];
+            ["RuntimeAgent", "releaseObjectGroup", 'test'],
+            ["RuntimeAgent", "run"]];
 
         InspectorTest.runProtocolTestSuite("RuntimeAgent", testSuite, ['id', 'requestId', 'objectId', 'className']);
     }

Modified: trunk/Source/WebCore/ChangeLog (98236 => 98237)


--- trunk/Source/WebCore/ChangeLog	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/ChangeLog	2011-10-24 14:32:44 UTC (rev 98237)
@@ -1,3 +1,49 @@
+2011-10-24  Yury Semikhatsky  <[email protected]>
+
+        Web Inspector: allow debugging dedicated worker initialization
+        https://bugs.webkit.org/show_bug.cgi?id=70723
+
+        Now it is possible to pause each new dedicated worker on start. The user
+        needs to select a checkbox and then each newly created dedicated worker
+        will be paused on the first statement until the user resumes it explicitely.
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/Inspector.json: resume command is added. It is similar to GDB's run
+        command, i.e. worker execution will be paused until explicit "resume" command is
+        received.
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStartImpl):
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart):
+        * inspector/InspectorRuntimeAgent.cpp:
+        (WebCore::InspectorRuntimeAgent::resume):
+        (WebCore::InspectorRuntimeAgent::pauseWorkerContext):
+        * inspector/InspectorRuntimeAgent.h:
+        * inspector/InspectorWorkerAgent.cpp:
+        (WebCore::InspectorWorkerAgent::shouldPauseDedicatedWorkerOnStart): returns true
+        if the user chose to automatically pause all new workers.
+        * inspector/InspectorWorkerAgent.h:
+        * inspector/WorkerInspectorController.cpp:
+        (WebCore::WorkerInspectorController::resume):
+        * inspector/front-end/WorkerManager.js:
+        (WebInspector.WorkerManager.loaded):
+        (WebInspector.WorkerManager.loadCompleted):
+        (WebInspector.WorkerManager.prototype._workerCreated):
+        (WebInspector.WorkerManager.prototype.openWorkerInspector):
+        (WebInspector.WorkerManager.prototype._openInspectorWindow):
+        * inspector/front-end/inspector.js:
+        (WebInspector.loaded):
+        * workers/Worker.cpp:
+        (WebCore::Worker::notifyFinished):
+        * workers/WorkerContextProxy.h:
+        * workers/WorkerMessagingProxy.cpp:
+        (WebCore::WorkerMessagingProxy::startWorkerContext): additional flag specifying
+        worker initial state(paused/not paused) is added to the factory method. The flag
+        will be carried to the corresponding WorkerThread.
+        (WebCore::WorkerMessagingProxy::connectToInspector):
+        * workers/WorkerMessagingProxy.h:
+
 2011-10-21  Nikita Vasilyev  <[email protected]>
 
         Web Inspector: Make indent configurable

Modified: trunk/Source/WebCore/inspector/Inspector.json (98236 => 98237)


--- trunk/Source/WebCore/inspector/Inspector.json	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/Inspector.json	2011-10-24 14:32:44 UTC (rev 98237)
@@ -380,6 +380,11 @@
                     { "name": "objectGroup", "type": "string", "description": "Symbolic object group name." }
                 ],
                 "description": "Releases all remote objects that belong to a given group."
+            },
+            {
+                "name": "run",
+                "hidden": true,
+                "description": "Tells inspected instance(worker or page) that it can run in case it was started paused."
             }
         ]
     },

Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -780,6 +780,13 @@
 }
 
 #if ENABLE(WORKERS)
+bool InspectorInstrumentation::shouldPauseDedicatedWorkerOnStartImpl(InstrumentingAgents* instrumentingAgents)
+{
+    if (InspectorWorkerAgent* workerAgent = instrumentingAgents->inspectorWorkerAgent())
+        return workerAgent->shouldPauseDedicatedWorkerOnStart();
+    return false;
+}
+
 void InspectorInstrumentation::didStartWorkerContextImpl(InstrumentingAgents* instrumentingAgents, WorkerContextProxy* workerContextProxy, const KURL& url)
 {
     if (InspectorWorkerAgent* workerAgent = instrumentingAgents->inspectorWorkerAgent())

Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.h (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorInstrumentation.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -175,6 +175,7 @@
     static void didUseDOMStorage(Page*, StorageArea*, bool isLocalStorage, Frame*);
 
 #if ENABLE(WORKERS)
+    static bool shouldPauseDedicatedWorkerOnStart(ScriptExecutionContext*);
     static void didStartWorkerContext(ScriptExecutionContext*, WorkerContextProxy*, const KURL&);
     static void didCreateWorker(ScriptExecutionContext*, intptr_t id, const String& url, bool isSharedWorker);
     static void didDestroyWorker(ScriptExecutionContext*, intptr_t id);
@@ -306,6 +307,7 @@
     static void didUseDOMStorageImpl(InstrumentingAgents*, StorageArea*, bool isLocalStorage, Frame*);
 
 #if ENABLE(WORKERS)
+    static bool shouldPauseDedicatedWorkerOnStartImpl(InstrumentingAgents*);
     static void didStartWorkerContextImpl(InstrumentingAgents*, WorkerContextProxy*, const KURL&);
     static void didCreateWorkerImpl(InstrumentingAgents*, intptr_t id, const String& url, bool isSharedWorker);
     static void didDestroyWorkerImpl(InstrumentingAgents*, intptr_t id);
@@ -944,6 +946,16 @@
 }
 
 #if ENABLE(WORKERS)
+inline bool InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart(ScriptExecutionContext* context)
+{
+#if ENABLE(INSPECTOR)
+    FAST_RETURN_IF_NO_FRONTENDS(false);
+    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context))
+        return shouldPauseDedicatedWorkerOnStartImpl(instrumentingAgents);
+#endif
+    return false;
+}
+
 inline void InspectorInstrumentation::didStartWorkerContext(ScriptExecutionContext* context, WorkerContextProxy* proxy, const KURL& url)
 {
 #if ENABLE(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/InspectorRuntimeAgent.cpp (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorRuntimeAgent.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorRuntimeAgent.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -140,6 +140,11 @@
     m_injectedScriptManager->releaseObjectGroup(objectGroup);
 }
 
+void InspectorRuntimeAgent::run(ErrorString*)
+{
+    m_paused = false;
+}
+
 #if ENABLE(_javascript__DEBUGGER)
 void InspectorRuntimeAgent::setScriptDebugServer(ScriptDebugServer* scriptDebugServer)
 {
@@ -156,11 +161,6 @@
     // Keep waiting until execution is resumed.
     } while (result == MessageQueueMessageReceived && m_paused);
 }
-
-void InspectorRuntimeAgent::resume()
-{
-    m_paused = false;
-}
 #endif // ENABLE(WORKERS)
 #endif // ENABLE(_javascript__DEBUGGER)
 

Modified: trunk/Source/WebCore/inspector/InspectorRuntimeAgent.h (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorRuntimeAgent.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorRuntimeAgent.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -75,12 +75,12 @@
     void releaseObject(ErrorString*, const String& objectId);
     void getProperties(ErrorString*, const String& objectId, const bool* const ownProperties, RefPtr<InspectorArray>* result);
     void releaseObjectGroup(ErrorString*, const String& objectGroup);
+    void run(ErrorString*);
 
 #if ENABLE(_javascript__DEBUGGER)
     void setScriptDebugServer(ScriptDebugServer*);
 #if ENABLE(WORKERS)
     void pauseWorkerContext(WorkerContext*);
-    void resume();
 #endif
 #endif
 

Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -188,6 +188,11 @@
     m_inspectorState->setBoolean(WorkerAgentState::autoconnectToWorkers, value);
 }
 
+bool InspectorWorkerAgent::shouldPauseDedicatedWorkerOnStart()
+{
+    return m_inspectorState->getBoolean(WorkerAgentState::autoconnectToWorkers);
+}
+
 void InspectorWorkerAgent::didStartWorkerContext(WorkerContextProxy* workerContextProxy, const KURL& url)
 {
     WorkerFrontendChannel* channel = new WorkerFrontendChannel(m_inspectorFrontend, workerContextProxy);

Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.h (98236 => 98237)


--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -56,6 +56,7 @@
     void clearFrontend();
 
     // Called from InspectorInstrumentation
+    bool shouldPauseDedicatedWorkerOnStart();
     void didStartWorkerContext(WorkerContextProxy*, const KURL&);
     void workerContextTerminated(WorkerContextProxy*);
 

Modified: trunk/Source/WebCore/inspector/WorkerInspectorController.cpp (98236 => 98237)


--- trunk/Source/WebCore/inspector/WorkerInspectorController.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/WorkerInspectorController.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -209,7 +209,8 @@
 #if ENABLE(_javascript__DEBUGGER)
 void WorkerInspectorController::resume()
 {
-    m_runtimeAgent->resume();
+    ErrorString unused;
+    m_runtimeAgent->run(&unused);
 }
 #endif
 

Modified: trunk/Source/WebCore/inspector/front-end/WorkerManager.js (98236 => 98237)


--- trunk/Source/WebCore/inspector/front-end/WorkerManager.js	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/front-end/WorkerManager.js	2011-10-24 14:32:44 UTC (rev 98237)
@@ -47,13 +47,26 @@
 WebInspector.WorkerManager.loaded = function()
 {
     var workerId = WebInspector.queryParamsObject["dedicatedWorkerId"];
-    if (workerId)
+    if (workerId) {
         WebInspector.WorkerManager._initializeDedicatedWorkerFrontend(workerId);
-    else
+    } else
         WebInspector.workerManager = new WebInspector.WorkerManager();
+}
 
-    if (WebInspector.WorkerManager.isWorkerFrontend())
+WebInspector.WorkerManager.loadCompleted = function()
+{
+    // Make sure script execution of dedicated worker is resumed and then paused
+    // on the first script statement in case we autoattached to it.
+    if (WebInspector.queryParamsObject["workerPaused"]) {
+        DebuggerAgent.pause();
+        RuntimeAgent.run(calculateTitle);
+    } else if (WebInspector.WorkerManager.isWorkerFrontend())
+        calculateTitle();
+
+    function calculateTitle()
+    {
         WebInspector.WorkerManager._calculateWorkerInspectorTitle();
+    }
 }
 
 WebInspector.WorkerManager._initializeDedicatedWorkerFrontend = function(workerId)
@@ -104,7 +117,7 @@
     _workerCreated: function(workerId, url, inspectorConnected)
      {
         if (inspectorConnected)
-            this._openInspectorWindow(workerId);
+            this._openInspectorWindow(workerId, true);
         this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkerAdded, {workerId: workerId, url: url, inspectorConnected: inspectorConnected});
      },
 
@@ -123,13 +136,15 @@
 
     openWorkerInspector: function(workerId)
     {
-        this._openInspectorWindow(workerId);
+        this._openInspectorWindow(workerId, false);
         WorkerAgent.connectToWorker(workerId);
     },
 
-    _openInspectorWindow: function(workerId)
+    _openInspectorWindow: function(workerId, workerIsPaused)
     {
         var url = "" + "&dedicatedWorkerId=" + workerId;
+        if (workerIsPaused)
+            url += "&workerPaused=true";
         url = "" "");
         // Set location=0 just to make sure the front-end will be opened in a separate window, not in new tab.
         var workerInspectorWindow = window.open(url, undefined, "location=0");

Modified: trunk/Source/WebCore/inspector/front-end/inspector.js (98236 => 98237)


--- trunk/Source/WebCore/inspector/front-end/inspector.js	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/inspector/front-end/inspector.js	2011-10-24 14:32:44 UTC (rev 98237)
@@ -442,6 +442,7 @@
     }
     WebInspector.WorkerManager.loaded();
     WebInspector.doLoadedDone();
+    WebInspector.WorkerManager.loadCompleted();
 }
 
 WebInspector.doLoadedDone = function()

Modified: trunk/Source/WebCore/workers/Worker.cpp (98236 => 98237)


--- trunk/Source/WebCore/workers/Worker.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/workers/Worker.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -139,7 +139,10 @@
     if (m_scriptLoader->failed())
         dispatchEvent(Event::create(eventNames().errorEvent, false, true));
     else {
-        m_contextProxy->startWorkerContext(m_scriptLoader->url(), scriptExecutionContext()->userAgent(m_scriptLoader->url()), m_scriptLoader->script());
+        WorkerThreadStartMode startMode = DontPauseWorkerContextOnStart;
+        if (InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart(scriptExecutionContext()))
+            startMode = PauseWorkerContextOnStart;
+        m_contextProxy->startWorkerContext(m_scriptLoader->url(), scriptExecutionContext()->userAgent(m_scriptLoader->url()), m_scriptLoader->script(), startMode);
         InspectorInstrumentation::didStartWorkerContext(scriptExecutionContext(), m_contextProxy, m_scriptLoader->url());
         InspectorInstrumentation::scriptImported(scriptExecutionContext(), m_scriptLoader->identifier(), m_scriptLoader->script());
     }

Modified: trunk/Source/WebCore/workers/WorkerContextProxy.h (98236 => 98237)


--- trunk/Source/WebCore/workers/WorkerContextProxy.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/workers/WorkerContextProxy.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -34,6 +34,7 @@
 #if ENABLE(WORKERS)
 
 #include "MessagePort.h"
+#include "WorkerThread.h"
 #include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 
@@ -49,7 +50,7 @@
 
         virtual ~WorkerContextProxy() {}
 
-        virtual void startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode) = 0;
+        virtual void startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode) = 0;
 
         virtual void terminateWorkerContext() = 0;
 

Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp (98236 => 98237)


--- trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -266,9 +266,9 @@
            || (m_scriptExecutionContext->isWorkerContext() && currentThread() == static_cast<WorkerContext*>(m_scriptExecutionContext.get())->thread()->threadID()));
 }
 
-void WorkerMessagingProxy::startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode)
+void WorkerMessagingProxy::startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode)
 {
-    RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, DontPauseWorkerContextOnStart);
+    RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, startMode);
     workerThreadCreated(thread);
     thread->start();
 }
@@ -366,7 +366,7 @@
         return;
     ASSERT(!m_pageInspector);
     m_pageInspector = pageInspector;
-    m_workerThread->runLoop().postTask(createCallbackTask(connectToWorkerContextInspectorTask, true));
+    m_workerThread->runLoop().postTaskForMode(createCallbackTask(connectToWorkerContextInspectorTask, true), WorkerDebuggerAgent::debuggerTaskMode);
 }
 
 static void disconnectFromWorkerContextInspectorTask(ScriptExecutionContext* context, bool)

Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.h (98236 => 98237)


--- trunk/Source/WebCore/workers/WorkerMessagingProxy.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -53,7 +53,7 @@
 
         // Implementations of WorkerContextProxy.
         // (Only use these methods in the worker object thread.)
-        virtual void startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode);
+        virtual void startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode);
         virtual void terminateWorkerContext();
         virtual void postMessageToWorkerContext(PassRefPtr<SerializedScriptValue>, PassOwnPtr<MessagePortChannelArray>);
         virtual bool hasPendingActivity() const;

Modified: trunk/Source/WebKit/chromium/ChangeLog (98236 => 98237)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-10-24 14:32:44 UTC (rev 98237)
@@ -1,3 +1,16 @@
+2011-10-24  Yury Semikhatsky  <[email protected]>
+
+        Web Inspector: allow debugging dedicated worker initialization
+        https://bugs.webkit.org/show_bug.cgi?id=70723
+
+        Pass worker thread start mode to the worker thread.
+
+        Reviewed by Pavel Feldman.
+
+        * src/WebWorkerClientImpl.cpp:
+        (WebKit::WebWorkerClientImpl::startWorkerContext):
+        * src/WebWorkerClientImpl.h:
+
 2011-10-24  Sheriff Bot  <[email protected]>
 
         Unreviewed.  Rolled DEPS.

Modified: trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp (98236 => 98237)


--- trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp	2011-10-24 14:32:44 UTC (rev 98237)
@@ -85,9 +85,9 @@
     return 0;
 }
 
-void WebWorkerClientImpl::startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode)
+void WebWorkerClientImpl::startWorkerContext(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode)
 {
-    RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, DontPauseWorkerContextOnStart);
+    RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, startMode);
     m_proxy->workerThreadCreated(thread);
     thread->start();
 }

Modified: trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.h (98236 => 98237)


--- trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.h	2011-10-24 13:52:51 UTC (rev 98236)
+++ trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.h	2011-10-24 14:32:44 UTC (rev 98237)
@@ -69,7 +69,8 @@
     // process, this will be the main WebKit thread.
     virtual void startWorkerContext(const WebCore::KURL&,
                                     const WTF::String&,
-                                    const WTF::String&);
+                                    const WTF::String&,
+                                    WebCore::WorkerThreadStartMode);
     virtual void terminateWorkerContext();
     virtual void postMessageToWorkerContext(
         PassRefPtr<WebCore::SerializedScriptValue> message,
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to