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

Unified Diff: third_party/WebKit/Source/devtools/front_end/product_registry/BadgePool.js

Issue 2892333002: DevTools: Render third-party badges in timeline tree view (Closed)
Patch Set: . Created 3 years, 7 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/timeline/EventsTimelineTreeView.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..95f1e20538a3c4f80274f05c7d6d441455d89440 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,40 @@
// 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));
- /** @type {!Map<!Element, function():!Promise<!Common.ParsedURL>>}*/
+ /**
+ * @param {boolean=} forceShow
+ */
+ constructor(forceShow) {
+ this._showTitles = false;
+ /** @type {!Map<!Element, function():!Promise<!Common.ParsedURL>>} */
this._badgeElements = new Map();
+ if (!forceShow) {
+ this._setting = Common.settings.moduleSetting('product_registry.badges-visible');
+ this._setting.addChangeListener(this._settingUpdated.bind(this));
+ }
+ }
+
+ /**
+ * @param {boolean} value
+ */
+ setShowTitles(value) {
+ this._showTitles = value;
}
/**
* @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 +45,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 +85,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._updateBadgeElementVisibility(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 +109,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._updateBadgeElementVisibility(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._setting || this._setting.get();
+ }
+
+ /**
+ * @param {!Element} badgeElement
*/
- _setBadgeElementHidden(badgeElement, hide) {
- badgeElement.parentNodeOrShadowHost().parentNodeOrShadowHost().classList.toggle('hidden', hide);
+ _updateBadgeElementVisibility(badgeElement) {
+ badgeElement.parentNodeOrShadowHost().parentNodeOrShadowHost().classList.toggle(
+ 'hidden', !this._isVisible(badgeElement));
}
/**
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/timeline/EventsTimelineTreeView.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698