Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Side by Side Diff: Source/devtools/front_end/console/ConsoleViewMessage.js

Issue 674513002: DevTools: linkify relative links in console.log(new Error().stack) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/common/ParsedURL.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 break; 1260 break;
1258 } 1261 }
1259 1262
1260 return sourceString + " " + typeString + " " + levelString + ": " + this .formattedMessage().textContent + "\n" + this._message.url + " line " + this._me ssage.line; 1263 return sourceString + " " + typeString + " " + levelString + ": " + this .formattedMessage().textContent + "\n" + this._message.url + " line " + this._me ssage.line;
1261 }, 1264 },
1262 1265
1263 get text() 1266 get text()
1264 { 1267 {
1265 return this._message.messageText; 1268 return this._message.messageText;
1266 }, 1269 },
1270
1271 /**
1272 * @param {string} string
1273 * @return {?Element}
1274 */
1275 _tryFormatAsError: function(string)
1276 {
1277 if (!string.startsWith("Error"))
1278 return null;
1279
1280 var lines = string.split("\n");
1281 var beforeAts = true;
1282 //check format
1283 for (var i = 0; i < lines.length; ++i) {
vsevik 2014/10/23 08:40:57 var i = 0; for (; i < lines.length && !lines[i].tr
1284 var atLine = lines[i].trim().startsWith("at");
1285 if (beforeAts && atLine) {
1286 beforeAts = false;
1287 continue;
1288 }
1289 if (!beforeAts && !atLine)
1290 return null;
1291 }
1292
1293 if (beforeAts)
1294 return null;
1295
1296 var formattedResult = createElement("span");
1297 for (var i = 0; i < lines.length; ++i) {
vsevik 2014/10/23 08:40:57 for (var i = 0; i < firstAtLineIndex; ++i) { ...
1298 var atLine = lines[i].trim().startsWith("at ");
1299 if (!atLine)
1300 formattedResult.appendChild(this._linkifier.linkifyStringAsFragm ent(this._target(), lines[i] + "\n"));
1301 else {
1302 var openBracket = lines[i].indexOf("(");
1303 var closeBracket = lines[i].indexOf(")");
1304 var left = openBracket === -1 ? lines[i].indexOf("at") + 3 : ope nBracket + 1;
1305 var right = closeBracket === -1? lines[i].length : closeBracket;
1306 formattedResult.appendChild(createTextNode(lines[i].substring(0, left)));
1307 var toAppend = this._parseLink(lines[i].substring(left, right));
vsevik 2014/10/23 08:40:57 We need to check that this line matches some very
1308 formattedResult.appendChild(toAppend);
1309 formattedResult.appendChild(createTextNode(lines[i].substring(ri ght, lines[i].length) + "\n"))
1310 }
1311
1312 }
1313 return formattedResult;
1314 },
1315
1316 /**
1317 * @param {string} link
1318 * @return {!Node}
1319 */
1320 _parseLink: function(link)
1321 {
1322 var splitResult = WebInspector.ParsedURL.splitLineAndColumn(link);
1323 if (!splitResult) {
vsevik 2014/10/23 10:47:27 extra {
1324 return this._linkifier.linkifyStringAsFragment(this._target(), link) ;
1325 }
1326
1327 var parsed = splitResult.url.asParsedURL();
1328 if (!parsed)
1329 parsed = new WebInspector.ParsedURL(WebInspector.targetManager.inspe ctedPageURL() + splitResult.url);
1330
1331 return parsed.isValid ? this._linkifier.linkifyScriptLocation(this._targ et(), null, splitResult.url, splitResult.lineNumber, splitResult.columnNumber) : createTextNode(link);
vsevik 2014/10/23 10:47:27 Shouldn't we use parsed here?
1332 }
1267 } 1333 }
1268 1334
1269 /** 1335 /**
1270 * @constructor 1336 * @constructor
1271 * @extends {WebInspector.ConsoleViewMessage} 1337 * @extends {WebInspector.ConsoleViewMessage}
1272 * @param {!WebInspector.ConsoleMessage} consoleMessage 1338 * @param {!WebInspector.ConsoleMessage} consoleMessage
1273 * @param {!WebInspector.Linkifier} linkifier 1339 * @param {!WebInspector.Linkifier} linkifier
1274 * @param {number} nestingLevel 1340 * @param {number} nestingLevel
1275 */ 1341 */
1276 WebInspector.ConsoleGroupViewMessage = function(consoleMessage, linkifier, nesti ngLevel) 1342 WebInspector.ConsoleGroupViewMessage = function(consoleMessage, linkifier, nesti ngLevel)
(...skipping 29 matching lines...) Expand all
1306 { 1372 {
1307 if (!this._wrapperElement) { 1373 if (!this._wrapperElement) {
1308 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this ); 1374 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this );
1309 this._wrapperElement.classList.toggle("collapsed", this._collapsed); 1375 this._wrapperElement.classList.toggle("collapsed", this._collapsed);
1310 } 1376 }
1311 return this._wrapperElement; 1377 return this._wrapperElement;
1312 }, 1378 },
1313 1379
1314 __proto__: WebInspector.ConsoleViewMessage.prototype 1380 __proto__: WebInspector.ConsoleViewMessage.prototype
1315 } 1381 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/common/ParsedURL.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698