Bug 1318060 - Add onDOMNodeMouseOver/onDOMNodeMouseOut props for DOM panel; r?honza draft
authorMatt R <matthieu.rigolot@gmail.com>
Sun, 14 May 2017 19:13:45 +0100
changeset 578814 38f24f5f16fc21503d69ae8723d75b24e1acce51
parent 577084 96b36c5f527dd42e680a230839519eee1fc2c9f3
child 578822 d45817a25e93b8aebb518df8ae765b2b6582bcfc
push id59075
push userbmo:matthieu.rigolot@gmail.com
push dateTue, 16 May 2017 16:57:56 +0000
reviewershonza
bugs1318060
milestone55.0a1
Bug 1318060 - Add onDOMNodeMouseOver/onDOMNodeMouseOut props for DOM panel; r?honza MozReview-Commit-ID: 2NcEaTsxIVe
devtools/client/dom/content/components/dom-tree.js
devtools/client/dom/dom-panel.js
--- a/devtools/client/dom/content/components/dom-tree.js
+++ b/devtools/client/dom/content/components/dom-tree.js
@@ -51,21 +51,39 @@ var DomTree = React.createClass({
   /**
    * Render DOM panel content
    */
   render: function () {
     let columns = [{
       "id": "value"
     }];
 
+    let onDOMNodeMouseOver;
+    let onDOMNodeMouseOut;
+    let toolbox = DomProvider.getToolbox();
+    if (toolbox) {
+      onDOMNodeMouseOver = (grip, options = {}) => {
+        return toolbox.highlighterUtils
+          ? toolbox.highlighterUtils.highlightDomValueGrip(grip, options)
+          : null;
+      };
+      onDOMNodeMouseOut = (forceHide = false) => {
+        return toolbox.highlighterUtils
+          ? toolbox.highlighterUtils.unhighlight(forceHide)
+          : null;
+      };
+    }
+
     // This is the integration point with Reps. The DomTree is using
     // Reps to render all values. The code also specifies default rep
     // used for data types that don't have its own specific template.
     let renderValue = props => {
       return Rep(Object.assign({}, props, {
+        onDOMNodeMouseOver,
+        onDOMNodeMouseOut,
         defaultRep: Grip,
         cropLimit: 50,
       }));
     };
 
     return (
       TreeView({
         object: this.props.object,
--- a/devtools/client/dom/dom-panel.js
+++ b/devtools/client/dom/dom-panel.js
@@ -64,16 +64,17 @@ DomPanel.prototype = {
   initialize: function () {
     this.panelWin.addEventListener("devtools/content/message",
       this.onContentMessage, true);
 
     this.target.on("navigate", this.onTabNavigated);
     this._toolbox.on("select", this.onPanelVisibilityChange);
 
     let provider = {
+      getToolbox: this.getToolbox.bind(this),
       getPrototypeAndProperties: this.getPrototypeAndProperties.bind(this)
     };
 
     exportIntoContentScope(this.panelWin, provider, "DomProvider");
 
     this.shouldRefresh = true;
   },
 
@@ -208,16 +209,20 @@ DomPanel.prototype = {
   onContentMessage: function (event) {
     let data = event.data;
     let method = data.type;
     if (typeof this[method] == "function") {
       this[method](data.args);
     }
   },
 
+  getToolbox: function () {
+    return this._toolbox;
+  },
+
   get target() {
     return this._toolbox.target;
   },
 };
 
 // Helpers
 
 function exportIntoContentScope(win, obj, defineAs) {