Bug 1319049 - fix Date previewer for worker debugging;r=ochameau draft
authorJulian Descottes <jdescottes@mozilla.com>
Thu, 24 Nov 2016 16:12:16 +0100
changeset 450991 ab0aacc01abaf06b2985b2b73ee8562322f495b1
parent 450924 863c2b61bd27bb6099104933134d3be7c052551a
child 451009 7b24311401b9cf7241eead84ca8b3c0f95f6a0cd
push id39010
push userjdescottes@mozilla.com
push dateMon, 19 Dec 2016 09:35:26 +0000
reviewersochameau
bugs1319049
milestone53.0a1
Bug 1319049 - fix Date previewer for worker debugging;r=ochameau MozReview-Commit-ID: Fy1Rp4dNv09
devtools/client/debugger/test/mochitest/browser2.ini
devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
devtools/server/actors/object.js
--- 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) {