You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.6 KiB
79 lines
2.6 KiB
/* This file overrides about:home. It does the following: |
|
* Remove the sync button if Sync is disabled |
|
* Remove the Addons button if Sync is disabled |
|
* Remove the snippets if snippets are disabled |
|
*/ |
|
|
|
const EXPORTED_SYMBOLS = []; |
|
|
|
const {classes: Cc, interfaces: Ci, utils: Cu} = Components; |
|
|
|
Cu.import("resource://gre/modules/Services.jsm"); |
|
|
|
var configs = null; |
|
|
|
var observer = { |
|
observe: function observe(subject, topic, data) { |
|
switch (topic) { |
|
case "content-document-global-created": |
|
var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow); |
|
win.addEventListener("load", function onLoad(event) { |
|
win.removeEventListener("load", onLoad, false); |
|
var doc = event.target; |
|
var url = doc.location.href.split("?")[0].split("#")[0]; |
|
switch (url) { |
|
case "about:home": |
|
case "chrome://browser/content/abouthome/aboutHome.xhtml": |
|
if (!configs) { |
|
// TODO - Make this Async |
|
configs = sendSyncMessage("cck2:get-configs")[0]; |
|
} |
|
for (let id in configs) { |
|
var config = configs[id]; |
|
if (config.disableSync) { |
|
remove(E("sync", doc)); |
|
} |
|
if (config.disableAddonsManager) { |
|
remove(E("addons", doc)); |
|
} |
|
if (config.disableWebApps) { |
|
remove(E("apps", doc)); |
|
} |
|
if (config.removeSnippets) { |
|
var snippets = E("snippets", doc); |
|
if (snippets) { |
|
snippets.style.display = "none"; |
|
} |
|
} |
|
if (config.hiddenUI) { |
|
for (var i=0; i < config.hiddenUI.length; i++) { |
|
var uiElements = doc.querySelectorAll(config.hiddenUI[i]); |
|
for (var j=0; j < uiElements.length; j++) { |
|
var uiElement = uiElements[j]; |
|
uiElement.setAttribute("hidden", "true"); |
|
} |
|
} |
|
} |
|
} |
|
break; |
|
} |
|
}, false); |
|
break; |
|
} |
|
} |
|
} |
|
Services.obs.addObserver(observer, "content-document-global-created", false); |
|
|
|
addEventListener("unload", function() { |
|
Services.obs.removeObserver(observer, "content-document-global-created", false); |
|
}) |
|
|
|
function E(id, context) { |
|
var element = context.getElementById(id); |
|
return element; |
|
} |
|
|
|
function remove(element) { |
|
if (element && element.parentNode) |
|
element.parentNode.removeChild(element); |
|
}
|
|
|