123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- var Cc = Components.classes;
- var Ci = Components.interfaces;
- var gProtocols = [];
- var gContainer;
- window.onload = function () {
- gContainer = document.getElementById("abouts");
- findAbouts();
- }
- function findAbouts() {
- var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
- for (var cid in Cc) {
- var result = cid.match(/@mozilla.org\/network\/protocol\/about;1\?what\=(.*)$/);
- if (result) {
- var aboutType = result[1];
- var contract = "@mozilla.org/network/protocol/about;1?what=" + aboutType;
- try {
- var am = Cc[contract].getService(Ci.nsIAboutModule);
- var uri = ios.newURI("about:"+aboutType, null, null);
- var flags = am.getURIFlags(uri);
- if (!(flags & Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT)) {
- gProtocols.push(aboutType);
- }
- } catch (e) {
- // getService might have thrown if the component doesn't actually
- // implement nsIAboutModule
- }
- }
- }
- gProtocols.sort().forEach(createProtocolListing);
- }
- function createProtocolListing(aProtocol) {
- var uri = "about:" + aProtocol;
- var li = document.createElement("li");
- var link = document.createElement("a");
- var text = document.createTextNode(uri);
- link.href = uri;
- link.appendChild(text);
- li.appendChild(link);
- gContainer.appendChild(li);
- }
|