parent
							
								
									95a24cd29b
								
							
						
					
					
						commit
						f6991c4f57
					
				|  | @ -357,13 +357,18 @@ function updateIcon({tab, styles}) { | ||||||
|     if (tabIcon.iconType !== iconset + postfix) { |     if (tabIcon.iconType !== iconset + postfix) { | ||||||
|       tabIcon.iconType = iconset + postfix; |       tabIcon.iconType = iconset + postfix; | ||||||
|       const sizes = FIREFOX || CHROME >= 2883 && !VIVALDI ? [16, 32] : [19, 38]; |       const sizes = FIREFOX || CHROME >= 2883 && !VIVALDI ? [16, 32] : [19, 38]; | ||||||
|  |       const usePath = tabIcons.get('usePath'); | ||||||
|       Promise.all(sizes.map(size => { |       Promise.all(sizes.map(size => { | ||||||
|         const src = `/images/icon/${iconset}${size}${postfix}.png`; |         const src = `/images/icon/${iconset}${size}${postfix}.png`; | ||||||
|         return tabIcons.get(src) || loadIcon(src); |         return usePath ? src : tabIcons.get(src) || loadIcon(src); | ||||||
|       })).then(data => { |       })).then(data => { | ||||||
|  |         const imageKey = typeof data[0] === 'string' ? 'path' : 'imageData'; | ||||||
|         const imageData = {}; |         const imageData = {}; | ||||||
|         sizes.forEach((size, i) => (imageData[size] = data[i])); |         sizes.forEach((size, i) => (imageData[size] = data[i])); | ||||||
|         chrome.browserAction.setIcon({tabId: tab.id, imageData}, ignoreChromeError); |         chrome.browserAction.setIcon({ | ||||||
|  |           tabId: tab.id, | ||||||
|  |           [imageKey]: imageData, | ||||||
|  |         }, ignoreChromeError); | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
|     if (tab.id === undefined) return; |     if (tab.id === undefined) return; | ||||||
|  | @ -400,6 +405,16 @@ function updateIcon({tab, styles}) { | ||||||
|       ctx.clearRect(0, 0, w, h); |       ctx.clearRect(0, 0, w, h); | ||||||
|       ctx.drawImage(img, 0, 0, w, h); |       ctx.drawImage(img, 0, 0, w, h); | ||||||
|       const data = ctx.getImageData(0, 0, w, h); |       const data = ctx.getImageData(0, 0, w, h); | ||||||
|  |       // Firefox breaks Canvas when privacy.resistFingerprinting=true, https://bugzil.la/1412961
 | ||||||
|  |       let usePath = tabIcons.get('usePath'); | ||||||
|  |       if (usePath === undefined) { | ||||||
|  |         usePath = data.data.every(b => b === 255); | ||||||
|  |         tabIcons.set('usePath', usePath); | ||||||
|  |       } | ||||||
|  |       if (usePath) { | ||||||
|  |         resolve(src); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|       tabIcons.set(src, data); |       tabIcons.set(src, data); | ||||||
|       resolve(data); |       resolve(data); | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user