Bug 1377668 - Avoid invalid object by using noGrip option; r=nchevobbe draft
authorJan Odvarko <odvarko@gmail.com>
Thu, 06 Jul 2017 16:25:50 +0200
changeset 666902 274b843ef8d0cdbeda35fccf5b1e50897c14d48b
parent 666884 e4261f5b96ebfd63e7cb8af3035ff9fea90c74a5
child 732228 5d42fc943486dfa0e500000acb87575f4c22b46e
push id80541
push userjodvarko@mozilla.com
push dateTue, 19 Sep 2017 11:05:12 +0000
reviewersnchevobbe
bugs1377668
milestone57.0a1
Bug 1377668 - Avoid invalid object by using noGrip option; r=nchevobbe MozReview-Commit-ID: IiH5o52tTgS
devtools/client/jsonview/components/json-panel.js
devtools/client/jsonview/test/browser.ini
devtools/client/jsonview/test/browser_jsonview_empty_object.js
devtools/client/jsonview/test/browser_jsonview_object-type.js
--- a/devtools/client/jsonview/components/json-panel.js
+++ b/devtools/client/jsonview/components/json-panel.js
@@ -76,16 +76,17 @@ define(function (require, exports, modul
       // Hide object summary when non-empty object is expanded (bug 1244912).
       if (isObject(member.value) && member.hasChildren && member.open) {
         return null;
       }
 
       // Render the value (summary) using Reps library.
       return Rep(Object.assign({}, props, {
         cropLimit: 50,
+        noGrip: true
       }));
     },
 
     renderTree: function () {
       // Append custom column for displaying values. This column
       // Take all available horizontal space.
       let columns = [{
         id: "value",
--- a/devtools/client/jsonview/test/browser.ini
+++ b/devtools/client/jsonview/test/browser.ini
@@ -31,15 +31,16 @@ subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_jsonview_csp_json.js]
 [browser_jsonview_empty_object.js]
 [browser_jsonview_filter.js]
 [browser_jsonview_invalid_json.js]
 [browser_jsonview_manifest.js]
 [browser_jsonview_nojs.js]
 [browser_jsonview_nul.js]
+[browser_jsonview_object-type.js]
 [browser_jsonview_save_json.js]
 support-files =
   !/toolkit/content/tests/browser/common/mockTransfer.js
 [browser_jsonview_slash.js]
 [browser_jsonview_utf8.js]
 [browser_jsonview_valid_json.js]
 [browser_json_refresh.js]
--- a/devtools/client/jsonview/test/browser_jsonview_empty_object.js
+++ b/devtools/client/jsonview/test/browser_jsonview_empty_object.js
@@ -28,17 +28,17 @@ function testNestedObject(objExpr, summa
     let objectCellCount = yield getElementCount(
       ".jsonPanelBox .treeTable .objectCell");
     is(objectCellCount, 1, "There must be one object cell");
 
     let objectCellText = yield getElementText(
       ".jsonPanelBox .treeTable .objectCell");
     is(objectCellText, summary, objExpr + " has a visible summary");
 
-    // Collapsed auto-expanded node.
+    // Collapse auto-expanded node.
     yield clickJsonNode(".jsonPanelBox .treeTable .treeLabel");
 
     let textAfter = yield getElementText(
       ".jsonPanelBox .treeTable .objectCell");
     is(textAfter, summary, objExpr + " still has a visible summary");
   };
 }
 
new file mode 100644
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_object-type.js
@@ -0,0 +1,27 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const {ELLIPSIS} = require("devtools/shared/l10n");
+
+add_task(function* () {
+  info("Test Object type property started");
+
+  const TEST_JSON_URL = "data:application/json,{\"x\":{\"type\":\"string\"}}";
+  yield addJsonViewTab(TEST_JSON_URL);
+
+  let count = yield getElementCount(".jsonPanelBox .treeTable .treeRow");
+  is(count, 2, "There must be two rows");
+
+  // Collapse auto-expanded node.
+  yield clickJsonNode(".jsonPanelBox .treeTable .treeLabel");
+
+  count = yield getElementCount(".jsonPanelBox .treeTable .treeRow");
+  is(count, 1, "There must be one row");
+
+  let label = yield getElementText(".jsonPanelBox .treeTable .objectCell");
+  is(label, `{${ELLIPSIS}}`, "The label must be indicating an object");
+});