Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js b/third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js |
| index ca7734595de226b34934886d422e344850f2756a..e68700aa2e67cee211264cf0146b3476bcbb53b8 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js |
| @@ -3,29 +3,35 @@ |
| // found in the LICENSE file. |
| ProductRegistry.BadgePool = class { |
| - constructor() { |
| - this._setting = Common.settings.moduleSetting('product_registry.badges-visible'); |
| - this._setting.addChangeListener(this._settingUpdated.bind(this)); |
| + /** |
| + * @param {boolean=} showTitles |
| + * @param {boolean=} persistent |
|
caseq
2017/05/24 01:36:25
forceShow?
alph
2017/05/24 02:00:49
Done.
|
| + */ |
| + constructor(showTitles, persistent) { |
| + this._showTitles = showTitles; |
| + this._persistent = persistent; |
|
caseq
2017/05/24 01:36:25
Do you need it? Perhaps just check this._setting?
alph
2017/05/24 02:00:49
Done.
|
| + if (!persistent) { |
| + this._setting = Common.settings.moduleSetting('product_registry.badges-visible'); |
| + this._setting.addChangeListener(this._settingUpdated.bind(this)); |
| + } |
| /** @type {!Map<!Element, function():!Promise<!Common.ParsedURL>>}*/ |
| this._badgeElements = new Map(); |
| } |
| /** |
| * @param {!SDK.ResourceTreeFrame} frame |
| - * @param {boolean=} showTitle |
| * @return {!Element} |
| */ |
| - badgeForFrame(frame, showTitle) { |
| - return this._badgeForFrameOrUrl(this._resolveUrl.bind(this, frame), showTitle); |
| + badgeForFrame(frame) { |
| + return this._badgeForFrameOrUrl(this._resolveUrl.bind(this, frame)); |
| } |
| /** |
| * @param {!Common.ParsedURL} parsedUrl |
| - * @param {boolean=} showTitle |
| * @return {!Element} |
| */ |
| - badgeForURL(parsedUrl, showTitle) { |
| - return this._badgeForFrameOrUrl(() => Promise.resolve(parsedUrl), showTitle); |
| + badgeForURL(parsedUrl) { |
| + return this._badgeForFrameOrUrl(() => Promise.resolve(parsedUrl)); |
| } |
| reset() { |
| @@ -34,22 +40,20 @@ ProductRegistry.BadgePool = class { |
| /** |
| * @param {function():!Promise<!Common.ParsedURL>} urlResolver |
| - * @param {boolean=} showTitle |
| * @return {!Element} |
| */ |
| - _badgeForFrameOrUrl(urlResolver, showTitle) { |
| + _badgeForFrameOrUrl(urlResolver) { |
| var element = createElementWithClass('span', 'hidden'); |
| var root = UI.createShadowRootWithCoreStyles(element, 'product_registry/badge.css'); |
| var badgeElement = root.createChild('span'); |
| - badgeElement.classList.toggle('hide-badge-title', !showTitle); |
| + badgeElement.classList.toggle('hide-badge-title', !this._showTitles); |
| badgeElement.addEventListener('mousedown', event => event.consume()); |
| badgeElement.addEventListener('click', event => { |
| this._showPopup(badgeElement); |
| event.consume(); |
| }, false); |
| this._badgeElements.set(badgeElement, urlResolver); |
| - if (this._setting.get()) |
| - this._renderBadge(badgeElement); |
| + this._renderBadge(badgeElement); |
| return element; |
| } |
| @@ -76,16 +80,14 @@ ProductRegistry.BadgePool = class { |
| * @param {!Element} badgeElement |
| */ |
| async _renderBadge(badgeElement) { |
| - if (!this._badgeElements.has(badgeElement)) |
| - return; |
| - if (badgeElement.children.length) { |
| - this._setBadgeElementHidden(badgeElement, false); |
| + if (badgeElement.children.length || !this._isVisible(badgeElement)) { |
| + this._setBadgeElementVisibility(badgeElement); |
| return; |
| } |
| var parsedUrl = await this._badgeElements.get(badgeElement)(); |
| var registry = await ProductRegistry.instance(); |
| - var entryName = registry.nameForUrl(parsedUrl); |
| + var entryName = parsedUrl && registry.nameForUrl(parsedUrl); |
| if (!entryName) |
| return; |
| @@ -102,26 +104,28 @@ ProductRegistry.BadgePool = class { |
| iconElement.style.backgroundColor = ProductRegistry.BadgePool.colorForEntryName(entryName); |
| badgeElement.createChild('span', 'product-registry-badge-title').textContent = entryName; |
| - this._setBadgeElementHidden(badgeElement, !this._setting.get()); |
| + this._setBadgeElementVisibility(badgeElement); |
| } |
| _settingUpdated() { |
| - var enabled = this._setting.get(); |
| - if (!enabled) { |
| - for (var badgeElement of this._badgeElements.keys()) |
| - this._setBadgeElementHidden(badgeElement, true); |
| - return; |
| - } |
| for (var badgeElement of this._badgeElements.keys()) |
| this._renderBadge(badgeElement); |
| } |
| /** |
| * @param {!Element} badgeElement |
| - * @param {boolean} hide |
| + * @return {boolean} |
| + */ |
| + _isVisible(badgeElement) { |
| + return this._persistent || this._setting.get(); |
| + } |
| + |
| + /** |
| + * @param {!Element} badgeElement |
| */ |
| - _setBadgeElementHidden(badgeElement, hide) { |
| - badgeElement.parentNodeOrShadowHost().parentNodeOrShadowHost().classList.toggle('hidden', hide); |
| + _setBadgeElementVisibility(badgeElement) { |
| + badgeElement.parentNodeOrShadowHost().parentNodeOrShadowHost().classList.toggle( |
| + 'hidden', !this._isVisible(badgeElement)); |
| } |
| /** |