| Index: third_party/WebKit/Source/devtools/front_end/elements/PropertiesWidget.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/elements/PropertiesWidget.js b/third_party/WebKit/Source/devtools/front_end/elements/PropertiesWidget.js
|
| index 052982fc650d1ab93772fb3a4271007d326eeb74..dc0450f80ed87e9c6d24e65247dd3f3224bba4b4 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/elements/PropertiesWidget.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/elements/PropertiesWidget.js
|
| @@ -26,161 +26,153 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.ThrottledWidget}
|
| + * @unrestricted
|
| */
|
| -WebInspector.PropertiesWidget = function()
|
| -{
|
| - WebInspector.ThrottledWidget.call(this);
|
| -
|
| - WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspector.DOMModel.Events.AttrModified, this._onNodeChange, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspector.DOMModel.Events.AttrRemoved, this._onNodeChange, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspector.DOMModel.Events.CharacterDataModified, this._onNodeChange, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspector.DOMModel.Events.ChildNodeCountUpdated, this._onNodeChange, this);
|
| +WebInspector.PropertiesWidget = class extends WebInspector.ThrottledWidget {
|
| + constructor() {
|
| + super();
|
| +
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DOMModel, WebInspector.DOMModel.Events.AttrModified, this._onNodeChange, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DOMModel, WebInspector.DOMModel.Events.AttrRemoved, this._onNodeChange, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DOMModel, WebInspector.DOMModel.Events.CharacterDataModified, this._onNodeChange, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DOMModel, WebInspector.DOMModel.Events.ChildNodeCountUpdated, this._onNodeChange, this);
|
| WebInspector.context.addFlavorChangeListener(WebInspector.DOMNode, this._setNode, this);
|
| this._node = WebInspector.context.flavor(WebInspector.DOMNode);
|
| this.update();
|
| -};
|
| -
|
| -WebInspector.PropertiesWidget._objectGroupName = "properties-sidebar-pane";
|
| + }
|
|
|
| -WebInspector.PropertiesWidget.prototype = {
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _setNode: function(event)
|
| - {
|
| - this._node = /** @type {?WebInspector.DOMNode} */(event.data);
|
| - this.update();
|
| - },
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _setNode(event) {
|
| + this._node = /** @type {?WebInspector.DOMNode} */ (event.data);
|
| + this.update();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @protected
|
| + * @return {!Promise.<?>}
|
| + */
|
| + doUpdate() {
|
| + if (this._lastRequestedNode) {
|
| + this._lastRequestedNode.target().runtimeAgent().releaseObjectGroup(
|
| + WebInspector.PropertiesWidget._objectGroupName);
|
| + delete this._lastRequestedNode;
|
| + }
|
| +
|
| + if (!this._node) {
|
| + this.element.removeChildren();
|
| + this.sections = [];
|
| + return Promise.resolve();
|
| + }
|
| +
|
| + this._lastRequestedNode = this._node;
|
| + return this._node.resolveToObjectPromise(WebInspector.PropertiesWidget._objectGroupName)
|
| + .then(nodeResolved.bind(this));
|
|
|
| /**
|
| - * @override
|
| - * @protected
|
| - * @return {!Promise.<?>}
|
| + * @param {?WebInspector.RemoteObject} object
|
| + * @this {WebInspector.PropertiesWidget}
|
| */
|
| - doUpdate: function()
|
| - {
|
| - if (this._lastRequestedNode) {
|
| - this._lastRequestedNode.target().runtimeAgent().releaseObjectGroup(WebInspector.PropertiesWidget._objectGroupName);
|
| - delete this._lastRequestedNode;
|
| - }
|
| -
|
| - if (!this._node) {
|
| - this.element.removeChildren();
|
| - this.sections = [];
|
| - return Promise.resolve();
|
| - }
|
| -
|
| - this._lastRequestedNode = this._node;
|
| - return this._node.resolveToObjectPromise(WebInspector.PropertiesWidget._objectGroupName)
|
| - .then(nodeResolved.bind(this));
|
| -
|
| - /**
|
| - * @param {?WebInspector.RemoteObject} object
|
| - * @this {WebInspector.PropertiesWidget}
|
| - */
|
| - function nodeResolved(object)
|
| - {
|
| - if (!object)
|
| - return;
|
| -
|
| - /**
|
| - * @suppressReceiverCheck
|
| - * @this {*}
|
| - */
|
| - function protoList()
|
| - {
|
| - var proto = this;
|
| - var result = { __proto__: null };
|
| - var counter = 1;
|
| - while (proto) {
|
| - result[counter++] = proto;
|
| - proto = proto.__proto__;
|
| - }
|
| - return result;
|
| - }
|
| - var promise = object.callFunctionPromise(protoList).then(nodePrototypesReady.bind(this));
|
| - object.release();
|
| - return promise;
|
| - }
|
| -
|
| - /**
|
| - * @param {!{object: ?WebInspector.RemoteObject, wasThrown: (boolean|undefined)}} result
|
| - * @this {WebInspector.PropertiesWidget}
|
| - */
|
| - function nodePrototypesReady(result)
|
| - {
|
| - if (!result.object || result.wasThrown)
|
| - return;
|
| -
|
| - var promise = result.object.getOwnPropertiesPromise().then(fillSection.bind(this));
|
| - result.object.release();
|
| - return promise;
|
| - }
|
| -
|
| - /**
|
| - * @param {!{properties: ?Array.<!WebInspector.RemoteObjectProperty>, internalProperties: ?Array.<!WebInspector.RemoteObjectProperty>}} result
|
| - * @this {WebInspector.PropertiesWidget}
|
| - */
|
| - function fillSection(result)
|
| - {
|
| - if (!result || !result.properties)
|
| - return;
|
| -
|
| - var properties = result.properties;
|
| - var expanded = [];
|
| - var sections = this.sections || [];
|
| - for (var i = 0; i < sections.length; ++i)
|
| - expanded.push(sections[i].expanded);
|
| -
|
| - this.element.removeChildren();
|
| - this.sections = [];
|
| -
|
| - // Get array of property user-friendly names.
|
| - for (var i = 0; i < properties.length; ++i) {
|
| - if (!parseInt(properties[i].name, 10))
|
| - continue;
|
| - var property = properties[i].value;
|
| - var title = property.description;
|
| - title = title.replace(/Prototype$/, "");
|
| - var section = new WebInspector.ObjectPropertiesSection(property, title);
|
| - section.element.classList.add("properties-widget-section");
|
| - this.sections.push(section);
|
| - this.element.appendChild(section.element);
|
| - if (expanded[this.sections.length - 1])
|
| - section.expand();
|
| - section.addEventListener(TreeOutline.Events.ElementExpanded, this._propertyExpanded, this);
|
| - }
|
| + function nodeResolved(object) {
|
| + if (!object)
|
| + return;
|
| +
|
| + /**
|
| + * @suppressReceiverCheck
|
| + * @this {*}
|
| + */
|
| + function protoList() {
|
| + var proto = this;
|
| + var result = {__proto__: null};
|
| + var counter = 1;
|
| + while (proto) {
|
| + result[counter++] = proto;
|
| + proto = proto.__proto__;
|
| }
|
| - },
|
| + return result;
|
| + }
|
| + var promise = object.callFunctionPromise(protoList).then(nodePrototypesReady.bind(this));
|
| + object.release();
|
| + return promise;
|
| + }
|
|
|
| /**
|
| - * @param {!WebInspector.Event} event
|
| + * @param {!{object: ?WebInspector.RemoteObject, wasThrown: (boolean|undefined)}} result
|
| + * @this {WebInspector.PropertiesWidget}
|
| */
|
| - _propertyExpanded: function(event)
|
| - {
|
| - WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.DOMPropertiesExpanded);
|
| - for (var section of this.sections) {
|
| - section.removeEventListener(TreeOutline.Events.ElementExpanded, this._propertyExpanded, this);
|
| - }
|
| - },
|
| + function nodePrototypesReady(result) {
|
| + if (!result.object || result.wasThrown)
|
| + return;
|
| +
|
| + var promise = result.object.getOwnPropertiesPromise().then(fillSection.bind(this));
|
| + result.object.release();
|
| + return promise;
|
| + }
|
|
|
| /**
|
| - * @param {!WebInspector.Event} event
|
| + * @param {!{properties: ?Array.<!WebInspector.RemoteObjectProperty>, internalProperties: ?Array.<!WebInspector.RemoteObjectProperty>}} result
|
| + * @this {WebInspector.PropertiesWidget}
|
| */
|
| - _onNodeChange: function(event)
|
| - {
|
| - if (!this._node)
|
| - return;
|
| - var data = event.data;
|
| - var node = /** @type {!WebInspector.DOMNode} */ (data instanceof WebInspector.DOMNode ? data : data.node);
|
| - if (this._node !== node)
|
| - return;
|
| - this.update();
|
| - },
|
| -
|
| - __proto__: WebInspector.ThrottledWidget.prototype
|
| + function fillSection(result) {
|
| + if (!result || !result.properties)
|
| + return;
|
| +
|
| + var properties = result.properties;
|
| + var expanded = [];
|
| + var sections = this.sections || [];
|
| + for (var i = 0; i < sections.length; ++i)
|
| + expanded.push(sections[i].expanded);
|
| +
|
| + this.element.removeChildren();
|
| + this.sections = [];
|
| +
|
| + // Get array of property user-friendly names.
|
| + for (var i = 0; i < properties.length; ++i) {
|
| + if (!parseInt(properties[i].name, 10))
|
| + continue;
|
| + var property = properties[i].value;
|
| + var title = property.description;
|
| + title = title.replace(/Prototype$/, '');
|
| + var section = new WebInspector.ObjectPropertiesSection(property, title);
|
| + section.element.classList.add('properties-widget-section');
|
| + this.sections.push(section);
|
| + this.element.appendChild(section.element);
|
| + if (expanded[this.sections.length - 1])
|
| + section.expand();
|
| + section.addEventListener(TreeOutline.Events.ElementExpanded, this._propertyExpanded, this);
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _propertyExpanded(event) {
|
| + WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.DOMPropertiesExpanded);
|
| + for (var section of this.sections) {
|
| + section.removeEventListener(TreeOutline.Events.ElementExpanded, this._propertyExpanded, this);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onNodeChange(event) {
|
| + if (!this._node)
|
| + return;
|
| + var data = event.data;
|
| + var node = /** @type {!WebInspector.DOMNode} */ (data instanceof WebInspector.DOMNode ? data : data.node);
|
| + if (this._node !== node)
|
| + return;
|
| + this.update();
|
| + }
|
| };
|
| +
|
| +WebInspector.PropertiesWidget._objectGroupName = 'properties-sidebar-pane';
|
|
|