OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * | 9 * |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 case WebInspector.ConsoleMessage.MessageType.Dir: | 159 case WebInspector.ConsoleMessage.MessageType.Dir: |
160 var obj = consoleMessage.parameters ? consoleMessage.par
ameters[0] : undefined; | 160 var obj = consoleMessage.parameters ? consoleMessage.par
ameters[0] : undefined; |
161 var args = ["%O", obj]; | 161 var args = ["%O", obj]; |
162 this._messageElement = this._format(args); | 162 this._messageElement = this._format(args); |
163 break; | 163 break; |
164 case WebInspector.ConsoleMessage.MessageType.Profile: | 164 case WebInspector.ConsoleMessage.MessageType.Profile: |
165 case WebInspector.ConsoleMessage.MessageType.ProfileEnd: | 165 case WebInspector.ConsoleMessage.MessageType.ProfileEnd: |
166 this._messageElement = this._format([consoleMessage.mess
ageText]); | 166 this._messageElement = this._format([consoleMessage.mess
ageText]); |
167 break; | 167 break; |
168 default: | 168 default: |
| 169 if (consoleMessage.parameters && consoleMessage.paramete
rs.length === 1 && consoleMessage.parameters[0].type === "string") |
| 170 this._messageElement = this._tryFormatAsError(/**@t
ype {string} */(consoleMessage.parameters[0].value)); |
| 171 |
169 var args = consoleMessage.parameters || [consoleMessage.
messageText]; | 172 var args = consoleMessage.parameters || [consoleMessage.
messageText]; |
170 this._messageElement = this._format(args); | 173 this._messageElement = this._messageElement || this._for
mat(args); |
171 } | 174 } |
172 } else if (consoleMessage.source === WebInspector.ConsoleMessage.Mes
sageSource.Network) { | 175 } else if (consoleMessage.source === WebInspector.ConsoleMessage.Mes
sageSource.Network) { |
173 if (consoleMessage.request) { | 176 if (consoleMessage.request) { |
174 this._messageElement = createElement("span"); | 177 this._messageElement = createElement("span"); |
175 if (consoleMessage.level === WebInspector.ConsoleMessage.Mes
sageLevel.Error) { | 178 if (consoleMessage.level === WebInspector.ConsoleMessage.Mes
sageLevel.Error) { |
176 this._messageElement.createTextChildren(consoleMessage.r
equest.requestMethod, " "); | 179 this._messageElement.createTextChildren(consoleMessage.r
equest.requestMethod, " "); |
177 this._messageElement.appendChild(WebInspector.Linkifier.
linkifyUsingRevealer(consoleMessage.request, consoleMessage.request.url, console
Message.request.url)); | 180 this._messageElement.appendChild(WebInspector.Linkifier.
linkifyUsingRevealer(consoleMessage.request, consoleMessage.request.url, console
Message.request.url)); |
178 if (consoleMessage.request.failed) | 181 if (consoleMessage.request.failed) |
179 this._messageElement.createTextChildren(" ", console
Message.request.localizedFailDescription); | 182 this._messageElement.createTextChildren(" ", console
Message.request.localizedFailDescription); |
180 else | 183 else |
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 break; | 1262 break; |
1260 } | 1263 } |
1261 | 1264 |
1262 return sourceString + " " + typeString + " " + levelString + ": " + this
.formattedMessage().textContent + "\n" + this._message.url + " line " + this._me
ssage.line; | 1265 return sourceString + " " + typeString + " " + levelString + ": " + this
.formattedMessage().textContent + "\n" + this._message.url + " line " + this._me
ssage.line; |
1263 }, | 1266 }, |
1264 | 1267 |
1265 get text() | 1268 get text() |
1266 { | 1269 { |
1267 return this._message.messageText; | 1270 return this._message.messageText; |
1268 }, | 1271 }, |
| 1272 |
| 1273 /** |
| 1274 * @param {string} string |
| 1275 * @return {?Element} |
| 1276 */ |
| 1277 _tryFormatAsError: function(string) |
| 1278 { |
| 1279 var errorPrefixes = ["EvalError", "ReferenceError", "SyntaxError", "Type
Error", "RangeError", "Error", "URIError"]; |
| 1280 var target = this._target(); |
| 1281 if (!target || !errorPrefixes.some(String.prototype.startsWith.bind(new
String(string)))) |
| 1282 return null; |
| 1283 |
| 1284 var lines = string.split("\n"); |
| 1285 var links = []; |
| 1286 var position = 0; |
| 1287 for (var i = 0; i < lines.length; ++i) { |
| 1288 position += i > 0 ? lines[i - 1].length + 1 : 0; |
| 1289 var isCallFrameLine = /^\s*at\s/.test(lines[i]); |
| 1290 if (!isCallFrameLine && links.length) |
| 1291 return null; |
| 1292 |
| 1293 if (!isCallFrameLine) |
| 1294 continue; |
| 1295 |
| 1296 var openBracketIndex = lines[i].indexOf("("); |
| 1297 var closeBracketIndex = lines[i].indexOf(")"); |
| 1298 var hasOpenBracket = openBracketIndex !== -1; |
| 1299 var hasCloseBracket = closeBracketIndex !== -1; |
| 1300 |
| 1301 if ((openBracketIndex > closeBracketIndex) || (hasOpenBracket ^ has
CloseBracket)) |
| 1302 return null; |
| 1303 |
| 1304 var left = hasOpenBracket ? openBracketIndex + 1 : lines[i].indexOf(
"at") + 3; |
| 1305 var right = hasOpenBracket ? closeBracketIndex : lines[i].length; |
| 1306 var linkCandidate = lines[i].substring(left, right); |
| 1307 var splitResult = WebInspector.ParsedURL.splitLineAndColumn(linkCand
idate); |
| 1308 if (!splitResult) |
| 1309 return null; |
| 1310 |
| 1311 var parsed = splitResult.url.asParsedURL(); |
| 1312 var url; |
| 1313 if (parsed) |
| 1314 url = parsed.url; |
| 1315 else if (target.debuggerModel.scriptsForSourceURL(splitResult.url).l
ength) |
| 1316 url = splitResult.url; |
| 1317 else if (splitResult.url === "<anonymous>") |
| 1318 continue; |
| 1319 else |
| 1320 return null; |
| 1321 |
| 1322 links.push({url: url, positionLeft: position + left, positionRight:
position + right, lineNumber: splitResult.lineNumber, columnNumber: splitResult.
columnNumber}); |
| 1323 } |
| 1324 |
| 1325 if (!links.length) |
| 1326 return null; |
| 1327 |
| 1328 var formattedResult = createElement("span"); |
| 1329 var start = 0; |
| 1330 for (var i = 0; i < links.length; ++i) { |
| 1331 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str
ing.substring(start, links[i].positionLeft))); |
| 1332 formattedResult.appendChild(this._linkifier.linkifyScriptLocation(ta
rget, null, links[i].url, links[i].lineNumber, links[i].columnNumber)); |
| 1333 start = links[i].positionRight; |
| 1334 } |
| 1335 |
| 1336 if (start != string.length) |
| 1337 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str
ing.substring(start))); |
| 1338 |
| 1339 return formattedResult; |
| 1340 } |
1269 } | 1341 } |
1270 | 1342 |
1271 /** | 1343 /** |
1272 * @constructor | 1344 * @constructor |
1273 * @extends {WebInspector.ConsoleViewMessage} | 1345 * @extends {WebInspector.ConsoleViewMessage} |
1274 * @param {!WebInspector.ConsoleMessage} consoleMessage | 1346 * @param {!WebInspector.ConsoleMessage} consoleMessage |
1275 * @param {!WebInspector.Linkifier} linkifier | 1347 * @param {!WebInspector.Linkifier} linkifier |
1276 * @param {number} nestingLevel | 1348 * @param {number} nestingLevel |
1277 */ | 1349 */ |
1278 WebInspector.ConsoleGroupViewMessage = function(consoleMessage, linkifier, nesti
ngLevel) | 1350 WebInspector.ConsoleGroupViewMessage = function(consoleMessage, linkifier, nesti
ngLevel) |
(...skipping 29 matching lines...) Expand all Loading... |
1308 { | 1380 { |
1309 if (!this._wrapperElement) { | 1381 if (!this._wrapperElement) { |
1310 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this
); | 1382 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this
); |
1311 this._wrapperElement.classList.toggle("collapsed", this._collapsed); | 1383 this._wrapperElement.classList.toggle("collapsed", this._collapsed); |
1312 } | 1384 } |
1313 return this._wrapperElement; | 1385 return this._wrapperElement; |
1314 }, | 1386 }, |
1315 | 1387 |
1316 __proto__: WebInspector.ConsoleViewMessage.prototype | 1388 __proto__: WebInspector.ConsoleViewMessage.prototype |
1317 } | 1389 } |
OLD | NEW |