291
292WebInspector.ObjectPopoverHelper = function(panelElement, getAnchor, queryObject, onHide, disableOnClick)
293{
294 WebInspector.PopoverHelper.call(this, panelElement, getAnchor, this._showObjectPopover.bind(this), onHide, disableOnClick);
295 this._queryObject = queryObject;
296 panelElement.addEventListener("scroll", this.hidePopover.bind(this), true);
297};
298
299WebInspector.ObjectPopoverHelper.prototype = {
300 _showObjectPopover: function(element, popover)
301 {
302 function showObjectPopover(result, wasThrown)
303 {
304 if (popover.disposed)
305 return;
306 if (wasThrown) {
307 this.hidePopover();
308 return;
309 }
310 var popoverContentElement = null;
311 if (result.type !== "object") {
312 popoverContentElement = document.createElement("span");
313 popoverContentElement.className = "monospace console-formatted-" + result.type;
314 popoverContentElement.style.whiteSpace = "pre";
315 popoverContentElement.textContent = result.description;
316 if (result.type === "string")
317 popoverContentElement.textContent = "\"" + popoverContentElement.textContent + "\"";
318 popover.show(popoverContentElement, element);
319 } else {
320 popoverContentElement = document.createElement("div");
321
322 var titleElement = document.createElement("div");
323 titleElement.className = "source-frame-popover-title monospace";
324 titleElement.textContent = result.description;
325 popoverContentElement.appendChild(titleElement);
326
327 var section = new WebInspector.ObjectPropertiesSection(result);
328 // For HTML DOM wrappers, append "#id" to title, if not empty.
329 if (result.description.substr(0, 4) === "HTML") {
330 section.onPropertiesReceived = function(properties)
331 {
332 for (var i = 0; i < properties.length; ++i) {
333 if (properties[i].name === "id") {
334 if (properties[i].value.description)
335 titleElement.textContent += "#" + properties[i].value.description;
336 break;
337 }
338 }
339 };
340 }
341 section.expanded = true;
342 section.element.addStyleClass("source-frame-popover-tree");
343 section.headerElement.addStyleClass("hidden");
344 popoverContentElement.appendChild(section.element);
345
346 const popoverWidth = 300;
347 const popoverHeight = 250;
348 popover.show(popoverContentElement, element, popoverWidth, popoverHeight);
349 }
350 }
351 this._queryObject(element, showObjectPopover.bind(this));
352 }
353}
354
355WebInspector.ObjectPopoverHelper.prototype.__proto__ = WebInspector.PopoverHelper.prototype;