Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 ProductRegistry.BadgePool = class { | 5 ProductRegistry.BadgePool = class { |
| 6 constructor() { | 6 constructor() { |
| 7 this._setting = Common.settings.moduleSetting('product_registry.badges-visib le'); | 7 this._setting = Common.settings.moduleSetting('product_registry.badges-visib le'); |
| 8 this._setting.addChangeListener(this._settingUpdated.bind(this)); | 8 this._setting.addChangeListener(this._settingUpdated.bind(this)); |
| 9 /** @type {!Map<!Element, function():!Promise<!Common.ParsedURL>>}*/ | 9 /** @type {!Map<!Element, function():!Promise<!Common.ParsedURL>>}*/ |
| 10 this._badgeElements = new Map(); | 10 this._badgeElements = new Map(); |
| 11 } | 11 } |
| 12 | 12 |
| 13 /** | 13 /** |
| 14 * @param {!SDK.ResourceTreeFrame} frame | 14 * @param {!SDK.ResourceTreeFrame} frame |
| 15 * @param {boolean=} showName | |
| 15 * @return {!Element} | 16 * @return {!Element} |
| 16 */ | 17 */ |
| 17 badgeForFrame(frame) { | 18 badgeForFrame(frame, showName) { |
| 18 return this._badgeForFrameOrUrl(this._resolveUrl.bind(this, frame)); | 19 return this._badgeForFrameOrUrl(this._resolveUrl.bind(this, frame), showName ); |
| 19 } | 20 } |
| 20 | 21 |
| 21 /** | 22 /** |
| 22 * @param {!Common.ParsedURL} parsedUrl | 23 * @param {!Common.ParsedURL} parsedUrl |
| 24 * @param {boolean=} showName | |
| 23 * @return {!Element} | 25 * @return {!Element} |
| 24 */ | 26 */ |
| 25 badgeForURL(parsedUrl) { | 27 badgeForURL(parsedUrl, showName) { |
| 26 return this._badgeForFrameOrUrl(() => Promise.resolve(parsedUrl)); | 28 return this._badgeForFrameOrUrl(() => Promise.resolve(parsedUrl), showName); |
| 27 } | 29 } |
| 28 | 30 |
| 29 reset() { | 31 reset() { |
| 30 this._badgeElements.clear(); | 32 this._badgeElements.clear(); |
| 31 } | 33 } |
| 32 | 34 |
| 33 /** | 35 /** |
| 34 * @param {function():!Promise<!Common.ParsedURL>} urlResolver | 36 * @param {function():!Promise<!Common.ParsedURL>} urlResolver |
| 37 * @param {boolean=} showName | |
| 35 * @return {!Element} | 38 * @return {!Element} |
| 36 */ | 39 */ |
| 37 _badgeForFrameOrUrl(urlResolver) { | 40 _badgeForFrameOrUrl(urlResolver, showName) { |
| 38 var element = createElement('span'); | 41 var element = createElement('span'); |
| 39 var root = UI.createShadowRootWithCoreStyles(element, 'product_registry/badg e.css'); | 42 var root = UI.createShadowRootWithCoreStyles(element, 'product_registry/badg e.css'); |
| 40 var badgeElement = root.createChild('span', 'product-registry-badge monospac e hidden'); | 43 var badgeElement = root.createChild('span'); |
| 41 badgeElement.setAttribute('data-initial', ' '); | 44 badgeElement.classList.toggle('hide-badge-title', !showName); |
|
pfeldman
2017/05/18 20:18:33
'hide'
alph
2017/05/18 22:56:02
Done.
| |
| 42 badgeElement.title = ''; | |
| 43 badgeElement.addEventListener('mousedown', event => event.consume()); | 45 badgeElement.addEventListener('mousedown', event => event.consume()); |
| 44 badgeElement.addEventListener('click', event => { | 46 badgeElement.addEventListener('click', event => { |
| 45 this._showPopup(badgeElement); | 47 this._showPopup(badgeElement); |
| 46 event.consume(); | 48 event.consume(); |
| 47 }, false); | 49 }, false); |
| 48 | |
| 49 this._badgeElements.set(badgeElement, urlResolver); | 50 this._badgeElements.set(badgeElement, urlResolver); |
| 50 if (this._setting.get()) | 51 if (this._setting.get()) |
| 51 this._renderBadge(badgeElement); | 52 this._renderBadge(badgeElement); |
| 52 return element; | 53 return element; |
| 53 } | 54 } |
| 54 | 55 |
| 55 /** | 56 /** |
| 56 * @param {?SDK.ResourceTreeFrame} frame | 57 * @param {?SDK.ResourceTreeFrame} frame |
| 57 * @return {!Promise<!Common.ParsedURL>} | 58 * @return {!Promise<!Common.ParsedURL>} |
| 58 */ | 59 */ |
| 59 async _resolveUrl(frame) { | 60 async _resolveUrl(frame) { |
| 60 var registry = await ProductRegistry.instance(); | 61 var registry = await ProductRegistry.instance(); |
| 61 var parsedUrl = new Common.ParsedURL(frame.url); | 62 var parsedUrl = new Common.ParsedURL(frame.url); |
| 62 var entry = registry.entryForUrl(parsedUrl); | 63 var entry = registry.entryForUrl(parsedUrl); |
| 63 if (!entry) { | 64 if (!entry) { |
| 64 frame.findCreationCallFrame(callFrame => { | 65 frame.findCreationCallFrame(callFrame => { |
| 65 if (!callFrame.url) | 66 if (!callFrame.url) |
| 66 return false; | 67 return false; |
| 67 parsedUrl = new Common.ParsedURL(callFrame.url); | 68 parsedUrl = new Common.ParsedURL(callFrame.url); |
| 68 return !!registry.entryForUrl(parsedUrl); | 69 return !!registry.entryForUrl(parsedUrl); |
| 69 }); | 70 }); |
| 70 } | 71 } |
| 71 return parsedUrl; | 72 return parsedUrl; |
| 72 } | 73 } |
| 73 | 74 |
| 74 /** | 75 /** |
| 75 * @param {!Element} badgeElement | 76 * @param {!Element} element |
| 76 */ | 77 */ |
| 77 async _renderBadge(badgeElement) { | 78 async _renderBadge(element) { |
|
pfeldman
2017/05/18 20:18:33
I thought you could do it in one line.
alph
2017/05/18 22:56:02
I can't
| |
| 78 var registry = await ProductRegistry.instance(); | 79 var registry = await ProductRegistry.instance(); |
| 79 if (!this._badgeElements.has(badgeElement)) | 80 if (!this._badgeElements.has(element)) |
| 80 return; | 81 return; |
| 81 var parsedUrl = await this._badgeElements.get(badgeElement)(); | 82 element.removeChildren(); |
| 83 element.classList.add('hidden'); | |
| 84 | |
| 85 var parsedUrl = await this._badgeElements.get(element)(); | |
| 82 var entryName = registry.nameForUrl(parsedUrl); | 86 var entryName = registry.nameForUrl(parsedUrl); |
| 87 if (!entryName) | |
| 88 return; | |
| 83 | 89 |
| 84 if (!entryName) { | 90 var tokens = entryName.replace(/[a-z]*/g, '').split(' '); |
| 85 badgeElement.setAttribute('data-initial', ' '); | 91 var label = tokens.length > 1 ? tokens[0][0] + tokens[1][0] : entryName; |
| 86 badgeElement.title = ''; | |
| 87 badgeElement.style.removeProperty('background-color'); | |
| 88 return; | |
| 89 } | |
| 90 | 92 |
| 91 var label; | 93 var badgeElement = element.createChild('span', 'product-registry-badge monos pace'); |
| 92 var tokens = entryName.replace(/[a-z]*/g, '').split(' '); | |
| 93 if (tokens.length > 1) | |
| 94 label = tokens[0][0] + tokens[1][0]; | |
| 95 else | |
| 96 label = entryName; | |
| 97 | |
| 98 badgeElement.setAttribute('data-initial', label.substring(0, 2).toUpperCase( )); | 94 badgeElement.setAttribute('data-initial', label.substring(0, 2).toUpperCase( )); |
| 99 badgeElement.title = entryName; | 95 badgeElement.title = entryName; |
| 100 badgeElement.style.backgroundColor = ProductRegistry.BadgePool.colorForEntry Name(entryName); | 96 badgeElement.style.backgroundColor = ProductRegistry.BadgePool.colorForEntry Name(entryName); |
| 101 badgeElement.classList.toggle('hidden', !this._setting.get()); | 97 |
| 98 element.createChild('span', 'badge-title').textContent = entryName; | |
| 99 element.classList.toggle('hidden', !this._setting.get()); | |
| 102 } | 100 } |
| 103 | 101 |
| 104 _settingUpdated() { | 102 _settingUpdated() { |
| 105 var enabled = this._setting.get(); | 103 var enabled = this._setting.get(); |
| 106 if (!enabled) { | 104 if (!enabled) { |
| 107 for (var badgeElement of this._badgeElements.keys()) | 105 for (var badgeElement of this._badgeElements.keys()) |
| 108 badgeElement.classList.add('hidden'); | 106 badgeElement.classList.add('hidden'); |
| 109 return; | 107 return; |
| 110 } | 108 } |
| 111 for (var badgeElement of this._badgeElements.keys()) | 109 for (var badgeElement of this._badgeElements.keys()) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 149 * @return {string} | 147 * @return {string} |
| 150 */ | 148 */ |
| 151 static colorForEntryName(entryName) { | 149 static colorForEntryName(entryName) { |
| 152 if (!ProductRegistry.BadgePool._colorGenerator) { | 150 if (!ProductRegistry.BadgePool._colorGenerator) { |
| 153 ProductRegistry.BadgePool._colorGenerator = | 151 ProductRegistry.BadgePool._colorGenerator = |
| 154 new Common.Color.Generator({min: 30, max: 330}, {min: 50, max: 80, cou nt: 3}, 80); | 152 new Common.Color.Generator({min: 30, max: 330}, {min: 50, max: 80, cou nt: 3}, 80); |
| 155 } | 153 } |
| 156 return ProductRegistry.BadgePool._colorGenerator.colorForID(entryName); | 154 return ProductRegistry.BadgePool._colorGenerator.colorForID(entryName); |
| 157 } | 155 } |
| 158 }; | 156 }; |
| OLD | NEW |