[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
yurys at chromium.org
yurys at chromium.org
Wed Dec 22 11:19:22 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 9f7caf9351739a29d777d487eafa496178c208c0
Author: yurys at chromium.org <yurys at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Jul 19 15:19:40 2010 +0000
2010-07-19 Yury Semikhatsky <yurys at chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: show stack trace for uncaught exceptions when Web Inspector is open.
https://bugs.webkit.org/show_bug.cgi?id=42560
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::setCaptureCallStackForUncaughtExceptions):
* bindings/js/ScriptController.h:
* bindings/v8/ScriptController.cpp:
(WebCore::ScriptController::setCaptureCallStackForUncaughtExceptions):
* bindings/v8/ScriptController.h:
* bindings/v8/V8ConsoleMessage.cpp:
(WebCore::V8ConsoleMessage::dispatchNow):
(WebCore::V8ConsoleMessage::handler):
* bindings/v8/V8ConsoleMessage.h:
* inspector/ConsoleMessage.cpp:
(WebCore::ConsoleMessage::ConsoleMessage):
* inspector/ConsoleMessage.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::addMessageToConsole):
(WebCore::InspectorController::startGroup):
(WebCore::InspectorController::connectFrontend):
(WebCore::InspectorController::disconnectFrontend):
* inspector/InspectorController.h:
* inspector/front-end/ConsoleView.js:
(WebInspector.ConsoleMessage.prototype._formatMessage):
(WebInspector.ConsoleMessage.prototype.toMessageElement):
(WebInspector.ConsoleMessage.prototype._populateStackTraceTreeElement):
(WebInspector.ConsoleMessage.prototype._addMessageHeader):
(WebInspector.ConsoleMessage.prototype.toString):
* inspector/front-end/inspector.css:
(.console-message.repeated-message > ol.stack-trace):
(.section .properties ol, .event-properties ol, .stack-trace ol, ol.stack-trace):
(ol.stack-trace):
(.section .properties ol.expanded, .event-properties ol.expanded, .stack-trace ol, ol.stack-trace):
* page/Console.cpp:
(WebCore::Console::addMessage):
* page/Console.h:
(WebCore::):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63662 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 0e60efc..255cb5d 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,45 @@
+2010-07-19 Yury Semikhatsky <yurys at chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: show stack trace for uncaught exceptions when Web Inspector is open.
+ https://bugs.webkit.org/show_bug.cgi?id=42560
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::setCaptureCallStackForUncaughtExceptions):
+ * bindings/js/ScriptController.h:
+ * bindings/v8/ScriptController.cpp:
+ (WebCore::ScriptController::setCaptureCallStackForUncaughtExceptions):
+ * bindings/v8/ScriptController.h:
+ * bindings/v8/V8ConsoleMessage.cpp:
+ (WebCore::V8ConsoleMessage::dispatchNow):
+ (WebCore::V8ConsoleMessage::handler):
+ * bindings/v8/V8ConsoleMessage.h:
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::ConsoleMessage):
+ * inspector/ConsoleMessage.h:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addMessageToConsole):
+ (WebCore::InspectorController::startGroup):
+ (WebCore::InspectorController::connectFrontend):
+ (WebCore::InspectorController::disconnectFrontend):
+ * inspector/InspectorController.h:
+ * inspector/front-end/ConsoleView.js:
+ (WebInspector.ConsoleMessage.prototype._formatMessage):
+ (WebInspector.ConsoleMessage.prototype.toMessageElement):
+ (WebInspector.ConsoleMessage.prototype._populateStackTraceTreeElement):
+ (WebInspector.ConsoleMessage.prototype._addMessageHeader):
+ (WebInspector.ConsoleMessage.prototype.toString):
+ * inspector/front-end/inspector.css:
+ (.console-message.repeated-message > ol.stack-trace):
+ (.section .properties ol, .event-properties ol, .stack-trace ol, ol.stack-trace):
+ (ol.stack-trace):
+ (.section .properties ol.expanded, .event-properties ol.expanded, .stack-trace ol, ol.stack-trace):
+ * page/Console.cpp:
+ (WebCore::Console::addMessage):
+ * page/Console.h:
+ (WebCore::):
+
2010-07-19 Robin Burchell <robin.burchell at collabora.co.uk>
Reviewed by Antonio Gomes
diff --git a/WebCore/bindings/js/ScriptController.cpp b/WebCore/bindings/js/ScriptController.cpp
index 0aa8f52..98022d9 100644
--- a/WebCore/bindings/js/ScriptController.cpp
+++ b/WebCore/bindings/js/ScriptController.cpp
@@ -379,6 +379,12 @@ PassRefPtr<Bindings::RootObject> ScriptController::createRootObject(void* native
return rootObject.release();
}
+#if ENABLE(INSPECTOR)
+void ScriptController::setCaptureCallStackForUncaughtExceptions(bool)
+{
+}
+#endif
+
#if ENABLE(NETSCAPE_PLUGIN_API)
NPObject* ScriptController::windowScriptNPObject()
diff --git a/WebCore/bindings/js/ScriptController.h b/WebCore/bindings/js/ScriptController.h
index c382a93..80155e4 100644
--- a/WebCore/bindings/js/ScriptController.h
+++ b/WebCore/bindings/js/ScriptController.h
@@ -151,6 +151,10 @@ public:
PassRefPtr<JSC::Bindings::RootObject> createRootObject(void* nativeHandle);
+#if ENABLE(INSPECTOR)
+ static void setCaptureCallStackForUncaughtExceptions(bool);
+#endif
+
#if PLATFORM(MAC)
#if ENABLE(JAVA_BRIDGE)
static void initJavaJSBindings();
diff --git a/WebCore/bindings/v8/ScriptController.cpp b/WebCore/bindings/v8/ScriptController.cpp
index 1c85da7..c8010f1 100644
--- a/WebCore/bindings/v8/ScriptController.cpp
+++ b/WebCore/bindings/v8/ScriptController.cpp
@@ -451,6 +451,13 @@ void ScriptController::clearWindowShell(bool)
m_proxy->clearForNavigation();
}
+#if ENABLE(INSPECTOR)
+void ScriptController::setCaptureCallStackForUncaughtExceptions(bool)
+{
+ v8::V8::SetCaptureStackTraceForUncaughtExceptions(true, 200);
+}
+#endif
+
void ScriptController::attachDebugger(void*)
{
notImplemented();
diff --git a/WebCore/bindings/v8/ScriptController.h b/WebCore/bindings/v8/ScriptController.h
index 75ae0bf..04a15f6 100644
--- a/WebCore/bindings/v8/ScriptController.h
+++ b/WebCore/bindings/v8/ScriptController.h
@@ -116,6 +116,10 @@ public:
static bool canAccessFromCurrentOrigin(Frame*);
+#if ENABLE(INSPECTOR)
+ static void setCaptureCallStackForUncaughtExceptions(bool);
+#endif
+
bool canExecuteScripts(ReasonForCallingCanExecuteScripts);
// FIXME: void* is a compile hack.
diff --git a/WebCore/bindings/v8/V8ConsoleMessage.cpp b/WebCore/bindings/v8/V8ConsoleMessage.cpp
index d9fe069..f5e6300 100644
--- a/WebCore/bindings/v8/V8ConsoleMessage.cpp
+++ b/WebCore/bindings/v8/V8ConsoleMessage.cpp
@@ -36,6 +36,7 @@
#include "Frame.h"
#include "OwnPtr.h"
#include "Page.h"
+#include "ScriptCallStack.h"
#include "V8Binding.h"
#include "V8Proxy.h"
@@ -52,14 +53,7 @@ V8ConsoleMessage::V8ConsoleMessage(const String& string, const String& sourceID,
void V8ConsoleMessage::dispatchNow(Page* page)
{
- ASSERT(page);
-
- // Process any delayed messages to make sure that messages
- // appear in the right order in the console.
- processDelayed();
-
- Console* console = page->mainFrame()->domWindow()->console();
- console->addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, m_string, m_lineNumber, m_sourceID);
+ dispatchNow(page, 0);
}
void V8ConsoleMessage::dispatchLater()
@@ -118,11 +112,33 @@ void V8ConsoleMessage::handler(v8::Handle<v8::Message> message, v8::Handle<v8::V
ASSERT(!errorMessageString.IsEmpty());
String errorMessage = toWebCoreString(errorMessageString);
+ v8::Handle<v8::StackTrace> stackTrace = message->GetStackTrace();
+ OwnPtr<ScriptCallStack> callStack;
+ // Currently stack trace is only collected when inspector is open.
+ if (!stackTrace.IsEmpty()) {
+ v8::Local<v8::Context> context = v8::Context::GetEntered();
+ ScriptState* scriptState = ScriptState::forContext(context);
+ callStack = ScriptCallStack::create(scriptState, stackTrace);
+ }
+
v8::Handle<v8::Value> resourceName = message->GetScriptResourceName();
bool useURL = resourceName.IsEmpty() || !resourceName->IsString();
String resourceNameString = useURL ? frame->document()->url() : toWebCoreString(resourceName);
V8ConsoleMessage consoleMessage(errorMessage, resourceNameString, message->GetLineNumber());
- consoleMessage.dispatchNow(page);
+ consoleMessage.dispatchNow(page, callStack.get());
+}
+
+void V8ConsoleMessage::dispatchNow(Page* page, ScriptCallStack* callStack)
+{
+ ASSERT(page);
+
+ // Process any delayed messages to make sure that messages
+ // appear in the right order in the console.
+ processDelayed();
+
+ Console* console = page->mainFrame()->domWindow()->console();
+ MessageType messageType = callStack ? UncaughtExceptionMessageType : LogMessageType;
+ console->addMessage(JSMessageSource, messageType, ErrorMessageLevel, m_string, m_lineNumber, m_sourceID, callStack);
}
} // namespace WebCore
diff --git a/WebCore/bindings/v8/V8ConsoleMessage.h b/WebCore/bindings/v8/V8ConsoleMessage.h
index a8f75ee..387b5ee 100644
--- a/WebCore/bindings/v8/V8ConsoleMessage.h
+++ b/WebCore/bindings/v8/V8ConsoleMessage.h
@@ -36,8 +36,9 @@
#include <wtf/Vector.h>
namespace WebCore {
-
+
class Page;
+ class ScriptCallStack;
// V8ConsoleMessage encapsulates everything needed to
// log messages originating from JavaScript to the console.
@@ -80,6 +81,8 @@ namespace WebCore {
const String m_sourceID;
const unsigned m_lineNumber;
+ void dispatchNow(Page*, ScriptCallStack*);
+
// All delayed messages are stored in this vector. If the vector
// is 0, there are no delayed messages.
static Vector<V8ConsoleMessage>* m_delayedMessages;
diff --git a/WebCore/inspector/ConsoleMessage.cpp b/WebCore/inspector/ConsoleMessage.cpp
index f6c0961..260ec69 100644
--- a/WebCore/inspector/ConsoleMessage.cpp
+++ b/WebCore/inspector/ConsoleMessage.cpp
@@ -80,10 +80,11 @@ ConsoleMessage::ConsoleMessage(MessageSource s, MessageType t, MessageLevel l, c
{
}
-ConsoleMessage::ConsoleMessage(MessageSource s, MessageType t, MessageLevel l, ScriptCallStack* callStack, unsigned g, bool storeTrace)
+ConsoleMessage::ConsoleMessage(MessageSource s, MessageType t, MessageLevel l, const String& m, ScriptCallStack* callStack, unsigned g, bool storeTrace)
: m_source(s)
, m_type(t)
, m_level(l)
+ , m_message(m)
#if ENABLE(INSPECTOR)
, m_arguments(callStack->at(0).argumentCount())
, m_scriptState(callStack->globalState())
diff --git a/WebCore/inspector/ConsoleMessage.h b/WebCore/inspector/ConsoleMessage.h
index 5113df3..3848dbf 100644
--- a/WebCore/inspector/ConsoleMessage.h
+++ b/WebCore/inspector/ConsoleMessage.h
@@ -48,7 +48,7 @@ class ScriptString;
class ConsoleMessage : public Noncopyable {
public:
ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, unsigned li, const String& u, unsigned g);
- ConsoleMessage(MessageSource, MessageType, MessageLevel, ScriptCallStack*, unsigned g, bool storeTrace = false);
+ ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, ScriptCallStack*, unsigned g, bool storeTrace = false);
#if ENABLE(INSPECTOR)
void addToFrontend(InspectorFrontend*, InjectedScriptHost*);
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index e90aff8..841ae5c 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -129,6 +129,8 @@ static const char* const inspectorAttachedHeightName = "inspectorAttachedHeight"
static const char* const lastActivePanelSettingName = "lastActivePanel";
static const char* const monitoringXHRSettingName = "xhrMonitor";
+int connectedFrontendCount = 0;
+
const String& InspectorController::frontendSettingsSettingName()
{
DEFINE_STATIC_LOCAL(String, settingName, ("frontendSettings"));
@@ -336,12 +338,12 @@ bool InspectorController::windowVisible()
return m_frontend;
}
-void InspectorController::addMessageToConsole(MessageSource source, MessageType type, MessageLevel level, ScriptCallStack* callStack)
+void InspectorController::addMessageToConsole(MessageSource source, MessageType type, MessageLevel level, ScriptCallStack* callStack, const String& message)
{
if (!enabled())
return;
- addConsoleMessage(callStack->state(), new ConsoleMessage(source, type, level, callStack, m_groupLevel, type == TraceMessageType));
+ addConsoleMessage(callStack->state(), new ConsoleMessage(source, type, level, message, callStack, m_groupLevel, type == TraceMessageType || type == UncaughtExceptionMessageType));
}
void InspectorController::addMessageToConsole(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceID)
@@ -391,7 +393,7 @@ void InspectorController::startGroup(MessageSource source, ScriptCallStack* call
{
++m_groupLevel;
- addConsoleMessage(callStack->state(), new ConsoleMessage(source, collapsed ? StartGroupCollapsedMessageType : StartGroupMessageType, LogMessageLevel, callStack, m_groupLevel));
+ addConsoleMessage(callStack->state(), new ConsoleMessage(source, collapsed ? StartGroupCollapsedMessageType : StartGroupMessageType, LogMessageLevel, String(), callStack, m_groupLevel));
}
void InspectorController::endGroup(MessageSource source, unsigned lineNumber, const String& sourceURL)
@@ -530,6 +532,10 @@ void InspectorController::connectFrontend(const ScriptObject& webInspector)
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
m_applicationCacheAgent = new InspectorApplicationCacheAgent(this, m_frontend.get());
#endif
+
+ if (!connectedFrontendCount)
+ ScriptController::setCaptureCallStackForUncaughtExceptions(true);
+ connectedFrontendCount++;
}
void InspectorController::show()
@@ -579,6 +585,10 @@ void InspectorController::disconnectFrontend()
return;
m_frontend.clear();
+ connectedFrontendCount--;
+ if (!connectedFrontendCount)
+ ScriptController::setCaptureCallStackForUncaughtExceptions(false);
+
#if ENABLE(JAVASCRIPT_DEBUGGER)
// If the window is being closed with the debugger enabled,
// remember this state to re-enable debugger on the next window
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 1411bd0..7e35d16 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -151,7 +151,7 @@ public:
void connectFrontend(const ScriptObject& webInspector);
void disconnectFrontend();
- void addMessageToConsole(MessageSource, MessageType, MessageLevel, ScriptCallStack*);
+ void addMessageToConsole(MessageSource, MessageType, MessageLevel, ScriptCallStack*, const String& message = String());
void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceID);
void clearConsoleMessages();
const Vector<OwnPtr<ConsoleMessage> >& consoleMessages() const { return m_consoleMessages; }
diff --git a/WebCore/inspector/front-end/ConsoleView.js b/WebCore/inspector/front-end/ConsoleView.js
index 36e0275..c1d621b 100644
--- a/WebCore/inspector/front-end/ConsoleView.js
+++ b/WebCore/inspector/front-end/ConsoleView.js
@@ -673,8 +673,23 @@ WebInspector.ConsoleMessage.prototype = {
{
switch (this.type) {
case WebInspector.ConsoleMessage.MessageType.Trace:
- this.formattedMessage = this._createStackTraceElement();
- this.formattedMessage.addStyleClass("trace-message");
+ case WebInspector.ConsoleMessage.MessageType.UncaughtException:
+ var ol = document.createElement("ol");
+ ol.addStyleClass("stack-trace");
+ if (this.type === WebInspector.ConsoleMessage.MessageType.Trace)
+ ol.addStyleClass("trace-message");
+ var treeOutline = new TreeOutline(ol);
+
+ var root = treeOutline;
+ if (this.type === WebInspector.ConsoleMessage.MessageType.UncaughtException) {
+ var li = document.createElement("li");
+ this._addMessageHeader(li, document.createTextNode(this._messageText));
+ root = new TreeElement(li.innerHTML, null, true);
+ treeOutline.appendChild(root);
+ }
+
+ this._populateStackTraceTreeElement(root);
+ this.formattedMessage = ol;
break;
case WebInspector.ConsoleMessage.MessageType.Object:
var obj = this._parameters ? this._parameters[0] : undefined;
@@ -825,26 +840,11 @@ WebInspector.ConsoleMessage.prototype = {
return element;
}
- if (this.type === WebInspector.ConsoleMessage.MessageType.Trace) {
+ if (this.type === WebInspector.ConsoleMessage.MessageType.Trace ||
+ this.type === WebInspector.ConsoleMessage.MessageType.UncaughtException)
element.appendChild(this.formattedMessage);
- } else {
- if (this.url && this.url !== "undefined") {
- var urlElement = WebInspector.linkifyResourceAsNode(this.url, "scripts", this.line, "console-message-url");
- element.appendChild(urlElement);
- }
-
- var messageTextElement = document.createElement("span");
- messageTextElement.className = "console-message-text source-code";
- if (this.type === WebInspector.ConsoleMessage.MessageType.Assert)
- messageTextElement.appendChild(document.createTextNode(WebInspector.UIString("Assertion failed: ")));
- messageTextElement.appendChild(this.formattedMessage);
- element.appendChild(messageTextElement);
-
- if (this._stackTrace) {
- var ol = this._createStackTraceElement();
- element.appendChild(ol);
- }
- }
+ else
+ this._addMessageHeader(element, this.formattedMessage);
if (this.repeatCount > 1)
this._updateRepeatCount();
@@ -852,11 +852,8 @@ WebInspector.ConsoleMessage.prototype = {
return element;
},
- _createStackTraceElement: function()
+ _populateStackTraceTreeElement: function(parentTreeElement)
{
- var ol = document.createElement("ol");
- ol.addStyleClass("stack-trace");
- var treeOutline = new TreeOutline(ol);
for (var i = 0; i < this._stackTrace.length; i++) {
var frame = this._stackTrace[i];
@@ -870,11 +867,24 @@ WebInspector.ConsoleMessage.prototype = {
var urlElement = WebInspector.linkifyResourceAsNode(frame.sourceURL, "scripts", frame.lineNumber, "console-message-url");
li.appendChild(urlElement);
-
var treeElement = new TreeElement(li.innerHTML);
- treeOutline.appendChild(treeElement);
+ parentTreeElement.appendChild(treeElement);
}
- return ol;
+ },
+
+ _addMessageHeader: function(parentElement, formattedMessage)
+ {
+ if (this.url && this.url !== "undefined") {
+ var urlElement = WebInspector.linkifyResourceAsNode(this.url, "scripts", this.line, "console-message-url");
+ parentElement.appendChild(urlElement);
+ }
+
+ var messageTextElement = document.createElement("span");
+ messageTextElement.className = "console-message-text source-code";
+ if (this.type === WebInspector.ConsoleMessage.MessageType.Assert)
+ messageTextElement.appendChild(document.createTextNode(WebInspector.UIString("Assertion failed: ")));
+ messageTextElement.appendChild(formattedMessage);
+ parentElement.appendChild(messageTextElement);
},
_updateRepeatCount: function() {
@@ -915,6 +925,7 @@ WebInspector.ConsoleMessage.prototype = {
var typeString;
switch (this.type) {
case WebInspector.ConsoleMessage.MessageType.Log:
+ case WebInspector.ConsoleMessage.MessageType.UncaughtException:
typeString = "Log";
break;
case WebInspector.ConsoleMessage.MessageType.Object:
@@ -994,7 +1005,8 @@ WebInspector.ConsoleMessage.MessageType = {
StartGroupCollapsed: 4,
EndGroup: 5,
Assert: 6,
- Result: 7
+ UncaughtException: 7,
+ Result: 8
}
WebInspector.ConsoleMessage.MessageLevel = {
diff --git a/WebCore/inspector/front-end/inspector.css b/WebCore/inspector/front-end/inspector.css
index 68e4034..12e99b4 100644
--- a/WebCore/inspector/front-end/inspector.css
+++ b/WebCore/inspector/front-end/inspector.css
@@ -711,14 +711,9 @@ body.platform-linux .monospace, body.platform-linux .source-code {
content: url(Images/treeDownTriangleBlack.png);
}
-.console-message > ol.stack-trace {
- margin: 5px 0 5px -30px;
- list-style: none;
-}
-
-.console-message.repeated-message > ol.stack-trace.trace-message {
- margin-top: -9px;
- margin-left: -12px;
+.console-message.repeated-message > ol.stack-trace {
+ margin-top: -14px;
+ margin-left: 18px;
}
.console-group-messages .section .header .title {
@@ -1174,6 +1169,7 @@ body.platform-linux .monospace, body.platform-linux .source-code {
margin-left: -12px;
}
+.stack-trace li.parent::before,
.outline-disclosure li.parent::before {
content: url(Images/treeRightTriangleBlack.png);
float: left;
@@ -1183,26 +1179,32 @@ body.platform-linux .monospace, body.platform-linux .source-code {
padding-right: 2px;
}
+.stack-trace li.parent::before,
.outline-disclosure li.parent::before {
content: url(Images/treeRightTriangleBlack.png);
}
+.stack-trace ol:focus li.parent.selected::before,
.outline-disclosure ol:focus li.parent.selected::before {
content: url(Images/treeRightTriangleWhite.png);
}
+.stack-trace li.parent.expanded::before,
.outline-disclosure li.parent.expanded::before {
content: url(Images/treeDownTriangleBlack.png);
}
+.stack-trace ol:focus li.parent.expanded.selected::before,
.outline-disclosure ol:focus li.parent.expanded.selected::before {
content: url(Images/treeDownTriangleWhite.png);
}
+.stack-trace ol.children,
.outline-disclosure ol.children {
display: none;
}
+.stack-trace ol.children.expanded,
.outline-disclosure ol.children.expanded {
display: block;
}
@@ -1382,14 +1384,18 @@ body.inactive .placard.selected {
margin-left: 1px;
}
-.section .properties ol, .event-properties ol {
+.section .properties ol, .event-properties ol, .stack-trace ol, ol.stack-trace {
display: none;
margin: 0;
-webkit-padding-start: 12px;
list-style: none;
}
-.section .properties ol.expanded, .event-properties ol.expanded {
+ol.stack-trace {
+ -webkit-padding-start: 0px;
+}
+
+.section .properties ol.expanded, .event-properties ol.expanded, .stack-trace ol, ol.stack-trace {
display: block;
}
diff --git a/WebCore/page/Console.cpp b/WebCore/page/Console.cpp
index 423477a..67f9bee 100644
--- a/WebCore/page/Console.cpp
+++ b/WebCore/page/Console.cpp
@@ -144,7 +144,7 @@ static void printMessageSourceAndLevelPrefix(MessageSource source, MessageLevel
printf("%s %s:", sourceString, levelString);
}
-void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL)
+void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL, ScriptCallStack* callStack)
{
Page* page = this->page();
if (!page)
@@ -154,7 +154,10 @@ void Console::addMessage(MessageSource source, MessageType type, MessageLevel le
page->chrome()->client()->addMessageToConsole(source, type, level, message, lineNumber, sourceURL);
#if ENABLE(INSPECTOR)
- page->inspectorController()->addMessageToConsole(source, type, level, message, lineNumber, sourceURL);
+ if (callStack)
+ page->inspectorController()->addMessageToConsole(source, type, level, callStack, message);
+ else
+ page->inspectorController()->addMessageToConsole(source, type, level, message, lineNumber, sourceURL);
#endif
if (!Console::shouldPrintExceptions())
diff --git a/WebCore/page/Console.h b/WebCore/page/Console.h
index 3e00050..d057ff9 100644
--- a/WebCore/page/Console.h
+++ b/WebCore/page/Console.h
@@ -64,7 +64,8 @@ enum MessageType {
StartGroupMessageType,
StartGroupCollapsedMessageType,
EndGroupMessageType,
- AssertMessageType
+ AssertMessageType,
+ UncaughtExceptionMessageType
};
enum MessageLevel {
@@ -82,7 +83,7 @@ public:
Frame* frame() const;
void disconnectFrame();
- void addMessage(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL);
+ void addMessage(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL, ScriptCallStack* callStack = 0);
void debug(ScriptCallStack*);
void error(ScriptCallStack*);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list