From 49ee0794b5d912db1f95dce6eb52d781dc210db5 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 03:35:06 -0500 Subject: Add Pale Moon --- .../components/sessionstore/DocumentUtils.jsm | 230 + .../components/sessionstore/SessionStorage.jsm | 165 + .../components/sessionstore/SessionStore.jsm | 4733 ++++++++++++++++++++ .../components/sessionstore/XPathGenerator.jsm | 97 + .../components/sessionstore/_SessionFile.jsm | 311 ++ .../sessionstore/content/aboutSessionRestore.js | 317 ++ .../sessionstore/content/aboutSessionRestore.xhtml | 94 + .../sessionstore/content/content-sessionStore.js | 40 + .../palemoon/components/sessionstore/jar.mn | 8 + .../palemoon/components/sessionstore/moz.build | 31 + .../components/sessionstore/nsISessionStartup.idl | 59 + .../components/sessionstore/nsISessionStore.idl | 206 + .../components/sessionstore/nsSessionStartup.js | 291 ++ .../components/sessionstore/nsSessionStore.js | 37 + .../sessionstore/nsSessionStore.manifest | 18 + 15 files changed, 6637 insertions(+) create mode 100644 application/palemoon/components/sessionstore/DocumentUtils.jsm create mode 100644 application/palemoon/components/sessionstore/SessionStorage.jsm create mode 100644 application/palemoon/components/sessionstore/SessionStore.jsm create mode 100644 application/palemoon/components/sessionstore/XPathGenerator.jsm create mode 100644 application/palemoon/components/sessionstore/_SessionFile.jsm create mode 100644 application/palemoon/components/sessionstore/content/aboutSessionRestore.js create mode 100644 application/palemoon/components/sessionstore/content/aboutSessionRestore.xhtml create mode 100644 application/palemoon/components/sessionstore/content/content-sessionStore.js create mode 100644 application/palemoon/components/sessionstore/jar.mn create mode 100644 application/palemoon/components/sessionstore/moz.build create mode 100644 application/palemoon/components/sessionstore/nsISessionStartup.idl create mode 100644 application/palemoon/components/sessionstore/nsISessionStore.idl create mode 100644 application/palemoon/components/sessionstore/nsSessionStartup.js create mode 100644 application/palemoon/components/sessionstore/nsSessionStore.js create mode 100644 application/palemoon/components/sessionstore/nsSessionStore.manifest (limited to 'application/palemoon/components/sessionstore') diff --git a/application/palemoon/components/sessionstore/DocumentUtils.jsm b/application/palemoon/components/sessionstore/DocumentUtils.jsm new file mode 100644 index 000000000..6b3f729b5 --- /dev/null +++ b/application/palemoon/components/sessionstore/DocumentUtils.jsm @@ -0,0 +1,230 @@ +/* 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/. */ + +this.EXPORTED_SYMBOLS = [ "DocumentUtils" ]; + +const Cu = Components.utils; +const Ci = Components.interfaces; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource:///modules/sessionstore/XPathGenerator.jsm"); + +this.DocumentUtils = { + /** + * Obtain form data for a DOMDocument instance. + * + * The returned object has 2 keys, "id" and "xpath". Each key holds an object + * which further defines form data. + * + * The "id" object maps element IDs to values. The "xpath" object maps the + * XPath of an element to its value. + * + * @param aDocument + * DOMDocument instance to obtain form data for. + * @return object + * Form data encoded in an object. + */ + getFormData: function DocumentUtils_getFormData(aDocument) { + let formNodes = aDocument.evaluate( + XPathGenerator.restorableFormNodes, + aDocument, + XPathGenerator.resolveNS, + Ci.nsIDOMXPathResult.UNORDERED_NODE_ITERATOR_TYPE, null + ); + + let node; + let ret = {id: {}, xpath: {}}; + + // Limit the number of XPath expressions for performance reasons. See + // bug 477564. + const MAX_TRAVERSED_XPATHS = 100; + let generatedCount = 0; + + while (node = formNodes.iterateNext()) { + let nId = node.id; + let hasDefaultValue = true; + let value; + + // Only generate a limited number of XPath expressions for perf reasons + // (cf. bug 477564) + if (!nId && generatedCount > MAX_TRAVERSED_XPATHS) { + continue; + } + + if (node instanceof Ci.nsIDOMHTMLInputElement || + node instanceof Ci.nsIDOMHTMLTextAreaElement) { + switch (node.type) { + case "checkbox": + case "radio": + value = node.checked; + hasDefaultValue = value == node.defaultChecked; + break; + case "file": + value = { type: "file", fileList: node.mozGetFileNameArray() }; + hasDefaultValue = !value.fileList.length; + break; + default: // text, textarea + value = node.value; + hasDefaultValue = value == node.defaultValue; + break; + } + } else if (!node.multiple) { + // s with the multiple attribute are easier to determine the + // default value since each