Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / devtools / front_end / components / ObjectPopoverHelper.js
index 9253777..d4533c9 100644 (file)
@@ -32,7 +32,7 @@
  * @constructor
  * @extends {WebInspector.PopoverHelper}
  * @param {!Element} panelElement
- * @param {function(!Element, !Event):!Element|undefined} getAnchor
+ * @param {function(!Element, !Event):(!Element|!AnchorBox|undefined)} getAnchor
  * @param {function(!Element, function(!WebInspector.RemoteObject, boolean, !Element=):undefined, string):undefined} queryObject
  * @param {function()=} onHide
  * @param {boolean=} disableOnClick
@@ -65,7 +65,7 @@ WebInspector.ObjectPopoverHelper.prototype = {
          * @param {!WebInspector.Target} target
          * @param {!Element} anchorElement
          * @param {!Element} popoverContentElement
-         * @param {?DebuggerAgent.FunctionDetails} response
+         * @param {?WebInspector.DebuggerModel.FunctionDetails} response
          * @this {WebInspector.ObjectPopoverHelper}
          */
         function didGetDetails(target, anchorElement, popoverContentElement, response)
@@ -80,14 +80,15 @@ WebInspector.ObjectPopoverHelper.prototype = {
             var functionName = title.createChild("span", "function-name");
             functionName.textContent = response.functionName || WebInspector.UIString("(anonymous function)");
 
-            this._linkifier = new WebInspector.Linkifier();
-            var rawLocation = WebInspector.DebuggerModel.Location.fromPayload(target, response.location);
-            var link = this._linkifier.linkifyRawLocation(rawLocation, "function-location-link");
-            if (link)
+            var rawLocation = response.location;
+            var sourceURL = response.sourceURL;
+            if (rawLocation && sourceURL) {
+                this._linkifier = new WebInspector.Linkifier();
+                var link = this._linkifier.linkifyRawLocation(rawLocation, sourceURL, "function-location-link");
                 title.appendChild(link);
+            }
 
             container.appendChild(popoverContentElement);
-
             popover.show(container, anchorElement);
         }
 
@@ -105,7 +106,7 @@ WebInspector.ObjectPopoverHelper.prototype = {
                 this.hidePopover();
                 return;
             }
-
+            this._objectTarget = result.target();
             var anchorElement = anchorOverride || element;
             var description = (this._remoteObjectFormatter && this._remoteObjectFormatter(result)) || result.description;
 
@@ -114,13 +115,14 @@ WebInspector.ObjectPopoverHelper.prototype = {
                 popoverContentElement = document.createElement("span");
                 popoverContentElement.className = "monospace console-formatted-" + result.type;
                 popoverContentElement.style.whiteSpace = "pre";
-                popoverContentElement.textContent = description;
+                if (result.type === "string")
+                    popoverContentElement.createTextChildren("\"", description, "\"");
+                else
+                    popoverContentElement.textContent = description;
                 if (result.type === "function") {
                     result.functionDetails(didGetDetails.bind(this, result.target(), anchorElement, popoverContentElement));
                     return;
                 }
-                if (result.type === "string")
-                    popoverContentElement.textContent = "\"" + popoverContentElement.textContent + "\"";
                 popover.show(popoverContentElement, anchorElement);
             } else {
                 if (result.subtype === "node") {
@@ -164,7 +166,10 @@ WebInspector.ObjectPopoverHelper.prototype = {
         }
         if (this._onHideCallback)
             this._onHideCallback();
-        RuntimeAgent.releaseObjectGroup(this._popoverObjectGroup);
+        if (this._objectTarget) {
+            this._objectTarget.runtimeAgent().releaseObjectGroup(this._popoverObjectGroup);
+            delete this._objectTarget;
+        }
     },
 
     _updateHTMLId: function(properties, rootTreeElementConstructor, rootPropertyComparer)