Title: [126764] trunk
Revision
126764
Author
[email protected]
Date
2012-08-27 08:43:23 -0700 (Mon, 27 Aug 2012)

Log Message

Web Inspector: Debugger should break on failed assertions in Break on exceptions mode.
https://bugs.webkit.org/show_bug.cgi?id=95088

Reviewed by Yury Semikhatsky.

Source/WebCore:

Debugger now breaks when assert message is added to console from console API.

Test: inspector/debugger/debugger-pause-on-failed-assertion.html

* English.lproj/localizedStrings.js:
* inspector/Inspector.json:
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::addMessageToConsole):
(WebCore):
* inspector/InspectorDebuggerAgent.h:
(InspectorDebuggerAgent):
* inspector/InspectorInstrumentation.cpp:
(WebCore):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
* inspector/front-end/DebuggerModel.js:
* inspector/front-end/ScriptsPanel.js:

LayoutTests:

* inspector/debugger/debugger-pause-on-failed-assertion-expected.txt: Added.
* inspector/debugger/debugger-pause-on-failed-assertion.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (126763 => 126764)


--- trunk/LayoutTests/ChangeLog	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/LayoutTests/ChangeLog	2012-08-27 15:43:23 UTC (rev 126764)
@@ -1,3 +1,13 @@
+2012-08-27  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Debugger should break on failed assertions in Break on exceptions mode.
+        https://bugs.webkit.org/show_bug.cgi?id=95088
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/debugger/debugger-pause-on-failed-assertion-expected.txt: Added.
+        * inspector/debugger/debugger-pause-on-failed-assertion.html: Added.
+
 2012-08-27  Hugo Parente Lima  <[email protected]>
 
         [Qt] fast/url/path.html with Qt5 differ results on both WK1 and WK2

Added: trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion-expected.txt (0 => 126764)


--- trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion-expected.txt	2012-08-27 15:43:23 UTC (rev 126764)
@@ -0,0 +1,11 @@
+Tests that debugger breaks on failed assertion when pause on exception mode is enabled.
+
+Debugger was enabled.
+Script source was shown.
+Script execution paused.
+Call stack:
+    0) failAssertion (debugger-pause-on-failed-assertion.html:9)
+    1) handleClick (debugger-pause-on-failed-assertion.html:14)
+Script execution resumed.
+Debugger was disabled.
+
Property changes on: trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion.html (0 => 126764)


--- trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion.html	2012-08-27 15:43:23 UTC (rev 126764)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script>
+
+function failAssertion()
+{
+    console.assert(false);
+}
+
+function handleClick()
+{
+    failAssertion();
+}
+
+var test = function()
+{
+    InspectorTest.startDebuggerTest(step1);
+
+    function step1()
+    {
+        DebuggerAgent.setPauseOnExceptions(WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions);
+        InspectorTest.showScriptSource("debugger-pause-on-failed-assertion.html", step2);
+    }
+
+    function step2()
+    {
+        InspectorTest.addResult("Script source was shown.");
+        InspectorTest.evaluateInPage("setTimeout(handleClick, 0)");
+        InspectorTest.waitUntilPaused(step3);
+    }
+
+    function step3(callFrames)
+    {
+        InspectorTest.captureStackTrace(callFrames);
+        InspectorTest.completeDebuggerTest();
+    }
+}
+
+</script>
+</head>
+
+<body _onload_="runTest()">
+<p>
+Tests that debugger breaks on failed assertion when pause on exception mode is enabled.
+</p>
+
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/debugger/debugger-pause-on-failed-assertion.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (126763 => 126764)


--- trunk/Source/WebCore/ChangeLog	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/ChangeLog	2012-08-27 15:43:23 UTC (rev 126764)
@@ -1,3 +1,27 @@
+2012-08-27  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Debugger should break on failed assertions in Break on exceptions mode.
+        https://bugs.webkit.org/show_bug.cgi?id=95088
+
+        Reviewed by Yury Semikhatsky.
+
+        Debugger now breaks when assert message is added to console from console API.
+
+        Test: inspector/debugger/debugger-pause-on-failed-assertion.html
+
+        * English.lproj/localizedStrings.js:
+        * inspector/Inspector.json:
+        * inspector/InspectorDebuggerAgent.cpp:
+        (WebCore::InspectorDebuggerAgent::addMessageToConsole):
+        (WebCore):
+        * inspector/InspectorDebuggerAgent.h:
+        (InspectorDebuggerAgent):
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore):
+        (WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
+        * inspector/front-end/DebuggerModel.js:
+        * inspector/front-end/ScriptsPanel.js:
+
 2012-08-27  Ned Holbrook  <[email protected]>
 
         Improve line breaking performance for complex text

Modified: trunk/Source/WebCore/English.lproj/localizedStrings.js (126763 => 126764)


--- trunk/Source/WebCore/English.lproj/localizedStrings.js	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/English.lproj/localizedStrings.js	2012-08-27 15:43:23 UTC (rev 126764)
@@ -738,3 +738,5 @@
 localizedStrings["Styles recalculation forced"] = "Styles recalculation forced";
 localizedStrings["Layout invalidated"] = "Layout invalidated";
 localizedStrings["Layout forced"] = "Layout forced";
+localizedStrings["Paused on assertion."] = "Paused on assertion.";
+

Modified: trunk/Source/WebCore/inspector/Inspector.json (126763 => 126764)


--- trunk/Source/WebCore/inspector/Inspector.json	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/Inspector.json	2012-08-27 15:43:23 UTC (rev 126764)
@@ -2836,7 +2836,7 @@
                 "name": "paused",
                 "parameters": [
                     { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
-                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "other" ], "description": "Pause reason." },
+                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "assert", "other" ], "description": "Pause reason." },
                     { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." }
                 ],
                 "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria."

Modified: trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp (126763 => 126764)


--- trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp	2012-08-27 15:43:23 UTC (rev 126764)
@@ -197,6 +197,12 @@
     return scriptDebugServer().isPaused();
 }
 
+void InspectorDebuggerAgent::addMessageToConsole(MessageSource source, MessageType type)
+{
+    if (scriptDebugServer().pauseOnExceptionsState() != ScriptDebugServer::DontPauseOnExceptions && source == ConsoleAPIMessageSource && type == AssertMessageType)
+        breakProgram(InspectorFrontend::Debugger::Reason::Assert, 0);
+}
+
 static PassRefPtr<InspectorObject> buildObjectForBreakpointCookie(const String& url, int lineNumber, int columnNumber, const String& condition, bool isRegex)
 {
     RefPtr<InspectorObject> breakpointObject = InspectorObject::create();

Modified: trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h (126763 => 126764)


--- trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h	2012-08-27 15:43:23 UTC (rev 126764)
@@ -31,6 +31,7 @@
 #define InspectorDebuggerAgent_h
 
 #if ENABLE(_javascript__DEBUGGER) && ENABLE(INSPECTOR)
+#include "ConsoleTypes.h"
 #include "InjectedScript.h"
 #include "InspectorBaseAgent.h"
 #include "InspectorFrontend.h"
@@ -78,6 +79,7 @@
 
     void didClearMainFrameWindowObject();
     bool isPaused();
+    void addMessageToConsole(MessageSource, MessageType);
 
     // Part of the protocol.
     virtual void setBreakpointsActive(ErrorString*, bool active);

Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (126763 => 126764)


--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2012-08-27 15:43:23 UTC (rev 126764)
@@ -900,6 +900,10 @@
 {
     if (InspectorConsoleAgent* consoleAgent = instrumentingAgents->inspectorConsoleAgent())
         consoleAgent->addMessageToConsole(source, type, level, message, arguments, callStack);
+#if ENABLE(_javascript__DEBUGGER)
+    if (InspectorDebuggerAgent* debuggerAgent = instrumentingAgents->inspectorDebuggerAgent())
+        debuggerAgent->addMessageToConsole(source, type);
+#endif
 }
 
 void InspectorInstrumentation::addMessageToConsoleImpl(InstrumentingAgents* instrumentingAgents, MessageSource source, MessageType type, MessageLevel level, const String& message, const String& scriptId, unsigned lineNumber)

Modified: trunk/Source/WebCore/inspector/front-end/DebuggerModel.js (126763 => 126764)


--- trunk/Source/WebCore/inspector/front-end/DebuggerModel.js	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/front-end/DebuggerModel.js	2012-08-27 15:43:23 UTC (rev 126764)
@@ -94,7 +94,8 @@
     DOM: "DOM",
     EventListener: "EventListener",
     XHR: "XHR",
-    Exception: "exception"
+    Exception: "exception",
+    Assert: "assert"
 }
 
 WebInspector.DebuggerModel.prototype = {

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


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-08-27 15:31:56 UTC (rev 126763)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-08-27 15:43:23 UTC (rev 126764)
@@ -294,9 +294,11 @@
         } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) {
             this.sidebarPanes.xhrBreakpoints.highlightBreakpoint(details.auxData["breakpointURL"]);
             this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a XMLHttpRequest."));
-        } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) {
+        } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception)
             this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on exception: '%s'.", details.auxData.description));
-        } else {
+        else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert)
+            this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on assertion."));
+        else {
             function didGetUILocation(uiLocation)
             {
                 var breakpoint = WebInspector.breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to