summaryrefslogtreecommitdiffstats
path: root/WebCore/page/Console.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/page/Console.cpp')
-rw-r--r--WebCore/page/Console.cpp115
1 files changed, 61 insertions, 54 deletions
diff --git a/WebCore/page/Console.cpp b/WebCore/page/Console.cpp
index 2d4cc98..1481ebd 100644
--- a/WebCore/page/Console.cpp
+++ b/WebCore/page/Console.cpp
@@ -41,6 +41,7 @@
#include "PageGroup.h"
#include "PlatformString.h"
+#include "ScriptArguments.h"
#include "ScriptCallStack.h"
#include "ScriptProfile.h"
#include "ScriptProfiler.h"
@@ -77,19 +78,6 @@ static void printSourceURLAndLine(const String& sourceURL, unsigned lineNumber)
}
}
-static bool getFirstArgumentAsString(ScriptState* scriptState, const ScriptCallFrame& callFrame, String& result, bool checkForNullOrUndefined = false)
-{
- if (!callFrame.argumentCount())
- return false;
-
- const ScriptValue& value = callFrame.argumentAt(0);
- if (checkForNullOrUndefined && (value.isNull() || value.isUndefined()))
- return false;
-
- result = value.toString(scriptState);
- return true;
-}
-
static void printMessageSourceAndLevelPrefix(MessageSource source, MessageLevel level)
{
const char* sourceString;
@@ -144,7 +132,12 @@ 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, ScriptCallStack* callStack)
+void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL)
+{
+ addMessage(source, type, level, message, lineNumber, sourceURL, 0);
+}
+
+void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL, PassOwnPtr<ScriptCallStack> callStack)
{
Page* page = this->page();
if (!page)
@@ -155,7 +148,7 @@ void Console::addMessage(MessageSource source, MessageType type, MessageLevel le
#if ENABLE(INSPECTOR)
if (callStack)
- page->inspectorController()->addMessageToConsole(source, type, level, callStack, message);
+ page->inspectorController()->addMessageToConsole(source, type, level, message, 0, callStack);
else
page->inspectorController()->addMessageToConsole(source, type, level, message, lineNumber, sourceURL);
#endif
@@ -169,7 +162,7 @@ void Console::addMessage(MessageSource source, MessageType type, MessageLevel le
printf(" %s\n", message.utf8().data());
}
-void Console::addMessage(MessageType type, MessageLevel level, ScriptCallStack* callStack, bool acceptNoArguments)
+void Console::addMessage(MessageType type, MessageLevel level, PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack, bool acceptNoArguments)
{
Page* page = this->page();
if (!page)
@@ -177,15 +170,15 @@ void Console::addMessage(MessageType type, MessageLevel level, ScriptCallStack*
const ScriptCallFrame& lastCaller = callStack->at(0);
- if (!acceptNoArguments && !lastCaller.argumentCount())
+ if (!acceptNoArguments && !arguments->argumentCount())
return;
String message;
- if (getFirstArgumentAsString(callStack->state(), lastCaller, message))
+ if (arguments->getFirstArgumentAsString(message))
page->chrome()->client()->addMessageToConsole(JSMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL());
#if ENABLE(INSPECTOR)
- page->inspectorController()->addMessageToConsole(JSMessageSource, type, level, callStack, message);
+ page->inspectorController()->addMessageToConsole(JSMessageSource, type, level, message, arguments, callStack);
#endif
if (!Console::shouldPrintExceptions())
@@ -194,49 +187,49 @@ void Console::addMessage(MessageType type, MessageLevel level, ScriptCallStack*
printSourceURLAndLine(lastCaller.sourceURL(), 0);
printMessageSourceAndLevelPrefix(JSMessageSource, level);
- for (unsigned i = 0; i < lastCaller.argumentCount(); ++i) {
+ for (unsigned i = 0; i < arguments->argumentCount(); ++i) {
String argAsString;
- if (lastCaller.argumentAt(i).getString(callStack->state(), argAsString))
+ if (arguments->argumentAt(i).getString(arguments->globalState(), argAsString))
printf(" %s", argAsString.utf8().data());
}
printf("\n");
}
-void Console::debug(ScriptCallStack* callStack)
+void Console::debug(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
// In Firebug, console.debug has the same behavior as console.log. So we'll do the same.
- log(callStack);
+ log(arguments, callStack);
}
-void Console::error(ScriptCallStack* callStack)
+void Console::error(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- addMessage(LogMessageType, ErrorMessageLevel, callStack);
+ addMessage(LogMessageType, ErrorMessageLevel, arguments, callStack);
}
-void Console::info(ScriptCallStack* callStack)
+void Console::info(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- log(callStack);
+ log(arguments, callStack);
}
-void Console::log(ScriptCallStack* callStack)
+void Console::log(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- addMessage(LogMessageType, LogMessageLevel, callStack);
+ addMessage(LogMessageType, LogMessageLevel, arguments, callStack);
}
-void Console::dir(ScriptCallStack* callStack)
+void Console::dir(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- addMessage(ObjectMessageType, LogMessageLevel, callStack);
+ addMessage(ObjectMessageType, LogMessageLevel, arguments, callStack);
}
-void Console::dirxml(ScriptCallStack* callStack)
+void Console::dirxml(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
// The standard behavior of our console.log will print the DOM tree for nodes.
- log(callStack);
+ log(arguments, callStack);
}
-void Console::trace(ScriptCallStack* callStack)
+void Console::trace(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- addMessage(TraceMessageType, LogMessageLevel, callStack, true);
+ addMessage(TraceMessageType, LogMessageLevel, arguments, callStack, true);
if (!shouldPrintExceptions())
return;
@@ -248,15 +241,15 @@ void Console::trace(ScriptCallStack* callStack)
}
}
-void Console::assertCondition(bool condition, ScriptCallStack* callStack)
+void Console::assertCondition(bool condition, PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
if (condition)
return;
- addMessage(AssertMessageType, ErrorMessageLevel, callStack, true);
+ addMessage(AssertMessageType, ErrorMessageLevel, arguments, callStack, true);
}
-void Console::count(ScriptCallStack* callStack)
+void Console::count(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
#if ENABLE(INSPECTOR)
Page* page = this->page();
@@ -267,7 +260,7 @@ void Console::count(ScriptCallStack* callStack)
// Follow Firebug's behavior of counting with null and undefined title in
// the same bucket as no argument
String title;
- getFirstArgumentAsString(callStack->state(), lastCaller, title);
+ arguments->getFirstArgumentAsString(title);
page->inspectorController()->count(title, lastCaller.lineNumber(), lastCaller.sourceURL());
#else
@@ -275,20 +268,19 @@ void Console::count(ScriptCallStack* callStack)
#endif
}
-void Console::markTimeline(ScriptCallStack* callStack)
+void Console::markTimeline(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack>)
{
#if ENABLE(INSPECTOR)
Page* page = this->page();
if (!page)
return;
- const ScriptCallFrame& lastCaller = callStack->at(0);
String message;
- getFirstArgumentAsString(callStack->state(), lastCaller, message);
+ arguments->getFirstArgumentAsString(message);
page->inspectorController()->markTimeline(message);
#else
- UNUSED_PARAM(callStack);
+ UNUSED_PARAM(arguments);
#endif
}
@@ -321,7 +313,7 @@ String Console::lastWMLErrorMessage() const
#if ENABLE(JAVASCRIPT_DEBUGGER)
-void Console::profile(const String& title, ScriptCallStack* callStack)
+void Console::profile(const String& title, ScriptState* state, PassOwnPtr<ScriptCallStack> callStack)
{
Page* page = this->page();
if (!page)
@@ -342,7 +334,7 @@ void Console::profile(const String& title, ScriptCallStack* callStack)
resolvedTitle = "";
#endif
- ScriptProfiler::start(callStack->state(), resolvedTitle);
+ ScriptProfiler::start(state, resolvedTitle);
#if ENABLE(INSPECTOR)
const ScriptCallFrame& lastCaller = callStack->at(0);
@@ -350,7 +342,7 @@ void Console::profile(const String& title, ScriptCallStack* callStack)
#endif
}
-void Console::profileEnd(const String& title, ScriptCallStack* callStack)
+void Console::profileEnd(const String& title, ScriptState* state, PassOwnPtr<ScriptCallStack> callStack)
{
Page* page = this->page();
if (!page)
@@ -362,7 +354,7 @@ void Console::profileEnd(const String& title, ScriptCallStack* callStack)
return;
#endif
- RefPtr<ScriptProfile> profile = ScriptProfiler::stop(callStack->state(), title);
+ RefPtr<ScriptProfile> profile = ScriptProfiler::stop(state, title);
if (!profile)
return;
@@ -394,7 +386,7 @@ void Console::time(const String& title)
#endif
}
-void Console::timeEnd(const String& title, ScriptCallStack* callStack)
+void Console::timeEnd(const String& title, PassOwnPtr<ScriptArguments>, PassOwnPtr<ScriptCallStack> callStack)
{
#if ENABLE(INSPECTOR)
Page* page = this->page();
@@ -420,28 +412,30 @@ void Console::timeEnd(const String& title, ScriptCallStack* callStack)
#endif
}
-void Console::group(ScriptCallStack* callStack)
+void Console::group(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
#if ENABLE(INSPECTOR)
Page* page = this->page();
if (!page)
return;
- page->inspectorController()->startGroup(JSMessageSource, callStack);
+ page->inspectorController()->startGroup(arguments, callStack);
#else
+ UNUSED_PARAM(arguments);
UNUSED_PARAM(callStack);
#endif
}
-void Console::groupCollapsed(ScriptCallStack* callStack)
+void Console::groupCollapsed(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
#if ENABLE(INSPECTOR)
Page* page = this->page();
if (!page)
return;
- page->inspectorController()->startGroup(JSMessageSource, callStack, true);
+ page->inspectorController()->startGroup(arguments, callStack, true);
#else
+ UNUSED_PARAM(arguments);
UNUSED_PARAM(callStack);
#endif
}
@@ -457,9 +451,22 @@ void Console::groupEnd()
#endif
}
-void Console::warn(ScriptCallStack* callStack)
+bool Console::shouldCaptureFullStackTrace() const
+{
+#if ENABLE(INSPECTOR)
+ Page* page = this->page();
+ if (!page)
+ return false;
+
+ return page->inspectorController()->hasFrontend();
+#else
+ return false;
+#endif
+}
+
+void Console::warn(PassOwnPtr<ScriptArguments> arguments, PassOwnPtr<ScriptCallStack> callStack)
{
- addMessage(LogMessageType, WarningMessageLevel, callStack);
+ addMessage(LogMessageType, WarningMessageLevel, arguments, callStack);
}
MemoryInfo* Console::memory() const