diff --git a/dom/tests/unit/test_PromiseDebugging.js b/dom/tests/unit/test_PromiseDebugging.js new file mode 100644 index 00000000000..d6c8d4306ad --- /dev/null +++ b/dom/tests/unit/test_PromiseDebugging.js @@ -0,0 +1,20 @@ +function run_test() +{ + // Hack around Promise.jsm being stuck on my global + do_check_false(PromiseDebugging === undefined); + var res; + var p = new Promise(function(resolve, reject) { res = resolve }); + var state = PromiseDebugging.getState(p); + do_check_eq(state.state, "pending"); + + do_test_pending(); + + p.then(function() { + var state = PromiseDebugging.getState(p); + do_check_eq(state.state, "fulfilled"); + do_check_eq(state.value, 5); + do_test_finished(); + }); + + res(5); +} diff --git a/dom/tests/unit/xpcshell.ini b/dom/tests/unit/xpcshell.ini index 2654cafa714..4db9a9eb71b 100644 --- a/dom/tests/unit/xpcshell.ini +++ b/dom/tests/unit/xpcshell.ini @@ -18,3 +18,4 @@ skip-if = os == "mac" || os == "android" skip-if = os == "android" [test_geolocation_reset_accuracy_wrap.js] skip-if = os == "mac" || os == "android" +[test_PromiseDebugging.js] diff --git a/dom/webidl/PromiseDebugging.webidl b/dom/webidl/PromiseDebugging.webidl index 7dc6110d631..b24444912be 100644 --- a/dom/webidl/PromiseDebugging.webidl +++ b/dom/webidl/PromiseDebugging.webidl @@ -14,7 +14,7 @@ dictionary PromiseDebuggingStateHolder { }; enum PromiseDebuggingState { "pending", "fulfilled", "rejected" }; -[ChromeOnly] +[ChromeOnly, Exposed=(Window,System)] interface PromiseDebugging { static PromiseDebuggingStateHolder getState(Promise p); };