Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Unified Diff: third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js

Issue 2747553002: [DevTools] Rework Popover API (Closed)
Patch Set: rebased Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
index 6d0eeeade99b037cbff67544139e498c405220b2..b0953352506189524c2745645f866f355f33cec2 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
@@ -568,41 +568,29 @@ Elements.ElementsPanel = class extends UI.Panel {
}
/**
- * @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;
- }
-
- /**
- * @param {!Element|!AnchorBox} link
- * @param {!UI.GlassPane} popover
- * @return {!Promise<boolean>}
- */
- _showPopover(link, popover) {
- var node = this.selectedDOMNode();
- if (!node)
- return Promise.resolve(false);
-
- var fulfill;
- var promise = new Promise(x => fulfill = x);
- Components.DOMPresentationUtils.buildImagePreviewContents(
- node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover);
- return promise;
+ if (!link)
+ return null;
- /**
- * @param {!Element=} contents
- */
- function showPopover(contents) {
- if (contents)
- popover.contentElement.appendChild(contents);
- fulfill(!!contents);
- }
+ return {
+ box: link.boxInWindow(),
+ show: async popover => {
+ var node = this.selectedDOMNode();
+ if (!node)
+ return false;
+ var preview = await Components.DOMPresentationUtils.buildImagePreviewContents(
+ node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true);
+ if (preview)
+ popover.contentElement.appendChild(preview);
+ return !!preview;
+ }
+ };
}
_jumpToSearchResult(index) {
@@ -907,9 +895,8 @@ Elements.ElementsPanel = class extends UI.Panel {
var tabbedPane = this.sidebarPaneView.tabbedPane();
if (this._popoverHelper)
this._popoverHelper.hidePopover();
- this._popoverHelper = new UI.PopoverHelper(tabbedPane.element);
+ this._popoverHelper = new UI.PopoverHelper(tabbedPane.element, this._getPopoverRequest.bind(this));
this._popoverHelper.setHasPadding(true);
- this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
this._popoverHelper.setTimeout(0);
if (horizontally) {

Powered by Google App Engine
This is Rietveld 408576698