/usr/share/xul-ext/tabmixplus/modules/AboutNewTab.jsm is in xul-ext-tabmixplus 0.5.0.0-1~deb8u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | "use strict";
this.EXPORTED_SYMBOLS = ["TabmixAboutNewTab"];
const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "DirectoryLinksProvider",
"resource:///modules/DirectoryLinksProvider.jsm");
XPCOMUtils.defineLazyGetter(this, "gAllPages", function() {
let tmp = {};
Cu.import("resource://gre/modules/NewTabUtils.jsm", tmp);
return tmp.NewTabUtils.allPages;
});
XPCOMUtils.defineLazyModuleGetter(this, "TabmixSvc",
"resource://tabmixplus/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "TabmixPlacesUtils",
"resource://tabmixplus/Places.jsm");
var AboutNewTabInternal;
this.TabmixAboutNewTab = Object.freeze({
updateAllBrowsers: function(window) {
AboutNewTabInternal.updateAllBrowsers(window);
},
updateBrowser: function(browser) {
AboutNewTabInternal.updateBrowser(browser);
},
updateTitles: function(cells) {
AboutNewTabInternal.updateTitles(cells);
},
});
AboutNewTabInternal = {
// update all opened about:newtab browsers in a window including preloaded
// browser if exist
updateAllBrowsers: function(window) {
let tabBrowser = window.gBrowser;
let tabPanels = tabBrowser.mPanelContainer.childNodes;
let browsers = Array.prototype.map.call(tabPanels, tabPanel => tabBrowser.getBrowserForTabPanel(tabPanel))
.filter(browser => browser.currentURI.spec == TabmixSvc.aboutNewtab);
browsers.forEach(browser => this.updateBrowser(browser));
},
updateBrowser: function(browser) {
if (TabmixSvc.version(420)) {
browser.messageManager.sendAsyncMessage("Tabmix:updateTitlefrombookmark");
} else {
try {
let doc = browser.contentDocument || browser.contentDocumentAsCPOW;
this.updateTitles(doc.defaultView.gGrid.cells);
} catch (ex) {
TabmixSvc.console.reportError(ex);
}
}
},
updateTitles: function(cells = []) {
cells.forEach(cell => {
let site = cell.site;
if (!site) {
return;
}
let enhancedTitle;
if (TabmixSvc.version(340)) {
let enhanced = gAllPages.enhanced &&
DirectoryLinksProvider.getEnhancedLink(site.link);
enhancedTitle = enhanced && enhanced.title;
}
let url = site.url;
let title, tooltip;
if (TabmixSvc.version(400)) {
let tabmixTitle = TabmixPlacesUtils.getTitleFromBookmark(url, site.title);
title = enhancedTitle ? enhancedTitle :
site.link.type == "history" ? site.link.baseDomain :
tabmixTitle;
tooltip = (tabmixTitle == url ? tabmixTitle : tabmixTitle + "\n" + url);
} else {
title = enhancedTitle ||
TabmixPlacesUtils.getTitleFromBookmark(url, site.title || url);
tooltip = (title == url ? title : title + "\n" + url);
}
let link = site._querySelector(".newtab-link");
link.setAttribute("title", tooltip);
site._querySelector(".newtab-title").textContent = title;
// Pale Moon dot't have a refreshThumbnail function
if (typeof site.refreshThumbnail == "function") {
site.refreshThumbnail();
}
});
},
};
|