test_reattach-thread.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* Any copyright is dedicated to the Public Domain.
  2. http://creativecommons.org/publicdomain/zero/1.0/ */
  3. /**
  4. * Test that reattaching to a previously detached thread works.
  5. */
  6. var gClient, gDebuggee, gThreadClient, gTabClient;
  7. function run_test()
  8. {
  9. initTestDebuggerServer();
  10. gDebuggee = testGlobal("test-reattach");
  11. DebuggerServer.addTestGlobal(gDebuggee);
  12. let transport = DebuggerServer.connectPipe();
  13. gClient = new DebuggerClient(transport);
  14. gClient.connect().then(() => {
  15. attachTestTab(gClient, "test-reattach", (aReply, aTabClient) => {
  16. gTabClient = aTabClient;
  17. test_attach();
  18. });
  19. });
  20. do_test_pending();
  21. }
  22. function test_attach()
  23. {
  24. gTabClient.attachThread({}, (aResponse, aThreadClient) => {
  25. do_check_eq(aThreadClient.state, "paused");
  26. gThreadClient = aThreadClient;
  27. aThreadClient.resume(test_detach);
  28. });
  29. }
  30. function test_detach()
  31. {
  32. gThreadClient.detach(() => {
  33. do_check_eq(gThreadClient.state, "detached");
  34. do_check_eq(gTabClient.thread, null);
  35. test_reattach();
  36. });
  37. }
  38. function test_reattach()
  39. {
  40. gTabClient.attachThread({}, (aResponse, aThreadClient) => {
  41. do_check_neq(gThreadClient, aThreadClient);
  42. do_check_eq(aThreadClient.state, "paused");
  43. do_check_eq(gTabClient.thread, aThreadClient);
  44. aThreadClient.resume(cleanup);
  45. });
  46. }
  47. function cleanup()
  48. {
  49. gClient.close().then(do_test_finished);
  50. }