| Index: third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleModel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleModel.js b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleModel.js
|
| index cfa0ac4225f27cdf4fe1a523e87d3b32efc5b3f1..9e51d54857100ad472edab640f6fb251d55bc380 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleModel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleModel.js
|
| @@ -1,170 +1,168 @@
|
| // Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| /**
|
| - * @extends {WebInspector.Object}
|
| - * @constructor
|
| + * @unrestricted
|
| */
|
| -WebInspector.ComputedStyleModel = function()
|
| -{
|
| - WebInspector.Object.call(this);
|
| +WebInspector.ComputedStyleModel = class extends WebInspector.Object {
|
| + constructor() {
|
| + super();
|
| this._node = WebInspector.context.flavor(WebInspector.DOMNode);
|
| WebInspector.context.addFlavorChangeListener(WebInspector.DOMNode, this._onNodeChanged, this);
|
| -};
|
| -
|
| -/** @enum {symbol} */
|
| -WebInspector.ComputedStyleModel.Events = {
|
| - ComputedStyleChanged: Symbol("ComputedStyleChanged")
|
| -};
|
| -
|
| -WebInspector.ComputedStyleModel.prototype = {
|
| - /**
|
| - * @return {?WebInspector.DOMNode}
|
| - */
|
| - node: function()
|
| - {
|
| - return this._node;
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.CSSModel}
|
| - */
|
| - cssModel: function()
|
| - {
|
| - return this._cssModel && this._cssModel.isEnabled() ? this._cssModel : null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onNodeChanged: function(event)
|
| - {
|
| - this._node = /** @type {?WebInspector.DOMNode} */(event.data);
|
| - this._updateTarget(this._node ? this._node.target() : null);
|
| - this._onComputedStyleChanged(null);
|
| - },
|
| -
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.DOMNode}
|
| + */
|
| + node() {
|
| + return this._node;
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.CSSModel}
|
| + */
|
| + cssModel() {
|
| + return this._cssModel && this._cssModel.isEnabled() ? this._cssModel : null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onNodeChanged(event) {
|
| + this._node = /** @type {?WebInspector.DOMNode} */ (event.data);
|
| + this._updateTarget(this._node ? this._node.target() : null);
|
| + this._onComputedStyleChanged(null);
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.Target} target
|
| + */
|
| + _updateTarget(target) {
|
| + if (this._target === target)
|
| + return;
|
| + if (this._targetEvents)
|
| + WebInspector.EventTarget.removeEventListeners(this._targetEvents);
|
| + this._target = target;
|
| +
|
| + var domModel = null;
|
| + var resourceTreeModel = null;
|
| + if (target) {
|
| + this._cssModel = WebInspector.CSSModel.fromTarget(target);
|
| + domModel = WebInspector.DOMModel.fromTarget(target);
|
| + resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target);
|
| + }
|
| +
|
| + if (this._cssModel && domModel && resourceTreeModel) {
|
| + this._targetEvents = [
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.StyleSheetAdded, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.StyleSheetRemoved, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.StyleSheetChanged, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(WebInspector.CSSModel.Events.FontsUpdated, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.MediaQueryResultChanged, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.PseudoStateForced, this._onComputedStyleChanged, this),
|
| + this._cssModel.addEventListener(
|
| + WebInspector.CSSModel.Events.ModelWasEnabled, this._onComputedStyleChanged, this),
|
| + domModel.addEventListener(WebInspector.DOMModel.Events.DOMMutated, this._onDOMModelChanged, this),
|
| + resourceTreeModel.addEventListener(
|
| + WebInspector.ResourceTreeModel.Events.FrameResized, this._onFrameResized, this),
|
| + ];
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.Event} event
|
| + */
|
| + _onComputedStyleChanged(event) {
|
| + delete this._computedStylePromise;
|
| + this.dispatchEventToListeners(
|
| + WebInspector.ComputedStyleModel.Events.ComputedStyleChanged, event ? event.data : null);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onDOMModelChanged(event) {
|
| + // Any attribute removal or modification can affect the styles of "related" nodes.
|
| + var node = /** @type {!WebInspector.DOMNode} */ (event.data);
|
| + if (!this._node || this._node !== node && node.parentNode !== this._node.parentNode && !node.isAncestor(this._node))
|
| + return;
|
| + this._onComputedStyleChanged(null);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onFrameResized(event) {
|
| /**
|
| - * @param {?WebInspector.Target} target
|
| - */
|
| - _updateTarget: function(target)
|
| - {
|
| - if (this._target === target)
|
| - return;
|
| - if (this._targetEvents)
|
| - WebInspector.EventTarget.removeEventListeners(this._targetEvents);
|
| - this._target = target;
|
| -
|
| - var domModel = null;
|
| - var resourceTreeModel = null;
|
| - if (target) {
|
| - this._cssModel = WebInspector.CSSModel.fromTarget(target);
|
| - domModel = WebInspector.DOMModel.fromTarget(target);
|
| - resourceTreeModel = WebInspector.ResourceTreeModel.fromTarget(target);
|
| - }
|
| -
|
| - if (this._cssModel && domModel && resourceTreeModel) {
|
| - this._targetEvents = [
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetChanged, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.FontsUpdated, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.MediaQueryResultChanged, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.PseudoStateForced, this._onComputedStyleChanged, this),
|
| - this._cssModel.addEventListener(WebInspector.CSSModel.Events.ModelWasEnabled, this._onComputedStyleChanged, this),
|
| - domModel.addEventListener(WebInspector.DOMModel.Events.DOMMutated, this._onDOMModelChanged, this),
|
| - resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Events.FrameResized, this._onFrameResized, this),
|
| - ];
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {?WebInspector.Event} event
|
| - */
|
| - _onComputedStyleChanged: function(event)
|
| - {
|
| - delete this._computedStylePromise;
|
| - this.dispatchEventToListeners(WebInspector.ComputedStyleModel.Events.ComputedStyleChanged, event ? event.data : null);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| + * @this {WebInspector.ComputedStyleModel}
|
| */
|
| - _onDOMModelChanged: function(event)
|
| - {
|
| - // Any attribute removal or modification can affect the styles of "related" nodes.
|
| - var node = /** @type {!WebInspector.DOMNode} */ (event.data);
|
| - if (!this._node || this._node !== node && node.parentNode !== this._node.parentNode && !node.isAncestor(this._node))
|
| - return;
|
| - this._onComputedStyleChanged(null);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onFrameResized: function(event)
|
| - {
|
| - /**
|
| - * @this {WebInspector.ComputedStyleModel}
|
| - */
|
| - function refreshContents()
|
| - {
|
| - this._onComputedStyleChanged(null);
|
| - delete this._frameResizedTimer;
|
| - }
|
| -
|
| - if (this._frameResizedTimer)
|
| - clearTimeout(this._frameResizedTimer);
|
| -
|
| - this._frameResizedTimer = setTimeout(refreshContents.bind(this), 100);
|
| - },
|
| + function refreshContents() {
|
| + this._onComputedStyleChanged(null);
|
| + delete this._frameResizedTimer;
|
| + }
|
| +
|
| + if (this._frameResizedTimer)
|
| + clearTimeout(this._frameResizedTimer);
|
| +
|
| + this._frameResizedTimer = setTimeout(refreshContents.bind(this), 100);
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.DOMNode}
|
| + */
|
| + _elementNode() {
|
| + return this.node() ? this.node().enclosingElementOrSelf() : null;
|
| + }
|
| +
|
| + /**
|
| + * @return {!Promise.<?WebInspector.ComputedStyleModel.ComputedStyle>}
|
| + */
|
| + fetchComputedStyle() {
|
| + var elementNode = this._elementNode();
|
| + var cssModel = this.cssModel();
|
| + if (!elementNode || !cssModel)
|
| + return Promise.resolve(/** @type {?WebInspector.ComputedStyleModel.ComputedStyle} */ (null));
|
| +
|
| + if (!this._computedStylePromise)
|
| + this._computedStylePromise =
|
| + cssModel.computedStylePromise(elementNode.id).then(verifyOutdated.bind(this, elementNode));
|
| +
|
| + return this._computedStylePromise;
|
|
|
| /**
|
| - * @return {?WebInspector.DOMNode}
|
| + * @param {!WebInspector.DOMNode} elementNode
|
| + * @param {?Map.<string, string>} style
|
| + * @return {?WebInspector.ComputedStyleModel.ComputedStyle}
|
| + * @this {WebInspector.ComputedStyleModel}
|
| */
|
| - _elementNode: function()
|
| - {
|
| - return this.node() ? this.node().enclosingElementOrSelf() : null;
|
| - },
|
| + function verifyOutdated(elementNode, style) {
|
| + return elementNode === this._elementNode() && style ?
|
| + new WebInspector.ComputedStyleModel.ComputedStyle(elementNode, style) :
|
| + /** @type {?WebInspector.ComputedStyleModel.ComputedStyle} */ (null);
|
| + }
|
| + }
|
| +};
|
|
|
| - /**
|
| - * @return {!Promise.<?WebInspector.ComputedStyleModel.ComputedStyle>}
|
| - */
|
| - fetchComputedStyle: function()
|
| - {
|
| - var elementNode = this._elementNode();
|
| - var cssModel = this.cssModel();
|
| - if (!elementNode || !cssModel)
|
| - return Promise.resolve(/** @type {?WebInspector.ComputedStyleModel.ComputedStyle} */(null));
|
| -
|
| - if (!this._computedStylePromise)
|
| - this._computedStylePromise = cssModel.computedStylePromise(elementNode.id).then(verifyOutdated.bind(this, elementNode));
|
| -
|
| - return this._computedStylePromise;
|
| -
|
| - /**
|
| - * @param {!WebInspector.DOMNode} elementNode
|
| - * @param {?Map.<string, string>} style
|
| - * @return {?WebInspector.ComputedStyleModel.ComputedStyle}
|
| - * @this {WebInspector.ComputedStyleModel}
|
| - */
|
| - function verifyOutdated(elementNode, style)
|
| - {
|
| - return elementNode === this._elementNode() && style ? new WebInspector.ComputedStyleModel.ComputedStyle(elementNode, style) : /** @type {?WebInspector.ComputedStyleModel.ComputedStyle} */(null);
|
| - }
|
| - },
|
| -
|
| - __proto__: WebInspector.Object.prototype
|
| +/** @enum {symbol} */
|
| +WebInspector.ComputedStyleModel.Events = {
|
| + ComputedStyleChanged: Symbol('ComputedStyleChanged')
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.DOMNode} node
|
| - * @param {!Map.<string, string>} computedStyle
|
| + * @unrestricted
|
| */
|
| -WebInspector.ComputedStyleModel.ComputedStyle = function(node, computedStyle)
|
| -{
|
| +WebInspector.ComputedStyleModel.ComputedStyle = class {
|
| + /**
|
| + * @param {!WebInspector.DOMNode} node
|
| + * @param {!Map.<string, string>} computedStyle
|
| + */
|
| + constructor(node, computedStyle) {
|
| this.node = node;
|
| this.computedStyle = computedStyle;
|
| + }
|
| };
|
|
|