summaryrefslogtreecommitdiffstats
path: root/devtools/server
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server')
-rw-r--r--devtools/server/actors/errordocs.js1
-rw-r--r--devtools/server/actors/object.js5
-rw-r--r--devtools/server/event-parsers.js76
-rw-r--r--devtools/server/tests/unit/test_functiongrips-01.js2
4 files changed, 46 insertions, 38 deletions
diff --git a/devtools/server/actors/errordocs.js b/devtools/server/actors/errordocs.js
index 27f687dc7..7c4b3acff 100644
--- a/devtools/server/actors/errordocs.js
+++ b/devtools/server/actors/errordocs.js
@@ -18,7 +18,6 @@ const ErrorDocs = {
JSMSG_RESULTING_STRING_TOO_LARGE: "Resulting_string_too_large",
JSMSG_BAD_RADIX: "Bad_radix",
JSMSG_PRECISION_RANGE: "Precision_range",
- JSMSG_BAD_FORMAL: "Malformed_formal_parameter",
JSMSG_STMT_AFTER_RETURN: "Stmt_after_return",
JSMSG_NOT_A_CODEPOINT: "Not_a_codepoint",
JSMSG_BAD_SORT_ARG: "Array_sort_argument",
diff --git a/devtools/server/actors/object.js b/devtools/server/actors/object.js
index 1f417b951..06e95a5f0 100644
--- a/devtools/server/actors/object.js
+++ b/devtools/server/actors/object.js
@@ -1158,11 +1158,6 @@ DebuggerServer.ObjectActorPreviewers = {
}],
RegExp: [function ({obj, hooks}, grip) {
- // Avoid having any special preview for the RegExp.prototype itself.
- if (!obj.proto || obj.proto.class != "RegExp") {
- return false;
- }
-
let str = RegExp.prototype.toString.call(obj.unsafeDereference());
grip.displayString = hooks.createValueGrip(str);
return true;
diff --git a/devtools/server/event-parsers.js b/devtools/server/event-parsers.js
index a813d8e9b..6245af190 100644
--- a/devtools/server/event-parsers.js
+++ b/devtools/server/event-parsers.js
@@ -91,44 +91,58 @@ var parsers = [
return jQueryLiveGetListeners(node, false);
},
normalizeHandler: function (handlerDO) {
- let paths = [
- [".event.proxy/", ".event.proxy/", "*"],
- [".proxy/", "*"]
- ];
-
- let name = handlerDO.displayName;
+ function isFunctionInProxy(funcDO) {
+ // If the anonymous function is inside the |proxy| function and the
+ // function only has guessed atom, the guessed atom should starts with
+ // "proxy/".
+ let displayName = funcDO.displayName;
+ if (displayName && displayName.startsWith("proxy/")) {
+ return true;
+ }
- if (!name) {
- return handlerDO;
+ // If the anonymous function is inside the |proxy| function and the
+ // function gets name at compile time by SetFunctionName, its guessed
+ // atom doesn't contain "proxy/". In that case, check if the caller is
+ // "proxy" function, as a fallback.
+ let calleeDO = funcDO.environment.callee;
+ if (!calleeDO) {
+ return false;
+ }
+ let calleeName = calleeDO.displayName;
+ return calleeName == "proxy";
}
- for (let path of paths) {
- if (name.includes(path[0])) {
- path.splice(0, 1);
-
- for (let point of path) {
- let names = handlerDO.environment.names();
+ function getFirstFunctionVariable(funcDO) {
+ // The handler function inside the |proxy| function should point the
+ // unwrapped function via environment variable.
+ let names = funcDO.environment.names();
+ for (let varName of names) {
+ let varDO = handlerDO.environment.getVariable(varName);
+ if (!varDO) {
+ continue;
+ }
+ if (varDO.class == "Function") {
+ return varDO;
+ }
+ }
+ return null;
+ }
- for (let varName of names) {
- let temp = handlerDO.environment.getVariable(varName);
- if (!temp) {
- continue;
- }
+ if (!isFunctionInProxy(handlerDO)) {
+ return handlerDO;
+ }
- let displayName = temp.displayName;
- if (!displayName) {
- continue;
- }
+ const MAX_NESTED_HANDLER_COUNT = 2;
+ for (let i = 0; i < MAX_NESTED_HANDLER_COUNT; i++) {
+ let funcDO = getFirstFunctionVariable(handlerDO);
+ if (!funcDO)
+ return handlerDO;
- if (temp.class === "Function" &&
- (displayName.includes(point) || point === "*")) {
- handlerDO = temp;
- break;
- }
- }
- }
- break;
+ handlerDO = funcDO;
+ if (isFunctionInProxy(handlerDO)) {
+ continue;
}
+ break;
}
return handlerDO;
diff --git a/devtools/server/tests/unit/test_functiongrips-01.js b/devtools/server/tests/unit/test_functiongrips-01.js
index c41a7cad5..81b1b7767 100644
--- a/devtools/server/tests/unit/test_functiongrips-01.js
+++ b/devtools/server/tests/unit/test_functiongrips-01.js
@@ -52,7 +52,7 @@ function test_inferred_name_function() {
do_check_eq(args[0].class, "Function");
// No name for an anonymous function, but it should have an inferred name.
do_check_eq(args[0].name, undefined);
- do_check_eq(args[0].displayName, "o.m");
+ do_check_eq(args[0].displayName, "m");
let objClient = gThreadClient.pauseGrip(args[0]);
objClient.getParameterNames(function (aResponse) {