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);