Index: extensions/renderer/resources/last_error.js |
diff --git a/extensions/renderer/resources/last_error.js b/extensions/renderer/resources/last_error.js |
index 8d53371827acd01eeaa12840bd71497b5bb90120..9cd517ccd6674f0713186ded5f2e9a30cae47abe 100644 |
--- a/extensions/renderer/resources/last_error.js |
+++ b/extensions/renderer/resources/last_error.js |
@@ -19,12 +19,12 @@ var GetGlobal = requireNative('sendRequest').GetGlobal; |
* optional |stack|. |
*/ |
function set(name, message, stack, targetChrome) { |
- var errorMessage = name + ': ' + message; |
- if (stack != null && stack != '') |
- errorMessage += '\n' + stack; |
- |
- if (!targetChrome) |
+ if (!targetChrome) { |
+ var errorMessage = name + ': ' + message; |
+ if (stack != null && stack != '') |
+ errorMessage += '\n' + stack; |
throw new Error('No chrome object to set error: ' + errorMessage); |
+ } |
clear(targetChrome); // in case somebody has set a sneaky getter/setter |
var errorObject = { message: message }; |
@@ -113,12 +113,30 @@ function run(name, message, stack, callback, args) { |
try { |
$Function.apply(callback, undefined, args); |
} finally { |
+ reportIfUnchecked(name, targetChrome, stack); |
clear(targetChrome); |
} |
} |
+/** |
+ * Checks whether chrome.runtime.lastError has been accessed if set. |
+ * If it was set but not accessed, the error is reported to the console. |
+ * |
+ * @param {string=} name - name of API. |
+ * @param {Object} targetChrome - the Chrome object to check. |
+ * @param {string=} stack - Stack trace of the call up to the error. |
+ */ |
+function reportIfUnchecked(name, targetChrome, stack) { |
+ var error = hasAccessed(targetChrome) && targetChrome.runtime.lastError; |
not at google - send to devlin
2015/01/22 17:59:59
targetChrome.runtime.lastError --> hasError(target
robwu
2015/01/22 18:07:22
|error| is used below as |error.message| to get th
not at google - send to devlin
2015/01/22 18:12:53
Alright. Well use that as a reason to not overload
robwu
2015/01/22 18:19:33
Done.
|
+ if (!error) |
+ return; |
+ console.error("Unchecked runtime.lastError while running " + |
+ (name || "unknown") + ": " + error.message + (stack ? "\n" + stack : "")); |
+} |
+ |
exports.clear = clear; |
exports.hasAccessed = hasAccessed; |
exports.hasError = hasError; |
exports.set = set; |
exports.run = run; |
+exports.reportIfUnchecked = reportIfUnchecked; |