| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010-2011 Google Inc. All rights reserved. | 2 * Copyright (c) 2010-2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 | 78 |
| 79 std::unique_ptr<V8Debugger> V8Debugger::create(v8::Isolate* isolate, V8DebuggerC
lient* client) | 79 std::unique_ptr<V8Debugger> V8Debugger::create(v8::Isolate* isolate, V8DebuggerC
lient* client) |
| 80 { | 80 { |
| 81 return wrapUnique(new V8DebuggerImpl(isolate, client)); | 81 return wrapUnique(new V8DebuggerImpl(isolate, client)); |
| 82 } | 82 } |
| 83 | 83 |
| 84 V8DebuggerImpl::V8DebuggerImpl(v8::Isolate* isolate, V8DebuggerClient* client) | 84 V8DebuggerImpl::V8DebuggerImpl(v8::Isolate* isolate, V8DebuggerClient* client) |
| 85 : m_isolate(isolate) | 85 : m_isolate(isolate) |
| 86 , m_client(client) | 86 , m_client(client) |
| 87 , m_capturingStackTracesCount(0) | 87 , m_capturingStackTracesCount(0) |
| 88 , m_muteConsoleCount(0) | |
| 89 , m_lastExceptionId(0) | 88 , m_lastExceptionId(0) |
| 90 , m_enabledAgentsCount(0) | 89 , m_enabledAgentsCount(0) |
| 91 , m_breakpointsActivated(true) | 90 , m_breakpointsActivated(true) |
| 92 , m_runningNestedMessageLoop(false) | 91 , m_runningNestedMessageLoop(false) |
| 93 , m_maxAsyncCallStackDepth(0) | 92 , m_maxAsyncCallStackDepth(0) |
| 94 { | 93 { |
| 95 } | 94 } |
| 96 | 95 |
| 97 V8DebuggerImpl::~V8DebuggerImpl() | 96 V8DebuggerImpl::~V8DebuggerImpl() |
| 98 { | 97 { |
| (...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1049 void V8DebuggerImpl::idleStarted() | 1048 void V8DebuggerImpl::idleStarted() |
| 1050 { | 1049 { |
| 1051 m_isolate->GetCpuProfiler()->SetIdle(true); | 1050 m_isolate->GetCpuProfiler()->SetIdle(true); |
| 1052 } | 1051 } |
| 1053 | 1052 |
| 1054 void V8DebuggerImpl::idleFinished() | 1053 void V8DebuggerImpl::idleFinished() |
| 1055 { | 1054 { |
| 1056 m_isolate->GetCpuProfiler()->SetIdle(false); | 1055 m_isolate->GetCpuProfiler()->SetIdle(false); |
| 1057 } | 1056 } |
| 1058 | 1057 |
| 1059 bool V8DebuggerImpl::addConsoleMessage(int contextGroupId, MessageSource source,
MessageLevel level, const String16& message, const String16& url, unsigned line
Number, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scr
iptId, const String16& requestIdentifier, const String16& workerId) | 1058 void V8DebuggerImpl::addConsoleMessage(int contextGroupId, MessageSource source,
MessageLevel level, const String16& message, const String16& url, unsigned line
Number, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scr
iptId, const String16& requestIdentifier, const String16& workerId) |
| 1060 { | 1059 { |
| 1061 if (m_muteConsoleCount) | |
| 1062 return false; | |
| 1063 ensureConsoleMessageStorage(contextGroupId)->addMessage(V8ConsoleMessage::cr
eateExternal(m_client->currentTimeMS(), source, level, message, url, lineNumber,
columnNumber, std::move(stackTrace), scriptId, requestIdentifier, workerId)); | 1060 ensureConsoleMessageStorage(contextGroupId)->addMessage(V8ConsoleMessage::cr
eateExternal(m_client->currentTimeMS(), source, level, message, url, lineNumber,
columnNumber, std::move(stackTrace), scriptId, requestIdentifier, workerId)); |
| 1064 return true; | |
| 1065 } | 1061 } |
| 1066 | 1062 |
| 1067 void V8DebuggerImpl::logToConsole(v8::Local<v8::Context> context, const String16
& message, v8::Local<v8::Value> arg1, v8::Local<v8::Value> arg2) | 1063 void V8DebuggerImpl::logToConsole(v8::Local<v8::Context> context, const String16
& message, v8::Local<v8::Value> arg1, v8::Local<v8::Value> arg2) |
| 1068 { | 1064 { |
| 1069 int contextGroupId = getGroupId(context); | 1065 int contextGroupId = getGroupId(context); |
| 1070 InspectedContext* inspectedContext = getContext(contextGroupId, contextId(co
ntext)); | 1066 InspectedContext* inspectedContext = getContext(contextGroupId, contextId(co
ntext)); |
| 1071 if (!inspectedContext) | 1067 if (!inspectedContext) |
| 1072 return; | 1068 return; |
| 1073 std::vector<v8::Local<v8::Value>> arguments; | 1069 std::vector<v8::Local<v8::Value>> arguments; |
| 1074 if (!arg1.IsEmpty()) | 1070 if (!arg1.IsEmpty()) |
| 1075 arguments.push_back(arg1); | 1071 arguments.push_back(arg1); |
| 1076 if (!arg2.IsEmpty()) | 1072 if (!arg2.IsEmpty()) |
| 1077 arguments.push_back(arg2); | 1073 arguments.push_back(arg2); |
| 1078 ensureConsoleMessageStorage(contextGroupId)->addMessage(V8ConsoleMessage::cr
eateForConsoleAPI(m_client->currentTimeMS(), LogMessageType, LogMessageLevel, me
ssage, arguments.size() ? &arguments : nullptr, captureStackTrace(false), inspec
tedContext)); | 1074 ensureConsoleMessageStorage(contextGroupId)->addMessage(V8ConsoleMessage::cr
eateForConsoleAPI(m_client->currentTimeMS(), ConsoleAPIType::kLog, LogMessageLev
el, message, arguments.size() ? &arguments : nullptr, captureStackTrace(false),
inspectedContext)); |
| 1079 } | 1075 } |
| 1080 | 1076 |
| 1081 void V8DebuggerImpl::exceptionThrown(int contextGroupId, const String16& errorMe
ssage, const String16& url, unsigned lineNumber, unsigned columnNumber, std::uni
que_ptr<V8StackTrace> stackTrace, int scriptId) | 1077 void V8DebuggerImpl::exceptionThrown(int contextGroupId, const String16& errorMe
ssage, const String16& url, unsigned lineNumber, unsigned columnNumber, std::uni
que_ptr<V8StackTrace> stackTrace, int scriptId) |
| 1082 { | 1078 { |
| 1083 if (m_muteConsoleCount || !contextGroupId) | |
| 1084 return; | |
| 1085 m_client->messageAddedToConsole(contextGroupId, JSMessageSource, ErrorMessag
eLevel, errorMessage, url, lineNumber, columnNumber, stackTrace.get()); | 1079 m_client->messageAddedToConsole(contextGroupId, JSMessageSource, ErrorMessag
eLevel, errorMessage, url, lineNumber, columnNumber, stackTrace.get()); |
| 1086 unsigned exceptionId = ++m_lastExceptionId; | 1080 unsigned exceptionId = ++m_lastExceptionId; |
| 1087 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orException(m_client->currentTimeMS(), errorMessage, url, lineNumber, columnNumb
er, std::move(stackTrace), scriptId, m_isolate, 0, v8::Local<v8::Value>(), excep
tionId); | 1081 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orException(m_client->currentTimeMS(), errorMessage, url, lineNumber, columnNumb
er, std::move(stackTrace), scriptId, m_isolate, 0, v8::Local<v8::Value>(), excep
tionId); |
| 1088 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); | 1082 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); |
| 1089 } | 1083 } |
| 1090 | 1084 |
| 1091 unsigned V8DebuggerImpl::promiseRejected(v8::Local<v8::Context> context, const S
tring16& errorMessage, v8::Local<v8::Value> exception, const String16& url, unsi
gned lineNumber, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace
, int scriptId) | 1085 unsigned V8DebuggerImpl::promiseRejected(v8::Local<v8::Context> context, const S
tring16& errorMessage, v8::Local<v8::Value> exception, const String16& url, unsi
gned lineNumber, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace
, int scriptId) |
| 1092 { | 1086 { |
| 1093 if (m_muteConsoleCount) | |
| 1094 return 0; | |
| 1095 int contextGroupId = getGroupId(context); | 1087 int contextGroupId = getGroupId(context); |
| 1096 if (!contextGroupId) | 1088 if (!contextGroupId) |
| 1097 return 0; | 1089 return 0; |
| 1098 | 1090 |
| 1099 const String16 defaultMessage = "Uncaught (in promise)"; | 1091 const String16 defaultMessage = "Uncaught (in promise)"; |
| 1100 String16 message = errorMessage; | 1092 String16 message = errorMessage; |
| 1101 if (message.isEmpty()) | 1093 if (message.isEmpty()) |
| 1102 message = defaultMessage; | 1094 message = defaultMessage; |
| 1103 else if (message.startWith("Uncaught ")) | 1095 else if (message.startWith("Uncaught ")) |
| 1104 message = message.substring(0, 8) + " (in promise)" + message.substring(
8); | 1096 message = message.substring(0, 8) + " (in promise)" + message.substring(
8); |
| 1105 | 1097 |
| 1106 m_client->messageAddedToConsole(contextGroupId, JSMessageSource, ErrorMessag
eLevel, message, url, lineNumber, columnNumber, stackTrace.get()); | 1098 m_client->messageAddedToConsole(contextGroupId, JSMessageSource, ErrorMessag
eLevel, message, url, lineNumber, columnNumber, stackTrace.get()); |
| 1107 unsigned exceptionId = ++m_lastExceptionId; | 1099 unsigned exceptionId = ++m_lastExceptionId; |
| 1108 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orException(m_client->currentTimeMS(), message, url, lineNumber, columnNumber, s
td::move(stackTrace), scriptId, m_isolate, contextId(context), exception, except
ionId); | 1100 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orException(m_client->currentTimeMS(), message, url, lineNumber, columnNumber, s
td::move(stackTrace), scriptId, m_isolate, contextId(context), exception, except
ionId); |
| 1109 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); | 1101 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); |
| 1110 return exceptionId; | 1102 return exceptionId; |
| 1111 } | 1103 } |
| 1112 | 1104 |
| 1113 void V8DebuggerImpl::promiseRejectionRevoked(v8::Local<v8::Context> context, uns
igned promiseRejectionId) | 1105 void V8DebuggerImpl::promiseRejectionRevoked(v8::Local<v8::Context> context, uns
igned promiseRejectionId) |
| 1114 { | 1106 { |
| 1115 if (m_muteConsoleCount) | |
| 1116 return; | |
| 1117 int contextGroupId = getGroupId(context); | 1107 int contextGroupId = getGroupId(context); |
| 1118 if (!contextGroupId) | 1108 if (!contextGroupId) |
| 1119 return; | 1109 return; |
| 1120 | 1110 |
| 1121 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orRevokedException(m_client->currentTimeMS(), "Handler added to rejected promise
", promiseRejectionId); | 1111 std::unique_ptr<V8ConsoleMessage> consoleMessage = V8ConsoleMessage::createF
orRevokedException(m_client->currentTimeMS(), "Handler added to rejected promise
", promiseRejectionId); |
| 1122 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); | 1112 ensureConsoleMessageStorage(contextGroupId)->addMessage(std::move(consoleMes
sage)); |
| 1123 } | 1113 } |
| 1124 | 1114 |
| 1125 void V8DebuggerImpl::consoleMessagesCount(int contextGroupId, unsigned* total, u
nsigned* withArguments) | 1115 void V8DebuggerImpl::consoleMessagesCount(int contextGroupId, unsigned* total, u
nsigned* withArguments) |
| 1126 { | 1116 { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1178 | 1168 |
| 1179 V8InspectorSessionImpl* V8DebuggerImpl::sessionForContextGroup(int contextGroupI
d) | 1169 V8InspectorSessionImpl* V8DebuggerImpl::sessionForContextGroup(int contextGroupI
d) |
| 1180 { | 1170 { |
| 1181 if (!contextGroupId) | 1171 if (!contextGroupId) |
| 1182 return nullptr; | 1172 return nullptr; |
| 1183 SessionMap::iterator iter = m_sessions.find(contextGroupId); | 1173 SessionMap::iterator iter = m_sessions.find(contextGroupId); |
| 1184 return iter == m_sessions.end() ? nullptr : iter->second; | 1174 return iter == m_sessions.end() ? nullptr : iter->second; |
| 1185 } | 1175 } |
| 1186 | 1176 |
| 1187 } // namespace blink | 1177 } // namespace blink |
| OLD | NEW |