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

Unified Diff: extensions/renderer/resources/uncaught_exception_handler.js

Issue 482603002: Unify logic of stack trace generation for extension errors (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add $Error and $String.indexOf to safe builtins Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/resources/uncaught_exception_handler.js
diff --git a/extensions/renderer/resources/uncaught_exception_handler.js b/extensions/renderer/resources/uncaught_exception_handler.js
index 7e0725f03499464096c8a228a9f079f41308d743..687fc7fa14ae5b0fc330a4c7a5a48a082fad8f63 100644
--- a/extensions/renderer/resources/uncaught_exception_handler.js
+++ b/extensions/renderer/resources/uncaught_exception_handler.js
@@ -14,11 +14,13 @@ var handler = function(message, e) {
* @param {string} message - The prefix of the error message.
* @param {Error|*} e - The thrown error object. This object is potentially
* unsafe, because it could be generated by an extension.
- * @param {string=} stackTrace - The stack trace to be appended to the error
- * message. This stack trace must not include stack frames of |e.stack|.
+ * @param {string=} priorStackTrace - The stack trace to be appended to the
+ * error message. This stack trace must not include stack frames of |e.stack|,
+ * because both stack traces are concatenated. Overlapping stack traces will
+ * confuse extension developers.
* @return {string} The formatted error message.
*/
-function formatErrorMessage(message, e, stackTrace) {
+function formatErrorMessage(message, e, priorStackTrace) {
not at google - send to devlin 2014/08/19 16:45:56 The diff on this file is super confusing, seems li
robwu 2014/08/19 17:35:57 This diff looks fine to me. I renamed the printSta
not at google - send to devlin 2014/08/19 17:54:38 I clicked on View which is supposed to show the di
// Append ": [error message]"
if (e) {
try {
@@ -41,7 +43,7 @@ function formatErrorMessage(message, e, stackTrace) {
} catch (e) {}
// If a stack is not provided, capture a stack trace.
- if (!stackTrace && !stack)
+ if (!priorStackTrace && !stack)
stack = getStackTrace();
stack = filterExtensionStackTrace(stack);
@@ -49,8 +51,8 @@ function formatErrorMessage(message, e, stackTrace) {
message += '\n' + stack;
// If an asynchronouse stack trace was set, append it.
- if (stackTrace)
- message += '\n' + stackTrace;
+ if (priorStackTrace)
+ message += '\n' + priorStackTrace;
return message;
}
@@ -62,17 +64,14 @@ function filterExtensionStackTrace(stack) {
// extension, to not confuse extension developers with internal details.
stack = $String.split(stack, '\n');
stack = $Array.filter(stack, function(line) {
- return line.indexOf('chrome-extension://') >= 0;
+ return $String.indexOf(line, 'chrome-extension://') >= 0;
});
return $Array.join(stack, '\n');
}
-// Get a local reference to the captureStackTrace method to prevent extension
-// code from interfering with our method.
-var captureStackTrace = Error.captureStackTrace;
function getStackTrace() {
var e = {};
- captureStackTrace(e, getStackTrace);
+ $Error.captureStackTrace(e, getStackTrace);
return e.stack;
}
@@ -85,11 +84,11 @@ function getExtensionStackTrace() {
*
* @param {string} message - Error message prefix.
* @param {Error|*} e - Thrown object.
- * @param {string=} stackTrace - Error message suffix.
+ * @param {string=} priorStackTrace - Error message suffix.
* @see formatErrorMessage
*/
-exports.handle = function(message, e, stackTrace) {
- message = formatErrorMessage(message, e, stackTrace);
+exports.handle = function(message, e, priorStackTrace) {
+ message = formatErrorMessage(message, e, priorStackTrace);
handler(message, e);
};

Powered by Google App Engine
This is Rietveld 408576698