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 |