Title: [99554] trunk/Source
Revision
99554
Author
yu...@chromium.org
Date
2011-11-08 05:06:11 -0800 (Tue, 08 Nov 2011)

Log Message

Web Inspector: display notification in the front-end when inspected worker terminates
https://bugs.webkit.org/show_bug.cgi?id=71770

Source/WebCore:

When inspected worker terminates we will show a notification similar to the help
screen. The notification disappears when the worker restarts or the user closes it
manually.

Reviewed by Pavel Feldman.

* English.lproj/localizedStrings.js:
* inspector/front-end/ScriptsPanel.js:
* inspector/front-end/WorkerManager.js:
(WebInspector.WorkerManager.loaded):
(WebInspector.WorkerManager.showWorkerTerminatedScreen):
(WebInspector.WorkerTerminatedScreen):
* inspector/front-end/inspector.js:
(WebInspector.disconnectFromBackend):
(WebInspector.frontendReused):

Source/WebKit/chromium:

Exposed an API for the browser to notify inspector front-end when inspeced instance
terminates. It is used now for tracking shared workers termination.

Reviewed by Pavel Feldman.

* public/WebDevToolsAgent.h:
* src/WebDevToolsAgentImpl.cpp:
(WebKit::WebDevToolsAgent::createFrontendDisconnectedEvent):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (99553 => 99554)


--- trunk/Source/WebCore/ChangeLog	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebCore/ChangeLog	2011-11-08 13:06:11 UTC (rev 99554)
@@ -1,3 +1,24 @@
+2011-11-08  Yury Semikhatsky  <yu...@chromium.org>
+
+        Web Inspector: display notification in the front-end when inspected worker terminates
+        https://bugs.webkit.org/show_bug.cgi?id=71770
+
+        When inspected worker terminates we will show a notification similar to the help
+        screen. The notification disappears when the worker restarts or the user closes it
+        manually.
+
+        Reviewed by Pavel Feldman.
+
+        * English.lproj/localizedStrings.js:
+        * inspector/front-end/ScriptsPanel.js:
+        * inspector/front-end/WorkerManager.js:
+        (WebInspector.WorkerManager.loaded):
+        (WebInspector.WorkerManager.showWorkerTerminatedScreen):
+        (WebInspector.WorkerTerminatedScreen):
+        * inspector/front-end/inspector.js:
+        (WebInspector.disconnectFromBackend):
+        (WebInspector.frontendReused):
+
 2011-11-08  Nikolas Zimmermann  <nzimmerm...@rim.com>
 
         Fold ImageBySizeCache again into CSSImageGeneratorValue

Modified: trunk/Source/WebCore/English.lproj/localizedStrings.js


(Binary files differ)

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (99553 => 99554)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-11-08 13:06:11 UTC (rev 99554)
@@ -117,7 +117,7 @@
         this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
     }
 
-    if (Preferences.canInspectWorkers && WebInspector.workerManager) {
+    if (Preferences.canInspectWorkers && !WebInspector.WorkerManager.isWorkerFrontend()) {
         WorkerAgent.setWorkerInspectionEnabled(true);
         this.sidebarPanes.workerList = new WebInspector.WorkerListSidebarPane(WebInspector.workerManager);
     } else

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


--- trunk/Source/WebCore/inspector/front-end/WorkerManager.js	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebCore/inspector/front-end/WorkerManager.js	2011-11-08 13:06:11 UTC (rev 99554)
@@ -47,9 +47,9 @@
 WebInspector.WorkerManager.loaded = function()
 {
     var workerId = WebInspector.queryParamsObject["dedicatedWorkerId"];
-    if (workerId) {
+    if (workerId)
         WebInspector.WorkerManager._initializeDedicatedWorkerFrontend(workerId);
-    } else
+    else
         WebInspector.workerManager = new WebInspector.WorkerManager();
 }
 
@@ -106,6 +106,17 @@
     }
 }
 
+WebInspector.WorkerManager.showWorkerTerminatedScreen = function()
+{
+    function onHide()
+    {
+        WebInspector.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, screen.hide, screen);
+    }
+    var screen = new WebInspector.WorkerTerminatedScreen();
+    WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, screen.hide, screen);
+    screen.show(onHide.bind(this));
+}
+
 WebInspector.WorkerManager.Events = {
     WorkerAdded: "worker-added",
     WorkerRemoved: "worker-removed",
@@ -232,3 +243,13 @@
         this._workerManager._sendMessageToWorkerInspector(workerId, message);
     }
 }
+
+WebInspector.WorkerTerminatedScreen = function()
+{
+    WebInspector.HelpScreen.call(this, WebInspector.UIString("Inspected worker terminated"));
+    var p = this.contentElement.createChild("p");
+    p.addStyleClass("help-section");
+    p.textContent = WebInspector.UIString("Inspected worker has terminated. Once it restarts we will attach to it automatically.");
+}
+
+WebInspector.WorkerTerminatedScreen.prototype.__proto__ = WebInspector.HelpScreen.prototype;

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


--- trunk/Source/WebCore/inspector/front-end/inspector.js	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebCore/inspector/front-end/inspector.js	2011-11-08 13:06:11 UTC (rev 99554)
@@ -461,7 +461,10 @@
 
 WebInspector.disconnectFromBackend = function()
 {
-    InspectorFrontendHost.disconnectFromBackend();
+    if (WebInspector.WorkerManager.isWorkerFrontend())
+        WebInspector.WorkerManager.showWorkerTerminatedScreen();
+    else
+        InspectorFrontendHost.disconnectFromBackend();
 }
 
 WebInspector.documentClick = function(event)

Modified: trunk/Source/WebKit/chromium/ChangeLog (99553 => 99554)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-08 13:06:11 UTC (rev 99554)
@@ -1,5 +1,19 @@
 2011-11-08  Yury Semikhatsky  <yu...@chromium.org>
 
+        Web Inspector: display notification in the front-end when inspected worker terminates
+        https://bugs.webkit.org/show_bug.cgi?id=71770
+
+        Exposed an API for the browser to notify inspector front-end when inspeced instance
+        terminates. It is used now for tracking shared workers termination.
+
+        Reviewed by Pavel Feldman.
+
+        * public/WebDevToolsAgent.h:
+        * src/WebDevToolsAgentImpl.cpp:
+        (WebKit::WebDevToolsAgent::createFrontendDisconnectedEvent):
+
+2011-11-08  Yury Semikhatsky  <yu...@chromium.org>
+
         [Chromium] Web Inspector: add sanity test for automatic reattach to a page which is reloaded after crash
         https://bugs.webkit.org/show_bug.cgi?id=71786
 

Modified: trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h (99553 => 99554)


--- trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h	2011-11-08 13:06:11 UTC (rev 99554)
@@ -90,6 +90,10 @@
     WEBKIT_EXPORT static bool shouldInterruptForMessage(const WebString&);
     WEBKIT_EXPORT static void processPendingMessages();
 
+    // Returns a disconnect event that can be dispatched on the front-end
+    // in order to let it know that it has disconnected from the agent.
+    WEBKIT_EXPORT static WebString disconnectEventAsText();
+
     typedef void (*MessageLoopDispatchHandler)();
 
     // Installs dispatch handle that is going to be called periodically

Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp (99553 => 99554)


--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp	2011-11-08 13:03:20 UTC (rev 99553)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp	2011-11-08 13:06:11 UTC (rev 99554)
@@ -38,6 +38,7 @@
 #include "InjectedScriptHost.h"
 #include "InspectorBackendDispatcher.h"
 #include "InspectorController.h"
+#include "InspectorFrontend.h"
 #include "InspectorInstrumentation.h"
 #include "InspectorProtocolVersion.h"
 #include "MemoryCache.h"
@@ -381,6 +382,22 @@
     PageScriptDebugServer::shared().runPendingTasks();
 }
 
+WebString WebDevToolsAgent::disconnectEventAsText()
+{
+    class ChannelImpl : public InspectorFrontendChannel {
+    public:
+        virtual bool sendMessageToFrontend(const String& message)
+        {
+            m_message = message;
+            return true;
+        }
+        String m_message;
+    } channel;
+    InspectorFrontend::Inspector inspector(&channel);
+    inspector.disconnectFromBackend();
+    return channel.m_message;
+}
+
 void WebDevToolsAgent::setMessageLoopDispatchHandler(MessageLoopDispatchHandler handler)
 {
     DebuggerAgentManager::setMessageLoopDispatchHandler(handler);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to