12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* 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/. */
- "use strict";
- module.metadata = {
- "stability": "experimental"
- };
- const { Cc, Ci } = require("chrome");
- const io = Cc['@mozilla.org/network/io-service;1'].
- getService(Ci.nsIIOService);
- const SHEET_TYPE = {
- "agent": "AGENT_SHEET",
- "user": "USER_SHEET",
- "author": "AUTHOR_SHEET"
- };
- function getDOMWindowUtils(window) {
- return window.QueryInterface(Ci.nsIInterfaceRequestor).
- getInterface(Ci.nsIDOMWindowUtils);
- };
- /**
- * Synchronously loads a style sheet from `uri` and adds it to the list of
- * additional style sheets of the document.
- * The sheets added takes effect immediately, and only on the document of the
- * `window` given.
- */
- function loadSheet(window, url, type) {
- if (!(type && type in SHEET_TYPE))
- type = "author";
- type = SHEET_TYPE[type];
- if (!(url instanceof Ci.nsIURI))
- url = io.newURI(url, null, null);
- let winUtils = getDOMWindowUtils(window);
- try {
- winUtils.loadSheet(url, winUtils[type]);
- }
- catch (e) {};
- };
- exports.loadSheet = loadSheet;
- /**
- * Remove the document style sheet at `sheetURI` from the list of additional
- * style sheets of the document. The removal takes effect immediately.
- */
- function removeSheet(window, url, type) {
- if (!(type && type in SHEET_TYPE))
- type = "author";
- type = SHEET_TYPE[type];
- if (!(url instanceof Ci.nsIURI))
- url = io.newURI(url, null, null);
- let winUtils = getDOMWindowUtils(window);
- try {
- winUtils.removeSheet(url, winUtils[type]);
- }
- catch (e) {};
- };
- exports.removeSheet = removeSheet;
- /**
- * Returns `true` if the `type` given is valid, otherwise `false`.
- * The values currently accepted are: "agent", "user" and "author".
- */
- function isTypeValid(type) {
- return type in SHEET_TYPE;
- }
- exports.isTypeValid = isTypeValid;
|