diff options
Diffstat (limited to 'application/basilisk/components/sessionstore/PageStyle.jsm')
-rw-r--r-- | application/basilisk/components/sessionstore/PageStyle.jsm | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/application/basilisk/components/sessionstore/PageStyle.jsm b/application/basilisk/components/sessionstore/PageStyle.jsm deleted file mode 100644 index 0424ef6b1..000000000 --- a/application/basilisk/components/sessionstore/PageStyle.jsm +++ /dev/null @@ -1,100 +0,0 @@ -/* 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"; - -this.EXPORTED_SYMBOLS = ["PageStyle"]; - -const Ci = Components.interfaces; - -/** - * The external API exported by this module. - */ -this.PageStyle = Object.freeze({ - collect: function (docShell, frameTree) { - return PageStyleInternal.collect(docShell, frameTree); - }, - - restoreTree: function (docShell, data) { - PageStyleInternal.restoreTree(docShell, data); - } -}); - -// Signifies that author style level is disabled for the page. -const NO_STYLE = "_nostyle"; - -var PageStyleInternal = { - /** - * Collects the selected style sheet sets for all reachable frames. - */ - collect: function (docShell, frameTree) { - let result = frameTree.map(({document: doc}) => { - let style; - - if (doc) { - // http://dev.w3.org/csswg/cssom/#persisting-the-selected-css-style-sheet-set - style = doc.selectedStyleSheetSet || doc.lastStyleSheetSet; - } - - return style ? {pageStyle: style} : null; - }); - - let markupDocumentViewer = - docShell.contentViewer; - - if (markupDocumentViewer.authorStyleDisabled) { - result = result || {}; - result.disabled = true; - } - - return result && Object.keys(result).length ? result : null; - }, - - /** - * Restores pageStyle data for the current frame hierarchy starting at the - * |docShell's| current DOMWindow using the given pageStyle |data|. - * - * Warning: If the current frame hierarchy doesn't match that of the given - * |data| object we will silently discard data for unreachable frames. We may - * as well assign page styles to the wrong frames if some were reordered or - * removed. - * - * @param docShell (nsIDocShell) - * @param data (object) - * { - * disabled: true, // when true, author styles will be disabled - * pageStyle: "Dusk", - * children: [ - * null, - * {pageStyle: "Mozilla", children: [ ... ]} - * ] - * } - */ - restoreTree: function (docShell, data) { - let disabled = data.disabled || false; - let markupDocumentViewer = - docShell.contentViewer; - markupDocumentViewer.authorStyleDisabled = disabled; - - function restoreFrame(root, data) { - if (data.hasOwnProperty("pageStyle")) { - root.document.selectedStyleSheetSet = data.pageStyle; - } - - if (!data.hasOwnProperty("children")) { - return; - } - - let frames = root.frames; - data.children.forEach((child, index) => { - if (child && index < frames.length) { - restoreFrame(frames[index], child); - } - }); - } - - let ifreq = docShell.QueryInterface(Ci.nsIInterfaceRequestor); - restoreFrame(ifreq.getInterface(Ci.nsIDOMWindow), data); - } -}; |