12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- "use strict";
- /**
- * Client request stacks should span the entire process from before making the
- * request to handling the reply from the server. The server frames are not
- * included, nor can they be in most cases, since the server can be a remote
- * device.
- */
- var { executeSoon } = require("devtools/shared/DevToolsUtils");
- var promise = require("promise");
- var defer = require("devtools/shared/defer");
- var Services = require("Services");
- var asyncStackEnabled =
- Services.prefs.getBoolPref("javascript.options.asyncstack");
- do_register_cleanup(() => {
- Services.prefs.setBoolPref("javascript.options.asyncstack",
- asyncStackEnabled);
- });
- add_task(function* () {
- Services.prefs.setBoolPref("javascript.options.asyncstack", true);
- yield waitForTick();
- let stack = Components.stack;
- while (stack) {
- do_print(stack.name);
- if (stack.name == "waitForTick") {
- // Reached back to outer function before executeSoon
- ok(true, "Complete stack");
- return;
- }
- stack = stack.asyncCaller || stack.caller;
- }
- ok(false, "Incomplete stack");
- });
- function waitForTick() {
- let deferred = defer();
- executeSoon(deferred.resolve);
- return deferred.promise;
- }
|