summaryrefslogtreecommitdiffstats
path: root/toolkit/components/reader/JSDOMParser.js
diff options
context:
space:
mode:
authorNew Tobin Paradigm <email@mattatobin.com>2018-06-03 08:07:20 -0400
committerGitHub <noreply@github.com>2018-06-03 08:07:20 -0400
commit83394569a1e3c6a48a5c0dbd380a1a7cf741d17a (patch)
tree18933e3ecae894c3137b103694cc211dc1f4f2e2 /toolkit/components/reader/JSDOMParser.js
parentdd7046209e4e2e51f48e1499366692e7e8b78ff3 (diff)
parent984dad43ae49ba1cfa236af5567bf4c934e59263 (diff)
downloadUXP-83394569a1e3c6a48a5c0dbd380a1a7cf741d17a.tar
UXP-83394569a1e3c6a48a5c0dbd380a1a7cf741d17a.tar.gz
UXP-83394569a1e3c6a48a5c0dbd380a1a7cf741d17a.tar.lz
UXP-83394569a1e3c6a48a5c0dbd380a1a7cf741d17a.tar.xz
UXP-83394569a1e3c6a48a5c0dbd380a1a7cf741d17a.zip
Merge pull request #436 from Ascrod/readerview
Update Readability from mozilla-central release branch (FF 60.0).
Diffstat (limited to 'toolkit/components/reader/JSDOMParser.js')
-rw-r--r--toolkit/components/reader/JSDOMParser.js21
1 files changed, 18 insertions, 3 deletions
diff --git a/toolkit/components/reader/JSDOMParser.js b/toolkit/components/reader/JSDOMParser.js
index 38f59c4ea..dd9d37230 100644
--- a/toolkit/components/reader/JSDOMParser.js
+++ b/toolkit/components/reader/JSDOMParser.js
@@ -560,7 +560,8 @@
},
};
- var Document = function () {
+ var Document = function (url) {
+ this.documentURI = url;
this.styleSheets = [];
this.childNodes = [];
this.children = [];
@@ -600,6 +601,20 @@
node.textContent = text;
return node;
},
+
+ get baseURI() {
+ if (!this.hasOwnProperty("_baseURI")) {
+ this._baseURI = this.documentURI;
+ var baseElements = this.getElementsByTagName("base");
+ var href = baseElements[0] && baseElements[0].getAttribute("href");
+ if (href) {
+ try {
+ this._baseURI = (new URL(href, this._baseURI)).href;
+ } catch (ex) {/* Just fall back to documentURI */}
+ }
+ }
+ return this._baseURI;
+ },
};
var Element = function (tag) {
@@ -1118,9 +1133,9 @@
/**
* Parses an HTML string and returns a JS implementation of the Document.
*/
- parse: function (html) {
+ parse: function (html, url) {
this.html = html;
- var doc = this.doc = new Document();
+ var doc = this.doc = new Document(url);
this.readChildren(doc);
// If this is an HTML document, remove root-level children except for the