Bug 1319049 - fix Date previewer for worker debugging;r=ochameau
MozReview-Commit-ID: Fy1Rp4dNv09
--- a/devtools/client/debugger/test/mochitest/browser2.ini
+++ b/devtools/client/debugger/test/mochitest/browser2.ini
@@ -443,16 +443,18 @@ skip-if = e10s && debug
[browser_dbg_watch-expressions-02.js]
skip-if = e10s && debug
[browser_dbg_worker-console-01.js]
skip-if = e10s && debug
[browser_dbg_worker-console-02.js]
skip-if = e10s && debug
[browser_dbg_worker-console-03.js]
skip-if = e10s && debug
+[browser_dbg_worker-console-04.js]
+skip-if = e10s && debug
[browser_dbg_worker-source-map.js]
skip-if = e10s && debug
[browser_dbg_worker-window.js]
skip-if = e10s && debug
[browser_dbg_WorkerActor.attach.js]
skip-if = e10s && debug
[browser_dbg_WorkerActor.attachThread.js]
skip-if = e10s && debug
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
@@ -0,0 +1,23 @@
+// Check that the date previewer works in the console of a worker debugger.
+
+"use strict";
+
+const TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
+const WORKER_URL = "code_WorkerActor.attachThread-worker.js";
+
+add_task(function* testPausedByConsole() {
+ let {client, tab, workerClient, toolbox} =
+ yield initWorkerDebugger(TAB_URL, WORKER_URL);
+
+ info("Check Date objects can be used in the console");
+ let jsterm = yield getSplitConsole(toolbox);
+ let executed = yield jsterm.execute("new Date(0)");
+ ok(executed.textContent.includes("1970-01-01T00:00:00.000Z"),
+ "Text for message appeared correct");
+
+ terminateWorkerInTab(tab, WORKER_URL);
+ yield waitForWorkerClose(workerClient);
+ yield gDevTools.closeToolbox(TargetFactory.forWorker(workerClient));
+ yield close(client);
+ yield removeTab(tab);
+});
--- a/devtools/server/actors/object.js
+++ b/devtools/server/actors/object.js
@@ -1159,17 +1159,20 @@ DebuggerServer.ObjectActorPreviewers = {
RegExp: [function ({obj, hooks}, grip) {
let str = RegExp.prototype.toString.call(obj.unsafeDereference());
grip.displayString = hooks.createValueGrip(str);
return true;
}],
Date: [function ({obj, hooks}, grip) {
- let time = Date.prototype.getTime.call(obj.unsafeDereference());
+ let time = DevToolsUtils.callPropertyOnObject(obj, "getTime");
+ if (typeof time != "number") {
+ return false;
+ }
grip.preview = {
timestamp: hooks.createValueGrip(time),
};
return true;
}],
Array: [function ({obj, hooks}, grip) {