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

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

Issue 2745903003: [DevTools] Do not inherit ObjectPopoverHelper from PopoverHelper. (Closed)
Patch Set: 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 72df88108b802967696836c7e9a09b2c3f470ae6..e4ec7fba2003d71a0de2b2dd6eb66bcb9239fb6c 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
@@ -31,30 +31,19 @@
/**
* @unrestricted
*/
-ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
- /**
- * @param {!Element} panelElement
- * @param {function(!Element, !Event):(!Element|!AnchorBox|undefined)} getAnchor
- * @param {function(!Element, function(!SDK.RemoteObject, boolean, !Element=):undefined, string):undefined} queryObject
- * @param {function()=} onHide
- * @param {boolean=} disableOnClick
- */
- 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';
- panelElement.addEventListener('scroll', this.hidePopover.bind(this), true);
+ObjectUI.ObjectPopoverHelper = class {
+ constructor() {
lushnikov 2017/03/13 17:55:02 let's create an instnace with popover and remote o
dgozman 2017/03/13 19:57:24 Done.
+ this._disposed = false;
}
/**
- * @param {!Element} element
+ * @param {!SDK.RemoteObject} result
* @param {!UI.GlassPane} popover
* @return {!Promise<boolean>}
*/
- _showObjectPopover(element, popover) {
+ buildObjectPopover(result, popover) {
lushnikov 2017/03/13 17:55:02 maybe you can even make this a static factory whic
dgozman 2017/03/13 19:57:24 Done.
+ this._disposed = false;
+
var fulfill;
var promise = new Promise(x => fulfill = x);
@@ -108,79 +97,57 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
fulfill(true);
}
- /**
- * @param {!SDK.RemoteObject} result
- * @param {boolean} wasThrown
- * @param {!Element|!AnchorBox=} anchorOverride
- * @this {ObjectUI.ObjectPopoverHelper}
- */
- function didQueryObject(result, wasThrown, anchorOverride) {
- if (this._disposed) {
- fulfill(false);
- return;
+ var description = result.description.trimEnd(ObjectUI.ObjectPopoverHelper.MaxPopoverTextLength);
+ var popoverContentElement = null;
+ if (result.type !== 'object') {
lushnikov 2017/03/13 17:55:02 brief examination didn't reveal any code changes h
dgozman 2017/03/13 19:57:24 Exactly.
+ popoverContentElement = createElement('span');
+ UI.appendStyle(popoverContentElement, 'object_ui/objectValue.css');
+ UI.appendStyle(popoverContentElement, 'object_ui/objectPopover.css');
+ var valueElement = popoverContentElement.createChild('span', 'monospace object-value-' + result.type);
+ valueElement.style.whiteSpace = 'pre';
+
+ if (result.type === 'string')
+ valueElement.createTextChildren('"', description, '"');
+ else if (result.type !== 'function')
+ valueElement.textContent = description;
+
+ if (result.type === 'function') {
+ result.getOwnProperties(
+ false /* generatePreview */,
+ didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement));
+ return promise;
}
- if (wasThrown) {
- this.hidePopover();
- fulfill(false);
- return;
+ popover.contentElement.appendChild(popoverContentElement);
+ fulfill(true);
+ } else {
+ if (result.subtype === 'node') {
+ SDK.DOMModel.highlightObjectAsDOMNode(result);
+ this._resultHighlightedAsDOM = true;
}
- this._objectTarget = result.target();
- 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') {
- popoverContentElement = createElement('span');
- UI.appendStyle(popoverContentElement, 'object_ui/objectValue.css');
- UI.appendStyle(popoverContentElement, 'object_ui/objectPopover.css');
- var valueElement = popoverContentElement.createChild('span', 'monospace object-value-' + result.type);
- valueElement.style.whiteSpace = 'pre';
- if (result.type === 'string')
- valueElement.createTextChildren('"', description, '"');
- else if (result.type !== 'function')
- valueElement.textContent = description;
-
- if (result.type === 'function') {
- result.getOwnProperties(
- false /* generatePreview */,
- didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement));
- return;
- }
- popover.contentElement.appendChild(popoverContentElement);
- fulfill(true);
+ if (result.customPreview()) {
+ var customPreviewComponent = new ObjectUI.CustomPreviewComponent(result);
+ customPreviewComponent.expandIfPossible();
+ popoverContentElement = customPreviewComponent.element;
} else {
- if (result.subtype === 'node') {
- SDK.DOMModel.highlightObjectAsDOMNode(result);
- this._resultHighlightedAsDOM = true;
- }
-
- if (result.customPreview()) {
- var customPreviewComponent = new ObjectUI.CustomPreviewComponent(result);
- customPreviewComponent.expandIfPossible();
- popoverContentElement = customPreviewComponent.element;
- } else {
- popoverContentElement = createElementWithClass('div', 'object-popover-content');
- UI.appendStyle(popoverContentElement, 'object_ui/objectPopover.css');
- var titleElement = popoverContentElement.createChild('div', 'monospace object-popover-title');
- titleElement.createChild('span').textContent = description;
- var section = new ObjectUI.ObjectPropertiesSection(result, '', this._lazyLinkifier());
- section.element.classList.add('object-popover-tree');
- section.titleLessMode();
- popoverContentElement.appendChild(section.element);
- }
- popover.setMaxContentSize(new UI.Size(300, 250));
- popover.setSizeBehavior(UI.GlassPane.SizeBehavior.SetExactSize);
- popover.contentElement.appendChild(popoverContentElement);
- fulfill(true);
+ popoverContentElement = createElementWithClass('div', 'object-popover-content');
+ UI.appendStyle(popoverContentElement, 'object_ui/objectPopover.css');
+ var titleElement = popoverContentElement.createChild('div', 'monospace object-popover-title');
+ titleElement.createChild('span').textContent = description;
+ var section = new ObjectUI.ObjectPropertiesSection(result, '', this._lazyLinkifier());
+ section.element.classList.add('object-popover-tree');
+ section.titleLessMode();
+ popoverContentElement.appendChild(section.element);
}
+ popover.setMaxContentSize(new UI.Size(300, 250));
+ popover.setSizeBehavior(UI.GlassPane.SizeBehavior.SetExactSize);
+ popover.contentElement.appendChild(popoverContentElement);
+ fulfill(true);
}
- this._disposed = false;
- this._queryObject(element, didQueryObject.bind(this), this._popoverObjectGroup);
return promise;
}
- _onHideObjectPopover() {
+ dispose() {
this._disposed = true;
if (this._resultHighlightedAsDOM) {
SDK.DOMModel.hideDOMNodeHighlight();
@@ -190,12 +157,6 @@ ObjectUI.ObjectPopoverHelper = class extends UI.PopoverHelper {
this._linkifier.dispose();
delete this._linkifier;
}
- if (this._onHideCallback)
- this._onHideCallback();
- if (this._objectTarget) {
- this._objectTarget.runtimeModel.releaseObjectGroup(this._popoverObjectGroup);
- delete this._objectTarget;
- }
}
/**

Powered by Google App Engine
This is Rietveld 408576698