| Index: third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
|
| index 38d3a035cb916dedd594f0a996c133a68efd5169..3fe0a40d54a65c112de0c66f82ddb75ebcd950dd 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
|
| @@ -75,8 +75,7 @@ Elements.ElementsTreeOutline = class extends UI.TreeOutline {
|
|
|
| this._visible = false;
|
|
|
| - this._popoverHelper = new UI.PopoverHelper(this._element);
|
| - this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
|
| + this._popoverHelper = new UI.PopoverHelper(this._element, this._getPopoverRequest.bind(this));
|
| this._popoverHelper.setHasPadding(true);
|
| this._popoverHelper.setTimeout(0, 100);
|
|
|
| @@ -522,36 +521,51 @@ Elements.ElementsTreeOutline = class extends UI.TreeOutline {
|
| }
|
|
|
| /**
|
| - * @param {!Element} element
|
| * @param {!Event} event
|
| - * @return {!Element|!AnchorBox|undefined}
|
| + * @return {?UI.PopoverRequest}
|
| */
|
| - _getPopoverAnchor(element, event) {
|
| - var link = element;
|
| + _getPopoverRequest(event) {
|
| + var link = event.target;
|
| while (link && !link[Elements.ElementsTreeElement.HrefSymbol])
|
| link = link.parentElementOrShadowHost();
|
| - return link ? link : undefined;
|
| + if (!link)
|
| + return null;
|
| +
|
| + return {
|
| + box: link.boxInWindow(),
|
| + show: async popover => {
|
| + var listItem = link.enclosingNodeOrSelfWithNodeName('li');
|
| + var node = /** @type {!Elements.ElementsTreeElement} */ (listItem.treeElement).node();
|
| + var precomputedFeatures = await this._loadDimensionsForNode(node);
|
| + var preview = await Components.DOMPresentationUtils.buildImagePreviewContents(
|
| + node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, precomputedFeatures);
|
| + if (preview)
|
| + popover.contentElement.appendChild(preview);
|
| + return !!preview;
|
| + }
|
| + };
|
| }
|
|
|
| /**
|
| * @param {!SDK.DOMNode} node
|
| - * @param {function()} callback
|
| + * @return {!Promise<!Object|undefined>}
|
| */
|
| - _loadDimensionsForNode(node, callback) {
|
| - if (!node.nodeName() || node.nodeName().toLowerCase() !== 'img') {
|
| - callback();
|
| - return;
|
| - }
|
| + _loadDimensionsForNode(node) {
|
| + if (!node.nodeName() || node.nodeName().toLowerCase() !== 'img')
|
| + return Promise.resolve();
|
|
|
| + var fulfill;
|
| + var promise = new Promise(x => fulfill = x);
|
| node.resolveToObject('', resolvedNode);
|
| + return promise;
|
|
|
| function resolvedNode(object) {
|
| if (!object) {
|
| - callback();
|
| + fulfill();
|
| return;
|
| }
|
|
|
| - object.callFunctionJSON(features, undefined, callback);
|
| + object.callFunctionJSON(features, undefined, fulfill);
|
| object.release();
|
|
|
| /**
|
| @@ -571,32 +585,6 @@ Elements.ElementsTreeOutline = class extends UI.TreeOutline {
|
| }
|
| }
|
|
|
| - /**
|
| - * @param {!Element|!AnchorBox} link
|
| - * @param {!UI.GlassPane} popover
|
| - * @return {!Promise<boolean>}
|
| - */
|
| - _showPopover(link, popover) {
|
| - var fulfill;
|
| - var promise = new Promise(x => fulfill = x);
|
| - var listItem = link.enclosingNodeOrSelfWithNodeName('li');
|
| - var node = /** @type {!Elements.ElementsTreeElement} */ (listItem.treeElement).node();
|
| - this._loadDimensionsForNode(
|
| - node, Components.DOMPresentationUtils.buildImagePreviewContents.bind(
|
| - Components.DOMPresentationUtils, node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true,
|
| - showPopover));
|
| - return promise;
|
| -
|
| - /**
|
| - * @param {!Element=} contents
|
| - */
|
| - function showPopover(contents) {
|
| - if (contents)
|
| - popover.contentElement.appendChild(contents);
|
| - fulfill(!!contents);
|
| - }
|
| - }
|
| -
|
| _onmousedown(event) {
|
| var element = this._treeElementFromEvent(event);
|
|
|
|
|