Merge pull request #7921 from Slowlife01/cache-favicon

This commit is contained in:
mr. m
2025-04-29 09:51:30 +02:00
committed by GitHub
2 changed files with 42 additions and 4 deletions

View File

@@ -83,8 +83,23 @@
onTabIconChanged(tab, url = null) {
const iconUrl = url ?? tab.iconImage.src;
if (tab.hasAttribute('zen-essential')) {
tab.querySelector('.tab-background').style.setProperty('--zen-tab-icon', `url(${iconUrl})`);
if (!iconUrl) {
try {
setTimeout(() => {
PlacesUtils.favicons.getFaviconURLForPage(
tab.linkedBrowser.currentURI,
(url) => {
if (url) gBrowser.setIcon(tab, url.spec);
},
0
);
});
} catch {}
} else {
if (tab.hasAttribute('zen-essential')) {
tab.querySelector('.tab-background').style.setProperty('--zen-tab-icon', `url(${iconUrl})`);
}
}
// TODO: work on this
//if (tab.hasAttribute('zen-pinned-changed') || !this._pinsCache) {

View File

@@ -68,10 +68,9 @@
async function setCachedFaviconForURL(pageUrl, iconURL) {
try {
// TODO: This always return "NS_ERROR_NOT_AVAILABLE" for some reason, figure out why
await PlacesUtils.favicons.setFaviconForPage(
Services.io.newURI(pageUrl),
Services.io.newURI('fake-favicon-uri:' + pageUrl),
Services.io.newURI(iconURL),
Services.io.newURI(iconURL)
);
} catch (ex) {
@@ -84,6 +83,18 @@
['https://reddit.com/r/zen_browser', 'Zen on Reddit', 'https://private-cdn.zen-browser.app/reddit.png'],
['https://x.com/zen_browser', 'Zen on Twitter', 'https://private-cdn.zen-browser.app/x.png'],
];
await PlacesUtils.history.insertMany(
tabs.map((site) => ({
url: site[0],
visits: [
{
transition: PlacesUtils.history.TRANSITIONS.TYPED,
},
],
}))
);
for (const site of tabs) {
const tab = window.gBrowser.addTrustedTab(site[0], {
inBackground: true,
@@ -443,6 +454,18 @@
const selectedTabs = document
.getElementById('zen-welcome-initial-essentials-browser-sidebar-essentials')
.querySelectorAll('.tabbrowser-tab[visuallyselected]');
await PlacesUtils.history.insertMany(
[...selectedTabs].map((tab) => ({
url: tab.getAttribute('data-url'),
visits: [
{
transition: PlacesUtils.history.TRANSITIONS.TYPED,
},
],
}))
);
for (const tab of selectedTabs) {
const url = tab.getAttribute('data-url');
const createdTab = window.gBrowser.addTrustedTab(url, {