test_framebindings-03.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /* Any copyright is dedicated to the Public Domain.
  2. http://creativecommons.org/publicdomain/zero/1.0/ */
  3. /**
  4. * Check a |with| frame actor's bindings.
  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 env = aPacket.frame.environment;
  26. do_check_neq(env, undefined);
  27. let parentEnv = env.parent;
  28. do_check_neq(parentEnv, undefined);
  29. let bindings = parentEnv.bindings;
  30. let args = bindings.arguments;
  31. let vars = bindings.variables;
  32. do_check_eq(args.length, 1);
  33. do_check_eq(args[0].aNumber.value, 10);
  34. do_check_eq(vars.r.value, 10);
  35. do_check_eq(vars.a.value, Math.PI * 100);
  36. do_check_eq(vars.arguments.value.class, "Arguments");
  37. do_check_true(!!vars.arguments.value.actor);
  38. let objClient = gThreadClient.pauseGrip(env.object);
  39. objClient.getPrototypeAndProperties(function (aResponse) {
  40. do_check_eq(aResponse.ownProperties.PI.value, Math.PI);
  41. do_check_eq(aResponse.ownProperties.cos.value.type, "object");
  42. do_check_eq(aResponse.ownProperties.cos.value.class, "Function");
  43. do_check_true(!!aResponse.ownProperties.cos.value.actor);
  44. gThreadClient.resume(function () {
  45. finishClient(gClient);
  46. });
  47. });
  48. });
  49. gDebuggee.eval("(" + function () {
  50. function stopMe(aNumber) {
  51. var a;
  52. var r = aNumber;
  53. with (Math) {
  54. a = PI * r * r;
  55. debugger;
  56. }
  57. }
  58. stopMe(10);
  59. } + ")()");
  60. }