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

Unified Diff: third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js

Issue 2740803002: [DevTools] Simplify Popover API (Closed)
Patch Set: addressed comments 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/object_ui/ObjectPopoverHelper.js
diff --git a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
index b790cd034c2b43d8e4e9ec754e0d5e189ce30dfd..72df88108b802967696836c7e9a09b2c3f470ae6 100644
--- a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
+++ b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
@@ -42,6 +42,7 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
constructor(panelElement, getAnchor, queryObject, onHide, disableOnClick) {
super(panelElement, disableOnClick);
this.initializeCallbacks(getAnchor, this._showObjectPopover.bind(this), this._onHideObjectPopover.bind(this));
+ this.setHasPadding(true);
this._queryObject = queryObject;
this._onHideCallback = onHide;
this._popoverObjectGroup = 'popover';
@@ -50,20 +51,23 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
/**
* @param {!Element} element
- * @param {!UI.Popover} popover
+ * @param {!UI.GlassPane} popover
+ * @return {!Promise<boolean>}
*/
_showObjectPopover(element, popover) {
+ var fulfill;
+ var promise = new Promise(x => fulfill = x);
+
/**
* @param {!SDK.RemoteObject} funcObject
* @param {!Element} popoverContentElement
* @param {!Element} popoverValueElement
- * @param {!Element} anchorElement
* @param {?Array.<!SDK.RemoteObjectProperty>} properties
* @param {?Array.<!SDK.RemoteObjectProperty>} internalProperties
* @this {ObjectUI.ObjectPopoverHelper}
*/
function didGetFunctionProperties(
- funcObject, popoverContentElement, popoverValueElement, anchorElement, properties, internalProperties) {
+ funcObject, popoverContentElement, popoverValueElement, properties, internalProperties) {
if (internalProperties) {
for (var i = 0; i < internalProperties.length; i++) {
if (internalProperties[i].name === '[[TargetFunction]]') {
@@ -75,18 +79,19 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(funcObject, popoverValueElement, true);
funcObject.debuggerModel()
.functionDetailsPromise(funcObject)
- .then(didGetFunctionDetails.bind(this, popoverContentElement, anchorElement));
+ .then(didGetFunctionDetails.bind(this, popoverContentElement));
}
/**
* @param {!Element} popoverContentElement
- * @param {!Element} anchorElement
* @param {?SDK.DebuggerModel.FunctionDetails} response
* @this {ObjectUI.ObjectPopoverHelper}
*/
- function didGetFunctionDetails(popoverContentElement, anchorElement, response) {
- if (!response || this._disposed)
+ function didGetFunctionDetails(popoverContentElement, response) {
+ if (!response || this._disposed) {
+ fulfill(false);
return;
+ }
var container = createElementWithClass('div', 'object-popover-container');
var title = container.createChild('div', 'function-popover-title source-code');
@@ -99,24 +104,29 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
if (rawLocation && sourceURL)
linkContainer.appendChild(this._lazyLinkifier().linkifyRawLocation(rawLocation, sourceURL));
container.appendChild(popoverContentElement);
- popover.showForAnchor(container, anchorElement);
+ popover.contentElement.appendChild(container);
+ fulfill(true);
}
/**
* @param {!SDK.RemoteObject} result
* @param {boolean} wasThrown
- * @param {!Element=} anchorOverride
+ * @param {!Element|!AnchorBox=} anchorOverride
* @this {ObjectUI.ObjectPopoverHelper}
*/
function didQueryObject(result, wasThrown, anchorOverride) {
- if (this._disposed)
+ if (this._disposed) {
+ fulfill(false);
return;
+ }
if (wasThrown) {
this.hidePopover();
+ fulfill(false);
return;
}
this._objectTarget = result.target();
- var anchorElement = anchorOverride || element;
+ var anchor = anchorOverride || element;
+ popover.setContentAnchorBox(anchor instanceof AnchorBox ? anchor : anchor.boxInWindow());
var description = result.description.trimEnd(ObjectUI.ObjectPopoverHelper.MaxPopoverTextLength);
var popoverContentElement = null;
if (result.type !== 'object') {
@@ -134,10 +144,11 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
if (result.type === 'function') {
result.getOwnProperties(
false /* generatePreview */,
- didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement, anchorElement));
+ didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement));
return;
}
- popover.showForAnchor(popoverContentElement, anchorElement);
+ popover.contentElement.appendChild(popoverContentElement);
+ fulfill(true);
} else {
if (result.subtype === 'node') {
SDK.DOMModel.highlightObjectAsDOMNode(result);
@@ -160,11 +171,13 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
}
popover.setMaxContentSize(new UI.Size(300, 250));
popover.setSizeBehavior(UI.GlassPane.SizeBehavior.SetExactSize);
- popover.showForAnchor(popoverContentElement, anchorElement);
+ popover.contentElement.appendChild(popoverContentElement);
+ fulfill(true);
}
}
this._disposed = false;
this._queryObject(element, didQueryObject.bind(this), this._popoverObjectGroup);
+ return promise;
}
_onHideObjectPopover() {

Powered by Google App Engine
This is Rietveld 408576698