| Index: third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotView.js b/third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotView.js
|
| index 5d0d91504e3f3655f4c69f78fecb5e89a8283114..951d2fbc87a3702ec402e32ba5d48da66fc9bd10 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotView.js
|
| @@ -153,8 +153,12 @@ Profiler.HeapSnapshotView = class extends UI.SimpleView {
|
|
|
| this._selectedSizeText = new UI.ToolbarText();
|
|
|
| - this._popoverHelper = new ObjectUI.ObjectPopoverHelper(
|
| - this.element, this._getHoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), undefined, true);
|
| + this._popoverHelper = new UI.PopoverHelper(this.element, true);
|
| + this._popoverHelper.initializeCallbacks(
|
| + this._getHoverAnchor.bind(this), this._showObjectPopover.bind(this), this._onHidePopover.bind(this));
|
| + this._popoverHelper.setHasPadding(true);
|
| + this._objectPopoverHelper = new ObjectUI.ObjectPopoverHelper();
|
| + this.element.addEventListener('scroll', this._popoverHelper.hidePopover.bind(this._popoverHelper), true);
|
|
|
| this._currentPerspectiveIndex = 0;
|
| this._currentPerspective = this._perspectives[0];
|
| @@ -615,12 +619,35 @@ Profiler.HeapSnapshotView = class extends UI.SimpleView {
|
| return span;
|
| }
|
|
|
| - _resolveObjectForPopover(element, showCallback, objectGroupName) {
|
| - if (!this._profile.target())
|
| - return;
|
| - if (!element.node)
|
| - return;
|
| - element.node.queryObjectContent(this._profile.target(), showCallback, objectGroupName);
|
| + /**
|
| + * @param {!Element|!AnchorBox} element
|
| + * @param {!UI.GlassPane} popover
|
| + * @return {!Promise<boolean>}
|
| + */
|
| + _showObjectPopover(element, popover) {
|
| + if (!this._profile.target() || !element.node)
|
| + return Promise.resolve(false);
|
| +
|
| + var fulfill;
|
| + var promise = new Promise(x => fulfill = x);
|
| + element.node.queryObjectContent(this._profile.target(), onObjectResolved.bind(this), 'popover');
|
| + return promise;
|
| +
|
| + /**
|
| + * @param {?SDK.RemoteObject} result
|
| + * @this {Profiler.HeapSnapshotView}
|
| + */
|
| + function onObjectResolved(result) {
|
| + if (result)
|
| + this._objectPopoverHelper.buildObjectPopover(result, popover).then(fulfill);
|
| + else
|
| + fulfill(false);
|
| + }
|
| + }
|
| +
|
| + _onHidePopover() {
|
| + this._objectPopoverHelper.dispose();
|
| + this._profile.target().runtimeModel.releaseObjectGroup('popover');
|
| }
|
|
|
| _updatePerspectiveOptions() {
|
|
|