test_framebindings-01.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /* Any copyright is dedicated to the Public Domain.
  2. http://creativecommons.org/publicdomain/zero/1.0/ */
  3. /**
  4. * Check a frame actor's bindings property.
  5. */
  6. var gDebuggee;
  7. var gClient;
  8. var gThreadClient;
  9. function run_test()
  10. {
  11. initTestDebuggerServer();
  12. gDebuggee = addTestGlobal("test-stack");
  13. gClient = new DebuggerClient(DebuggerServer.connectPipe());
  14. gClient.connect().then(function () {
  15. attachTestTabAndResume(gClient, "test-stack", function (aResponse, aTabClient, aThreadClient) {
  16. gThreadClient = aThreadClient;
  17. test_pause_frame();
  18. });
  19. });
  20. do_test_pending();
  21. }
  22. function test_pause_frame()
  23. {
  24. gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) {
  25. let bindings = aPacket.frame.environment.bindings;
  26. let args = bindings.arguments;
  27. let vars = bindings.variables;
  28. do_check_eq(args.length, 6);
  29. do_check_eq(args[0].aNumber.value, 42);
  30. do_check_eq(args[1].aBool.value, true);
  31. do_check_eq(args[2].aString.value, "nasu");
  32. do_check_eq(args[3].aNull.value.type, "null");
  33. do_check_eq(args[4].aUndefined.value.type, "undefined");
  34. do_check_eq(args[5].aObject.value.type, "object");
  35. do_check_eq(args[5].aObject.value.class, "Object");
  36. do_check_true(!!args[5].aObject.value.actor);
  37. do_check_eq(vars.a.value, 1);
  38. do_check_eq(vars.b.value, true);
  39. do_check_eq(vars.c.value.type, "object");
  40. do_check_eq(vars.c.value.class, "Object");
  41. do_check_true(!!vars.c.value.actor);
  42. let objClient = gThreadClient.pauseGrip(vars.c.value);
  43. objClient.getPrototypeAndProperties(function (aResponse) {
  44. do_check_eq(aResponse.ownProperties.a.configurable, true);
  45. do_check_eq(aResponse.ownProperties.a.enumerable, true);
  46. do_check_eq(aResponse.ownProperties.a.writable, true);
  47. do_check_eq(aResponse.ownProperties.a.value, "a");
  48. do_check_eq(aResponse.ownProperties.b.configurable, true);
  49. do_check_eq(aResponse.ownProperties.b.enumerable, true);
  50. do_check_eq(aResponse.ownProperties.b.writable, true);
  51. do_check_eq(aResponse.ownProperties.b.value.type, "undefined");
  52. do_check_false("class" in aResponse.ownProperties.b.value);
  53. gThreadClient.resume(function () {
  54. finishClient(gClient);
  55. });
  56. });
  57. });
  58. gDebuggee.eval("(" + function () {
  59. function stopMe(aNumber, aBool, aString, aNull, aUndefined, aObject) {
  60. var a = 1;
  61. var b = true;
  62. var c = { a: "a", b: undefined };
  63. debugger;
  64. }
  65. stopMe(42, true, "nasu", null, undefined, { foo: "bar" });
  66. } + ")()");
  67. }