aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp b/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp
index a822eb84ec..8613ae44af 100644
--- a/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp
+++ b/src/declarative/qml/v8/qdeclarativebuiltinfunctions.cpp
@@ -65,6 +65,9 @@
QT_BEGIN_NAMESPACE
+// send more information such as file, line etc for console APIs
+DEFINE_BOOL_CONFIG_OPTION(qmlConsoleExtended, QML_CONSOLE_EXTENDED)
+
namespace QDeclarativeBuiltinFunctions {
enum ConsoleLogTypes {
@@ -75,19 +78,8 @@ enum ConsoleLogTypes {
v8::Handle<v8::Value> console(ConsoleLogTypes logType, const v8::Arguments &args)
{
- int line = -1;
- QString scriptName;
v8::HandleScope handleScope;
- {
- v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(1);
- if (stackTrace->GetFrameCount()) {
- v8::Local<v8::StackFrame> currentStackFrame = stackTrace->GetFrame(0);
- line = currentStackFrame->GetLineNumber();
- scriptName = V8ENGINE()->toString(currentStackFrame->GetScriptName());
- }
- }
-
QString result;
for (int i = 0; i < args.Length(); ++i) {
if (i != 0)
@@ -109,17 +101,29 @@ v8::Handle<v8::Value> console(ConsoleLogTypes logType, const v8::Arguments &args
}
}
- QString log = QString(QLatin1String("%1 (%2:%3)")).arg(result).arg(scriptName).arg(line);
+ if (qmlConsoleExtended()) {
+ int line = -1;
+ QString scriptName;
+ //get only current frame
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(1);
+ if (stackTrace->GetFrameCount()) {
+ v8::Local<v8::StackFrame> currentStackFrame = stackTrace->GetFrame(0);
+ line = currentStackFrame->GetLineNumber();
+ scriptName = V8ENGINE()->toString(currentStackFrame->GetScriptName());
+ }
+
+ result = QString(QLatin1String("%1 (%2:%3)")).arg(result).arg(scriptName).arg(line);
+ }
switch (logType) {
case Log:
- qDebug("%s", qPrintable(log));
+ qDebug("%s", qPrintable(result));
break;
case Warn:
- qWarning("%s", qPrintable(log));
+ qWarning("%s", qPrintable(result));
break;
case Error:
- qCritical("%s", qPrintable(log));
+ qCritical("%s", qPrintable(result));
break;
default:
break;