From cf09a889387eefba32bd4f68472418f8faf74168 Mon Sep 17 00:00:00 2001 From: adeshkp Date: Sat, 4 May 2019 09:51:45 -0400 Subject: [PATCH 01/16] De-unify accessibility build on Mac. Also fixes Linux build bustage with accessibility enabled. --- accessible/base/EventTree.cpp | 3 ++ accessible/base/Logging.cpp | 2 + accessible/base/NotificationController.cpp | 1 + accessible/base/moz.build | 2 +- accessible/base/nsCoreUtils.cpp | 1 + accessible/base/nsEventShell.cpp | 4 ++ accessible/mac/moz.build | 2 +- accessible/mac/mozAccessible.mm | 36 ------------------ accessible/mac/mozHTMLAccessible.mm | 2 + accessible/mac/mozTableAccessible.mm | 41 +++++++++++++++++++++ accessible/mac/mozTextAccessible.mm | 1 + accessible/xpcom/xpcAccessibleHyperText.cpp | 1 + 12 files changed, 58 insertions(+), 38 deletions(-) diff --git a/accessible/base/EventTree.cpp b/accessible/base/EventTree.cpp index cd4a07ba8d..e9867b3b58 100644 --- a/accessible/base/EventTree.cpp +++ b/accessible/base/EventTree.cpp @@ -8,6 +8,9 @@ #include "Accessible-inl.h" #include "nsEventShell.h" #include "DocAccessible.h" +#include "DocAccessible-inl.h" +#include "EmbeddedObjCollector.h" +#include "NotificationController.h" #ifdef A11Y_LOG #include "Logging.h" #endif diff --git a/accessible/base/Logging.cpp b/accessible/base/Logging.cpp index afc37ef85e..619af9e0a5 100644 --- a/accessible/base/Logging.cpp +++ b/accessible/base/Logging.cpp @@ -9,6 +9,7 @@ #include "Accessible-inl.h" #include "AccEvent.h" #include "DocAccessible.h" +#include "DocAccessible-inl.h" #include "nsAccessibilityService.h" #include "nsCoreUtils.h" #include "OuterDocAccessible.h" @@ -23,6 +24,7 @@ #include "nsIDocShellTreeItem.h" #include "nsIURI.h" #include "mozilla/dom/Element.h" +#include "mozilla/dom/HTMLBodyElement.h" using namespace mozilla; using namespace mozilla::a11y; diff --git a/accessible/base/NotificationController.cpp b/accessible/base/NotificationController.cpp index 3545ce6c17..22d121d8d3 100644 --- a/accessible/base/NotificationController.cpp +++ b/accessible/base/NotificationController.cpp @@ -16,6 +16,7 @@ using namespace mozilla; using namespace mozilla::a11y; +using namespace mozilla::dom; //////////////////////////////////////////////////////////////////////////////// // NotificationCollector diff --git a/accessible/base/moz.build b/accessible/base/moz.build index dcccc4b54c..d2f5ba630c 100644 --- a/accessible/base/moz.build +++ b/accessible/base/moz.build @@ -55,7 +55,7 @@ UNIFIED_SOURCES += [ ] if CONFIG['A11Y_LOG']: - UNIFIED_SOURCES += [ + SOURCES += [ 'Logging.cpp', ] diff --git a/accessible/base/nsCoreUtils.cpp b/accessible/base/nsCoreUtils.cpp index 89823b2230..5328c43ffa 100644 --- a/accessible/base/nsCoreUtils.cpp +++ b/accessible/base/nsCoreUtils.cpp @@ -9,6 +9,7 @@ #include "nsIBaseWindow.h" #include "nsIDocShellTreeOwner.h" +#include "nsIContentInlines.h" #include "nsIDocument.h" #include "nsIDOMHTMLDocument.h" #include "nsIDOMHTMLElement.h" diff --git a/accessible/base/nsEventShell.cpp b/accessible/base/nsEventShell.cpp index e070acee5c..00e4e9b896 100644 --- a/accessible/base/nsEventShell.cpp +++ b/accessible/base/nsEventShell.cpp @@ -9,6 +9,10 @@ #include "mozilla/StaticPtr.h" +#ifdef A11Y_LOG +#include "Logging.h" +#endif + using namespace mozilla; using namespace mozilla::a11y; diff --git a/accessible/mac/moz.build b/accessible/mac/moz.build index a8f07c48b2..1ead3d8f68 100644 --- a/accessible/mac/moz.build +++ b/accessible/mac/moz.build @@ -13,7 +13,7 @@ EXPORTS.mozilla.a11y += [ 'HyperTextAccessibleWrap.h', ] -UNIFIED_SOURCES += [ +SOURCES += [ 'AccessibleWrap.mm', 'DocAccessibleWrap.mm', 'MacUtils.mm', diff --git a/accessible/mac/mozAccessible.mm b/accessible/mac/mozAccessible.mm index e1cdba6948..07868fea67 100644 --- a/accessible/mac/mozAccessible.mm +++ b/accessible/mac/mozAccessible.mm @@ -49,42 +49,6 @@ using namespace mozilla::a11y; // - NSAccessibilityMathPrescriptsAttribute @"AXMathPrescripts" // - NSAccessibilityMathPostscriptsAttribute @"AXMathPostscripts" -// convert an array of Gecko accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - Accessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromGeckoAccessible(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - -// convert an array of Gecko proxy accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - ProxyAccessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromProxy(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - #pragma mark - @implementation mozAccessible diff --git a/accessible/mac/mozHTMLAccessible.mm b/accessible/mac/mozHTMLAccessible.mm index 6c49255897..2079a4aa6b 100644 --- a/accessible/mac/mozHTMLAccessible.mm +++ b/accessible/mac/mozHTMLAccessible.mm @@ -12,6 +12,8 @@ #import "nsCocoaUtils.h" +using namespace mozilla::a11y; + @implementation mozHeadingAccessible - (NSString*)title diff --git a/accessible/mac/mozTableAccessible.mm b/accessible/mac/mozTableAccessible.mm index a3612e5bc3..6ad157b9f0 100644 --- a/accessible/mac/mozTableAccessible.mm +++ b/accessible/mac/mozTableAccessible.mm @@ -5,9 +5,50 @@ * 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/. */ +#import "Accessible-inl.h" #import "mozTableAccessible.h" +#import "TableAccessible.h" +#import "TableCellAccessible.h" #import "nsCocoaUtils.h" +using namespace mozilla::a11y; + +// convert an array of Gecko accessibles to an NSArray of native accessibles +static inline NSMutableArray* +ConvertToNSArray(nsTArray& aArray) +{ + NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; + + // iterate through the list, and get each native accessible. + size_t totalCount = aArray.Length(); + for (size_t i = 0; i < totalCount; i++) { + Accessible* curAccessible = aArray.ElementAt(i); + mozAccessible* curNative = GetNativeFromGeckoAccessible(curAccessible); + if (curNative) + [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; + } + + return nativeArray; +} + +// convert an array of Gecko proxy accessibles to an NSArray of native accessibles +static inline NSMutableArray* +ConvertToNSArray(nsTArray& aArray) +{ + NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; + + // iterate through the list, and get each native accessible. + size_t totalCount = aArray.Length(); + for (size_t i = 0; i < totalCount; i++) { + ProxyAccessible* curAccessible = aArray.ElementAt(i); + mozAccessible* curNative = GetNativeFromProxy(curAccessible); + if (curNative) + [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; + } + + return nativeArray; +} + @implementation mozTablePartAccessible - (BOOL)isLayoutTablePart; { diff --git a/accessible/mac/mozTextAccessible.mm b/accessible/mac/mozTextAccessible.mm index 0909cd5129..1f433b802e 100644 --- a/accessible/mac/mozTextAccessible.mm +++ b/accessible/mac/mozTextAccessible.mm @@ -12,6 +12,7 @@ #import "mozTextAccessible.h" +using namespace mozilla; using namespace mozilla::a11y; inline bool diff --git a/accessible/xpcom/xpcAccessibleHyperText.cpp b/accessible/xpcom/xpcAccessibleHyperText.cpp index b31544ac7f..4b6f32e932 100644 --- a/accessible/xpcom/xpcAccessibleHyperText.cpp +++ b/accessible/xpcom/xpcAccessibleHyperText.cpp @@ -7,6 +7,7 @@ #include "xpcAccessibleHyperText.h" #include "Accessible-inl.h" +#include "mozilla/a11y/DocAccessibleParent.h" #include "HyperTextAccessible-inl.h" #include "TextRange.h" #include "xpcAccessibleDocument.h" From abb71ced515843ae33aa61472c426ded147783c5 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sat, 4 May 2019 18:37:35 +0200 Subject: [PATCH 02/16] Update icon to the new and improved branding. Many thanks to "browser tech" and "CharmCityCrab" on the forum for suggesting the elements that make up this much improved design! --- .../palemoon/branding/official/firefox.ico | Bin 105959 -> 107919 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/application/palemoon/branding/official/firefox.ico b/application/palemoon/branding/official/firefox.ico index 33bb04e99a7dd917037ace97ebd742d7d0ed56da..0f55f0ba5e7f49e50886d308cf28456aab43e2e4 100644 GIT binary patch literal 107919 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 _w`=kB2D`EZp&-OniI>K4h@>AW>0pB;}70<1% zXr7Mdw0iOM@^*^!D%f{m(UxaJLf;akq<< Wakq1lc8AXS>p|Dhwe%VK?EeGQKIkd{ literal 105959 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≈_1Sd59? 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

-EEh{G7{0_~Tw{jTPO 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 JGk<{w@Lyc!2CM)8 From 6aaf25cc5bfde4e048c8654ef257ecb717c61d2d Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Sat, 4 May 2019 18:42:29 -0400 Subject: [PATCH 03/16] backport m-c 1510114: Fix Use-After-Free in the HTML5 Parser Fixes #1076 --- parser/html/nsHtml5TreeOpExecutor.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp index 4684496985..5c3f32d6fb 100644 --- a/parser/html/nsHtml5TreeOpExecutor.cpp +++ b/parser/html/nsHtml5TreeOpExecutor.cpp @@ -351,6 +351,12 @@ nsHtml5TreeOpExecutor::RunFlushLoop() nsHtml5FlushLoopGuard guard(this); // this is also the self-kungfu! RefPtr parserKungFuDeathGrip(mParser); + RefPtr streamParserGrip; + if (mParser) { + streamParserGrip = GetParser()->GetStreamParser(); + } + mozilla::Unused + << streamParserGrip; // Intentionally not used within function // Remember the entry time (void) nsContentSink::WillParseImpl(); @@ -409,11 +415,6 @@ nsHtml5TreeOpExecutor::RunFlushLoop() mOpQueue.Clear(); // clear in order to be able to assert in destructor return; } - // Not sure if this grip is still needed, but previously, the code - // gripped before calling ParseUntilBlocked(); - RefPtr streamKungFuDeathGrip = - GetParser()->GetStreamParser(); - mozilla::Unused << streamKungFuDeathGrip; // Not used within function // Now parse content left in the document.write() buffer queue if any. // This may generate tree ops on its own or dequeue a speculation. nsresult rv = GetParser()->ParseUntilBlocked(); @@ -529,6 +530,12 @@ nsHtml5TreeOpExecutor::FlushDocumentWrite() RefPtr kungFuDeathGrip(this); RefPtr parserKungFuDeathGrip(mParser); mozilla::Unused << parserKungFuDeathGrip; // Intentionally not used within function + RefPtr streamParserGrip; + if (mParser) { + streamParserGrip = GetParser()->GetStreamParser(); + } + mozilla::Unused + << streamParserGrip; // Intentionally not used within function NS_ASSERTION(!mReadingFromStage, "Got doc write flush when reading from stage"); From 0fbf7787325c41ad944f75946758a68c1af815cb Mon Sep 17 00:00:00 2001 From: Ryan C Date: Sat, 4 May 2019 20:02:38 +0100 Subject: [PATCH 04/16] Don't shrink the tab bar in customize mode --- application/palemoon/themes/linux/browser.css | 2 +- application/palemoon/themes/osx/browser.css | 2 +- application/palemoon/themes/windows/browser.css | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/palemoon/themes/linux/browser.css b/application/palemoon/themes/linux/browser.css index 01b3f5c9e5..4933b40690 100644 --- a/application/palemoon/themes/linux/browser.css +++ b/application/palemoon/themes/linux/browser.css @@ -1608,7 +1608,7 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- } /* When the tab bar is collapsed, show a 1px border in its place. */ -#TabsToolbar[tabsontop="false"][collapsed="true"] { +#TabsToolbar[tabsontop="false"][collapsed="true"]:not([customizing="true"]) { visibility: visible; height: 1px; border-bottom-width: 1px; diff --git a/application/palemoon/themes/osx/browser.css b/application/palemoon/themes/osx/browser.css index 6d0d92015b..20e453d11c 100644 --- a/application/palemoon/themes/osx/browser.css +++ b/application/palemoon/themes/osx/browser.css @@ -1631,7 +1631,7 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url- } /* When the tab bar is collapsed, show a 1px border in its place. */ -#TabsToolbar[tabsontop="false"][collapsed="true"] { +#TabsToolbar[tabsontop="false"][collapsed="true"]:not([customizing="true"]) { visibility: visible; height: 1px; border-bottom-width: 1px; diff --git a/application/palemoon/themes/windows/browser.css b/application/palemoon/themes/windows/browser.css index 9f32b59cf9..88c3087ae0 100644 --- a/application/palemoon/themes/windows/browser.css +++ b/application/palemoon/themes/windows/browser.css @@ -1844,7 +1844,7 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action- } /* When the tab bar is collapsed, show a 1px border in its place. */ -#TabsToolbar[tabsontop="false"][collapsed="true"] { +#TabsToolbar[tabsontop="false"][collapsed="true"]:not([customizing="true"]) { visibility: visible; height: 1px; border-bottom-width: 1px; From 5252a0779ac853907be73bb570a8b66acbc3a321 Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Tue, 23 Apr 2019 17:41:09 -0400 Subject: [PATCH 05/16] Update Readability from mozilla-central release branch (FF 66.0.3). Tag #361. --- toolkit/components/reader/JSDOMParser.js | 8 +- .../reader/Readability-readerable.js | 104 +++++++ toolkit/components/reader/Readability.js | 293 ++++++++---------- 3 files changed, 237 insertions(+), 168 deletions(-) create mode 100644 toolkit/components/reader/Readability-readerable.js diff --git a/toolkit/components/reader/JSDOMParser.js b/toolkit/components/reader/JSDOMParser.js index debdb08eb5..ab2f503e1f 100644 --- a/toolkit/components/reader/JSDOMParser.js +++ b/toolkit/components/reader/JSDOMParser.js @@ -691,7 +691,7 @@ // the attribute value will be HTML escaped. var val = attr.value; var quote = (val.indexOf('"') === -1 ? '"' : "'"); - arr.push(" " + attr.name + '=' + quote + val + quote); + arr.push(" " + attr.name + "=" + quote + val + quote); } if (child.localName in voidElems && !child.childNodes.length) { @@ -970,7 +970,7 @@ strBuf.push(c); c = this.nextChar(); } - var tag = strBuf.join(''); + var tag = strBuf.join(""); if (!tag) return false; @@ -981,7 +981,9 @@ while (c !== "/" && c !== ">") { if (c === undefined) return false; - while (whitespace.indexOf(this.html[this.currentChar++]) != -1); + while (whitespace.indexOf(this.html[this.currentChar++]) != -1) { + // Advance cursor to first non-whitespace char. + } this.currentChar--; c = this.nextChar(); if (c !== "/" && c !== ">") { diff --git a/toolkit/components/reader/Readability-readerable.js b/toolkit/components/reader/Readability-readerable.js new file mode 100644 index 0000000000..d0e1b8164a --- /dev/null +++ b/toolkit/components/reader/Readability-readerable.js @@ -0,0 +1,104 @@ +/* eslint-env es6:false */ +/* globals exports */ +/* + * DO NOT MODIFY THIS FILE DIRECTLY! + * + * This is a shared library that is maintained in an external repo: + * https://github.com/mozilla/readability + */ + +/* + * Copyright (c) 2010 Arc90 Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This code is heavily based on Arc90's readability.js (1.7.1) script + * available at: http://code.google.com/p/arc90labs-readability + */ + +var REGEXPS = { + // NOTE: These two regular expressions are duplicated in + // Readability.js. Please keep both copies in sync. + unlikelyCandidates: /-ad-|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|foot|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i, + okMaybeItsACandidate: /and|article|body|column|main|shadow/i, +}; + +function isNodeVisible(node) { + // Have to null-check node.style to deal with SVG and MathML nodes. + return (!node.style || node.style.display != "none") && !node.hasAttribute("hidden"); +} + +/** + * Decides whether or not the document is reader-able without parsing the whole thing. + * + * @return boolean Whether or not we suspect Readability.parse() will suceeed at returning an article object. + */ +function isProbablyReaderable(doc, isVisible) { + if (!isVisible) { + isVisible = isNodeVisible; + } + + var nodes = doc.querySelectorAll("p, pre"); + + // Get

nodes which have
node(s) and append them into the `nodes` variable. + // Some articles' DOM structures might look like + //
+ // Sentences
+ //
+ // Sentences
+ //
+ var brNodes = doc.querySelectorAll("div > br"); + if (brNodes.length) { + var set = new Set(nodes); + [].forEach.call(brNodes, function(node) { + set.add(node.parentNode); + }); + nodes = Array.from(set); + } + + var score = 0; + // This is a little cheeky, we use the accumulator 'score' to decide what to return from + // this callback: + return [].some.call(nodes, function(node) { + if (!isVisible(node)) + return false; + + var matchString = node.className + " " + node.id; + if (REGEXPS.unlikelyCandidates.test(matchString) && + !REGEXPS.okMaybeItsACandidate.test(matchString)) { + return false; + } + + if (node.matches("li p")) { + return false; + } + + var textContentLength = node.textContent.trim().length; + if (textContentLength < 140) { + return false; + } + + score += Math.sqrt(textContentLength - 140); + + if (score > 20) { + return true; + } + return false; + }); +} + +if (typeof exports === "object") { + exports.isProbablyReaderable = isProbablyReaderable; +} diff --git a/toolkit/components/reader/Readability.js b/toolkit/components/reader/Readability.js index c2bba0cd3a..69fb53f868 100644 --- a/toolkit/components/reader/Readability.js +++ b/toolkit/components/reader/Readability.js @@ -46,6 +46,7 @@ function Readability(doc, options) { this._articleTitle = null; this._articleByline = null; this._articleDir = null; + this._articleSiteName = null; this._attempts = []; // Configurable options @@ -118,15 +119,18 @@ Readability.prototype = { // All of the regular expressions in use within readability. // Defined up here so we don't instantiate them repeatedly in loops. REGEXPS: { + // NOTE: These two regular expressions are duplicated in + // Readability-readerable.js. Please keep both copies in sync. unlikelyCandidates: /-ad-|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|foot|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i, okMaybeItsACandidate: /and|article|body|column|main|shadow/i, + positive: /article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story/i, negative: /hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|foot|footer|footnote|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget/i, extraneous: /print|archive|comment|discuss|e[\-]?mail|share|reply|all|login|sign|single|utility/i, byline: /byline|author|dateline|writtenby|p-author/i, replaceFonts: /<(\/?)font[^>]*>/gi, normalize: /\s{2,}/g, - videos: /\/\/(www\.)?(dailymotion|youtube|youtube-nocookie|player\.vimeo)\.com/i, + videos: /\/\/(www\.)?((dailymotion|youtube|youtube-nocookie|player\.vimeo|v\.qq)\.com|(archive|upload\.wikimedia)\.org|player\.twitch\.tv)/i, nextLink: /(next|weiter|continue|>([^\|]|$)|»([^\|]|$))/i, prevLink: /(prev|earl|old|new|<|«)/i, whitespace: /^\s*$/, @@ -267,7 +271,7 @@ Readability.prototype = { _getAllNodesWithTag: function(node, tagNames) { if (node.querySelectorAll) { - return node.querySelectorAll(tagNames.join(',')); + return node.querySelectorAll(tagNames.join(",")); } return [].concat.apply([], tagNames.map(function(tag) { var collection = node.getElementsByTagName(tag); @@ -327,7 +331,7 @@ Readability.prototype = { return uri; } - var links = articleContent.getElementsByTagName("a"); + var links = this._getAllNodesWithTag(articleContent, ["a"]); this._forEachNode(links, function(link) { var href = link.getAttribute("href"); if (href) { @@ -342,7 +346,7 @@ Readability.prototype = { } }); - var imgs = articleContent.getElementsByTagName("img"); + var imgs = this._getAllNodesWithTag(articleContent, ["img"]); this._forEachNode(imgs, function(img) { var src = img.getAttribute("src"); if (src) { @@ -366,7 +370,7 @@ Readability.prototype = { // If they had an element with id "title" in their HTML if (typeof curTitle !== "string") - curTitle = origTitle = this._getInnerText(doc.getElementsByTagName('title')[0]); + curTitle = origTitle = this._getInnerText(doc.getElementsByTagName("title")[0]); } catch (e) {/* ignore exceptions setting the title. */} var titleHadHierarchicalSeparators = false; @@ -377,18 +381,18 @@ Readability.prototype = { // If there's a separator in the title, first remove the final part if ((/ [\|\-\\\/>»] /).test(curTitle)) { titleHadHierarchicalSeparators = / [\\\/>»] /.test(curTitle); - curTitle = origTitle.replace(/(.*)[\|\-\\\/>»] .*/gi, '$1'); + curTitle = origTitle.replace(/(.*)[\|\-\\\/>»] .*/gi, "$1"); // If the resulting title is too short (3 words or fewer), remove // the first part instead: if (wordCount(curTitle) < 3) - curTitle = origTitle.replace(/[^\|\-\\\/>»]*[\|\-\\\/>»](.*)/gi, '$1'); - } else if (curTitle.indexOf(': ') !== -1) { + curTitle = origTitle.replace(/[^\|\-\\\/>»]*[\|\-\\\/>»](.*)/gi, "$1"); + } else if (curTitle.indexOf(": ") !== -1) { // Check if we have an heading containing this exact string, so we // could assume it's the full title. var headings = this._concatNodeLists( - doc.getElementsByTagName('h1'), - doc.getElementsByTagName('h2') + doc.getElementsByTagName("h1"), + doc.getElementsByTagName("h2") ); var trimmedTitle = curTitle.trim(); var match = this._someNode(headings, function(heading) { @@ -397,25 +401,25 @@ Readability.prototype = { // If we don't, let's extract the title out of the original title string. if (!match) { - curTitle = origTitle.substring(origTitle.lastIndexOf(':') + 1); + curTitle = origTitle.substring(origTitle.lastIndexOf(":") + 1); // If the title is now too short, try the first colon instead: if (wordCount(curTitle) < 3) { - curTitle = origTitle.substring(origTitle.indexOf(':') + 1); + curTitle = origTitle.substring(origTitle.indexOf(":") + 1); // But if we have too many words before the colon there's something weird // with the titles and the H tags so let's just use the original title instead - } else if (wordCount(origTitle.substr(0, origTitle.indexOf(':'))) > 5) { + } else if (wordCount(origTitle.substr(0, origTitle.indexOf(":"))) > 5) { curTitle = origTitle; } } } else if (curTitle.length > 150 || curTitle.length < 15) { - var hOnes = doc.getElementsByTagName('h1'); + var hOnes = doc.getElementsByTagName("h1"); if (hOnes.length === 1) curTitle = this._getInnerText(hOnes[0]); } - curTitle = curTitle.trim(); + curTitle = curTitle.trim().replace(this.REGEXPS.normalize, " "); // If we now have 4 words or fewer as our title, and either no // 'hierarchical' separators (\, /, > or ») were found in the original // title or we decreased the number of words by more than 1 word, use @@ -505,7 +509,8 @@ Readability.prototype = { break; } - if (!this._isPhrasingContent(next)) break; + if (!this._isPhrasingContent(next)) + break; // Otherwise, make this node a child of the new

. var sibling = next.nextSibling; @@ -513,9 +518,12 @@ Readability.prototype = { next = sibling; } - while (p.lastChild && this._isWhitespace(p.lastChild)) p.removeChild(p.lastChild); + while (p.lastChild && this._isWhitespace(p.lastChild)) { + p.removeChild(p.lastChild); + } - if (p.parentNode.tagName === "P") this._setNodeTag(p.parentNode, "DIV"); + if (p.parentNode.tagName === "P") + this._setNodeTag(p.parentNode, "DIV"); } }); }, @@ -576,7 +584,7 @@ Readability.prototype = { // If there is only one h2 and its text content substantially equals article title, // they are probably using it as a header and not a subheader, // so remove it since we already extract the title separately. - var h2 = articleContent.getElementsByTagName('h2'); + var h2 = articleContent.getElementsByTagName("h2"); if (h2.length === 1) { var lengthSimilarRate = (h2[0].textContent.length - this._articleTitle.length) / this._articleTitle.length; if (Math.abs(lengthSimilarRate) < 0.5) { @@ -606,12 +614,12 @@ Readability.prototype = { this._cleanConditionally(articleContent, "div"); // Remove extra paragraphs - this._removeNodes(articleContent.getElementsByTagName('p'), function (paragraph) { - var imgCount = paragraph.getElementsByTagName('img').length; - var embedCount = paragraph.getElementsByTagName('embed').length; - var objectCount = paragraph.getElementsByTagName('object').length; + this._removeNodes(articleContent.getElementsByTagName("p"), function (paragraph) { + var imgCount = paragraph.getElementsByTagName("img").length; + var embedCount = paragraph.getElementsByTagName("embed").length; + var objectCount = paragraph.getElementsByTagName("object").length; // At this point, nasty iframes have been removed, only remain embedded video ones. - var iframeCount = paragraph.getElementsByTagName('iframe').length; + var iframeCount = paragraph.getElementsByTagName("iframe").length; var totalCount = imgCount + embedCount + objectCount + iframeCount; return totalCount === 0 && !this._getInnerText(paragraph, false); @@ -648,34 +656,34 @@ Readability.prototype = { node.readability = {"contentScore": 0}; switch (node.tagName) { - case 'DIV': + case "DIV": node.readability.contentScore += 5; break; - case 'PRE': - case 'TD': - case 'BLOCKQUOTE': + case "PRE": + case "TD": + case "BLOCKQUOTE": node.readability.contentScore += 3; break; - case 'ADDRESS': - case 'OL': - case 'UL': - case 'DL': - case 'DD': - case 'DT': - case 'LI': - case 'FORM': + case "ADDRESS": + case "OL": + case "UL": + case "DL": + case "DD": + case "DT": + case "LI": + case "FORM": node.readability.contentScore -= 3; break; - case 'H1': - case 'H2': - case 'H3': - case 'H4': - case 'H5': - case 'H6': - case 'TH': + case "H1": + case "H2": + case "H3": + case "H4": + case "H5": + case "H6": + case "TH": node.readability.contentScore -= 5; break; } @@ -824,12 +832,14 @@ Readability.prototype = { if (p !== null) { p.appendChild(childNode); } else if (!this._isWhitespace(childNode)) { - p = doc.createElement('p'); + p = doc.createElement("p"); node.replaceChild(p, childNode); p.appendChild(childNode); } } else if (p !== null) { - while (p.lastChild && this._isWhitespace(p.lastChild)) p.removeChild(p.lastChild); + while (p.lastChild && this._isWhitespace(p.lastChild)) { + p.removeChild(p.lastChild); + } p = null; } childNode = nextSibling; @@ -860,7 +870,7 @@ Readability.prototype = { **/ var candidates = []; this._forEachNode(elementsToScore, function(elementToScore) { - if (!elementToScore.parentNode || typeof(elementToScore.parentNode.tagName) === 'undefined') + if (!elementToScore.parentNode || typeof(elementToScore.parentNode.tagName) === "undefined") return; // If this paragraph is less than 25 characters, don't even count it. @@ -879,17 +889,17 @@ Readability.prototype = { contentScore += 1; // Add points for any commas within this paragraph. - contentScore += innerText.split(',').length; + contentScore += innerText.split(",").length; // For every 100 characters in this paragraph, add another point. Up to 3 points. contentScore += Math.min(Math.floor(innerText.length / 100), 3); // Initialize and score ancestors. this._forEachNode(ancestors, function(ancestor, level) { - if (!ancestor.tagName || !ancestor.parentNode || typeof(ancestor.parentNode.tagName) === 'undefined') + if (!ancestor.tagName || !ancestor.parentNode || typeof(ancestor.parentNode.tagName) === "undefined") return; - if (typeof(ancestor.readability) === 'undefined') { + if (typeof(ancestor.readability) === "undefined") { this._initializeNode(ancestor); candidates.push(ancestor); } @@ -920,7 +930,7 @@ Readability.prototype = { var candidateScore = candidate.readability.contentScore * (1 - this._getLinkDensity(candidate)); candidate.readability.contentScore = candidateScore; - this.log('Candidate:', candidate, "with score " + candidateScore); + this.log("Candidate:", candidate, "with score " + candidateScore); for (var t = 0; t < this._nbTopCandidates; t++) { var aTopCandidate = topCandidates[t]; @@ -1039,8 +1049,8 @@ Readability.prototype = { var sibling = siblings[s]; var append = false; - this.log("Looking at sibling node:", sibling, sibling.readability ? ("with score " + sibling.readability.contentScore) : ''); - this.log("Sibling has score", sibling.readability ? sibling.readability.contentScore : 'Unknown'); + this.log("Looking at sibling node:", sibling, sibling.readability ? ("with score " + sibling.readability.contentScore) : ""); + this.log("Sibling has score", sibling.readability ? sibling.readability.contentScore : "Unknown"); if (sibling === topCandidate) { append = true; @@ -1074,7 +1084,7 @@ Readability.prototype = { if (this.ALTER_TO_DIV_EXCEPTIONS.indexOf(sibling.nodeName) === -1) { // We have a node that isn't a common block level element, like a form or td tag. // Turn it into a div so it doesn't get filtered out later by accident. - this.log("Altering sibling:", sibling, 'to div.'); + this.log("Altering sibling:", sibling, "to div."); sibling = this._setNodeTag(sibling, "DIV"); } @@ -1142,7 +1152,7 @@ Readability.prototype = { this._attempts.push({articleContent: articleContent, textLength: textLength}); // No luck after removing flags, just return the longest text we found during the different loops this._attempts.sort(function (a, b) { - return a.textLength < b.textLength; + return b.textLength - a.textLength; }); // But first check if we actually have something @@ -1182,7 +1192,7 @@ Readability.prototype = { * @return Boolean - whether the input string is a byline. */ _isValidByline: function(byline) { - if (typeof byline == 'string' || byline instanceof String) { + if (typeof byline == "string" || byline instanceof String) { byline = byline.trim(); return (byline.length > 0) && (byline.length < 100); } @@ -1199,61 +1209,72 @@ Readability.prototype = { var values = {}; var metaElements = this._doc.getElementsByTagName("meta"); - // Match "description", or Twitter's "twitter:description" (Cards) - // in name attribute. - var namePattern = /^\s*((twitter)\s*:\s*)?(description|title)\s*$/gi; + // property is a space-separated list of values + var propertyPattern = /\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|site_name)\s*/gi; - // Match Facebook's Open Graph title & description properties. - var propertyPattern = /^\s*og\s*:\s*(description|title)\s*$/gi; + // name is a single value + var namePattern = /^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|site_name)\s*$/i; // Find description tags. this._forEachNode(metaElements, function(element) { var elementName = element.getAttribute("name"); var elementProperty = element.getAttribute("property"); - - if ([elementName, elementProperty].indexOf("author") !== -1) { - metadata.byline = element.getAttribute("content"); - return; - } - + var content = element.getAttribute("content"); + var matches = null; var name = null; - if (namePattern.test(elementName)) { - name = elementName; - } else if (propertyPattern.test(elementProperty)) { - name = elementProperty; - } - if (name) { - var content = element.getAttribute("content"); + if (elementProperty) { + matches = elementProperty.match(propertyPattern); + if (matches) { + for (var i = matches.length - 1; i >= 0; i--) { + // Convert to lowercase, and remove any whitespace + // so we can match below. + name = matches[i].toLowerCase().replace(/\s/g, ""); + // multiple authors + values[name] = content.trim(); + } + } + } + if (!matches && elementName && namePattern.test(elementName)) { + name = elementName; if (content) { - // Convert to lowercase and remove any whitespace - // so we can match below. - name = name.toLowerCase().replace(/\s/g, ''); + // Convert to lowercase, remove any whitespace, and convert dots + // to colons so we can match below. + name = name.toLowerCase().replace(/\s/g, "").replace(/\./g, ":"); values[name] = content.trim(); } } }); - if ("description" in values) { - metadata.excerpt = values["description"]; - } else if ("og:description" in values) { - // Use facebook open graph description. - metadata.excerpt = values["og:description"]; - } else if ("twitter:description" in values) { - // Use twitter cards description. - metadata.excerpt = values["twitter:description"]; + // get title + metadata.title = values["dc:title"] || + values["dcterm:title"] || + values["og:title"] || + values["weibo:article:title"] || + values["weibo:webpage:title"] || + values["title"] || + values["twitter:title"]; + + if (!metadata.title) { + metadata.title = this._getArticleTitle(); } - metadata.title = this._getArticleTitle(); - if (!metadata.title) { - if ("og:title" in values) { - // Use facebook open graph title. - metadata.title = values["og:title"]; - } else if ("twitter:title" in values) { - // Use twitter cards title. - metadata.title = values["twitter:title"]; - } - } + // get author + metadata.byline = values["dc:creator"] || + values["dcterm:creator"] || + values["author"]; + + // get description + metadata.excerpt = values["dc:description"] || + values["dcterm:description"] || + values["og:description"] || + values["weibo:article:description"] || + values["weibo:webpage:description"] || + values["description"] || + values["twitter:description"]; + + // get site name + metadata.siteName = values["og:site_name"]; return metadata; }, @@ -1264,12 +1285,12 @@ Readability.prototype = { * @param Element **/ _removeScripts: function(doc) { - this._removeNodes(doc.getElementsByTagName('script'), function(scriptNode) { + this._removeNodes(doc.getElementsByTagName("script"), function(scriptNode) { scriptNode.nodeValue = ""; - scriptNode.removeAttribute('src'); + scriptNode.removeAttribute("src"); return true; }); - this._removeNodes(doc.getElementsByTagName('noscript')); + this._removeNodes(doc.getElementsByTagName("noscript")); }, /** @@ -1336,7 +1357,7 @@ Readability.prototype = { * @return string **/ _getInnerText: function(e, normalizeSpaces) { - normalizeSpaces = (typeof normalizeSpaces === 'undefined') ? true : normalizeSpaces; + normalizeSpaces = (typeof normalizeSpaces === "undefined") ? true : normalizeSpaces; var textContent = e.textContent.trim(); if (normalizeSpaces) { @@ -1365,7 +1386,7 @@ Readability.prototype = { * @return void **/ _cleanStyles: function(e) { - if (!e || e.tagName.toLowerCase() === 'svg') + if (!e || e.tagName.toLowerCase() === "svg") return; // Remove `style` and deprecated presentational attributes @@ -1374,8 +1395,8 @@ Readability.prototype = { } if (this.DEPRECATED_SIZE_ATTRIBUTE_ELEMS.indexOf(e.tagName) !== -1) { - e.removeAttribute('width'); - e.removeAttribute('height'); + e.removeAttribute("width"); + e.removeAttribute("height"); } var cur = e.firstElementChild; @@ -1421,7 +1442,7 @@ Readability.prototype = { var weight = 0; // Look for a special classname - if (typeof(e.className) === 'string' && e.className !== '') { + if (typeof(e.className) === "string" && e.className !== "") { if (this.REGEXPS.negative.test(e.className)) weight -= 25; @@ -1430,7 +1451,7 @@ Readability.prototype = { } // Look for a special ID - if (typeof(e.id) === 'string' && e.id !== '') { + if (typeof(e.id) === "string" && e.id !== "") { if (this.REGEXPS.negative.test(e.id)) weight -= 25; @@ -1619,7 +1640,7 @@ Readability.prototype = { return true; } - if (this._getCharCount(node, ',') < 10) { + if (this._getCharCount(node, ",") < 10) { // If there are not very many commas, and the number of // non-paragraph elements is more than paragraphs or other // ominous signs, remove the element. @@ -1679,7 +1700,7 @@ Readability.prototype = { **/ _cleanHeaders: function(e) { for (var headerIndex = 1; headerIndex < 3; headerIndex += 1) { - this._removeNodes(e.getElementsByTagName('h' + headerIndex), function (header) { + this._removeNodes(e.getElementsByTagName("h" + headerIndex), function (header) { return this._getClassWeight(header) < 0; }); } @@ -1694,66 +1715,7 @@ Readability.prototype = { }, _isProbablyVisible: function(node) { - return node.style.display != "none" && !node.hasAttribute("hidden"); - }, - - /** - * Decides whether or not the document is reader-able without parsing the whole thing. - * - * @return boolean Whether or not we suspect parse() will suceeed at returning an article object. - */ - isProbablyReaderable: function(helperIsVisible) { - var nodes = this._getAllNodesWithTag(this._doc, ["p", "pre"]); - - // Get

nodes which have
node(s) and append them into the `nodes` variable. - // Some articles' DOM structures might look like - //
- // Sentences
- //
- // Sentences
- //
- var brNodes = this._getAllNodesWithTag(this._doc, ["div > br"]); - if (brNodes.length) { - var set = new Set(); - [].forEach.call(brNodes, function(node) { - set.add(node.parentNode); - }); - nodes = [].concat.apply(Array.from(set), nodes); - } - - if (!helperIsVisible) { - helperIsVisible = this._isProbablyVisible; - } - - var score = 0; - // This is a little cheeky, we use the accumulator 'score' to decide what to return from - // this callback: - return this._someNode(nodes, function(node) { - if (helperIsVisible && !helperIsVisible(node)) - return false; - var matchString = node.className + " " + node.id; - - if (this.REGEXPS.unlikelyCandidates.test(matchString) && - !this.REGEXPS.okMaybeItsACandidate.test(matchString)) { - return false; - } - - if (node.matches && node.matches("li p")) { - return false; - } - - var textContentLength = node.textContent.trim().length; - if (textContentLength < 140) { - return false; - } - - score += Math.sqrt(textContentLength - 140); - - if (score > 20) { - return true; - } - return false; - }); + return (!node.style || node.style.display != "none") && !node.hasAttribute("hidden"); }, /** @@ -1812,6 +1774,7 @@ Readability.prototype = { textContent: textContent, length: textContent.length, excerpt: metadata.excerpt, + siteName: metadata.siteName || this._articleSiteName }; } }; From 85caaf571c258a22969af80bb249d51ee35fa5bd Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:08:17 -0400 Subject: [PATCH 06/16] Update surrounding code for new Readerable module. Tag #361. --- .../basilisk/base/content/tab-content.js | 6 +- toolkit/components/reader/ReaderMode.jsm | 114 +----------------- toolkit/components/reader/Readerable.js | 114 ++++++++++++++++++ toolkit/components/reader/Readerable.jsm | 10 ++ toolkit/components/reader/moz.build | 4 + 5 files changed, 138 insertions(+), 110 deletions(-) create mode 100644 toolkit/components/reader/Readerable.js create mode 100644 toolkit/components/reader/Readerable.jsm diff --git a/application/basilisk/base/content/tab-content.js b/application/basilisk/base/content/tab-content.js index 5a06c316be..7fbe40c2d6 100644 --- a/application/basilisk/base/content/tab-content.js +++ b/application/basilisk/base/content/tab-content.js @@ -23,6 +23,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "AboutReader", "resource://gre/modules/AboutReader.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Readerable", + "resource://gre/modules/Readerable.jsm"); XPCOMUtils.defineLazyGetter(this, "SimpleServiceDiscovery", function() { let ssdp = Cu.import("resource://gre/modules/SimpleServiceDiscovery.jsm", {}).SimpleServiceDiscovery; // Register targets @@ -339,7 +341,7 @@ var AboutReaderListener = { * painted is not going to work. */ updateReaderButton: function(forceNonArticle) { - if (!ReaderMode.isEnabledForParseOnLoad || this.isAboutReader || + if (!Readerable.isEnabledForParseOnLoad || this.isAboutReader || !content || !(content.document instanceof content.HTMLDocument) || content.document.mozSyntheticDocument) { return; @@ -378,7 +380,7 @@ var AboutReaderListener = { this.cancelPotentialPendingReadabilityCheck(); // Only send updates when there are articles; there's no point updating with // |false| all the time. - if (ReaderMode.isProbablyReaderable(content.document)) { + if (Readerable.isProbablyReaderable(content.document)) { sendAsyncMessage("Reader:UpdateReaderButton", { isArticle: true }); } else if (forceNonArticle) { sendAsyncMessage("Reader:UpdateReaderButton", { isArticle: false }); diff --git a/toolkit/components/reader/ReaderMode.jsm b/toolkit/components/reader/ReaderMode.jsm index 218e12d60d..ebc3334958 100644 --- a/toolkit/components/reader/ReaderMode.jsm +++ b/toolkit/components/reader/ReaderMode.jsm @@ -30,13 +30,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "CommonUtils", "resource://services-comm XPCOMUtils.defineLazyModuleGetter(this, "EventDispatcher", "resource://gre/modules/Messaging.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ReaderWorker", "resource://gre/modules/reader/ReaderWorker.jsm"); - -XPCOMUtils.defineLazyGetter(this, "Readability", function() { - let scope = {}; - scope.dump = this.dump; - Services.scriptloader.loadSubScript("resource://gre/modules/reader/Readability.js", scope); - return scope.Readability; -}); +XPCOMUtils.defineLazyModuleGetter(this, "Readerable", "resource://gre/modules/Readerable.jsm"); this.ReaderMode = { // Version of the cache schema. @@ -53,33 +47,6 @@ this.ReaderMode = { return this.parseNodeLimit = Services.prefs.getIntPref("reader.parse-node-limit"); }, - get isEnabledForParseOnLoad() { - delete this.isEnabledForParseOnLoad; - - // Listen for future pref changes. - Services.prefs.addObserver("reader.parse-on-load.", this, false); - - return this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); - }, - - _getStateForParseOnLoad() { - let isEnabled = Services.prefs.getBoolPref("reader.parse-on-load.enabled"); - let isForceEnabled = Services.prefs.getBoolPref("reader.parse-on-load.force-enabled"); - return isForceEnabled || isEnabled; - }, - - observe(aMessage, aTopic, aData) { - switch (aTopic) { - case "nsPref:changed": - if (aData.startsWith("reader.parse-on-load.")) { - this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); - } else if (aData === "reader.parse-node-limit") { - this.parseNodeLimit = Services.prefs.getIntPref(aData); - } - break; - } - }, - /** * Enter the reader mode by going forward one step in history if applicable, * if not, append the about:reader page in the history instead. @@ -174,39 +141,6 @@ this.ReaderMode = { return null; }, - /** - * Decides whether or not a document is reader-able without parsing the whole thing. - * - * @param doc A document to parse. - * @return boolean Whether or not we should show the reader mode button. - */ - isProbablyReaderable(doc) { - // Only care about 'real' HTML documents: - if (doc.mozSyntheticDocument || !(doc instanceof doc.defaultView.HTMLDocument)) { - return false; - } - - let uri = Services.io.newURI(doc.location.href); - if (!this._shouldCheckUri(uri)) { - return false; - } - - let utils = this.getUtilsForWin(doc.defaultView); - // We pass in a helper function to determine if a node is visible, because - // it uses gecko APIs that the engine-agnostic readability code can't rely - // upon. - return new Readability(doc).isProbablyReaderable(this.isNodeVisible.bind(this, utils)); - }, - - isNodeVisible(utils, node) { - let bounds = utils.getBoundsWithoutFlushing(node); - return bounds.height > 0 && bounds.width > 0; - }, - - getUtilsForWin(win) { - return win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); - }, - /** * Gets an article from a loaded browser's document. This method will not attempt * to parse certain URIs (e.g. about: URIs). @@ -216,7 +150,8 @@ this.ReaderMode = { * @resolves JS object representing the article, or null if no article is found. */ parseDocument(doc) { - if (!this._shouldCheckUri(doc.documentURIObject) || !this._shouldCheckUri(doc.baseURIObject, true)) { + if (!Readerable.shouldCheckUri(doc.documentURIObject) || + !Readerable.shouldCheckUri(doc.baseURIObject, true)) { this.log("Reader mode disabled for URI"); return null; } @@ -236,7 +171,8 @@ this.ReaderMode = { if (!doc) { return null; } - if (!this._shouldCheckUri(doc.documentURIObject) || !this._shouldCheckUri(doc.baseURIObject, true)) { + if (!Readerable.shouldCheckUri(doc.documentURIObject) || + !Readerable.shouldCheckUri(doc.baseURIObject, true)) { this.log("Reader mode disabled for URI"); return null; } @@ -246,7 +182,7 @@ this.ReaderMode = { _downloadDocument(url) { try { - if (!this._shouldCheckUri(Services.io.newURI(url))) { + if (!Readerable.shouldCheckUri(Services.io.newURI(url))) { return null; } } catch (ex) { @@ -388,44 +324,6 @@ this.ReaderMode = { dump("Reader: " + msg); }, - _blockedHosts: [ - "amazon.com", - "basilisk-browser.org", - "github.com", - "mail.google.com", - "palemoon.org", - "pinterest.com", - "reddit.com", - "twitter.com", - "youtube.com", - ], - - _shouldCheckUri(uri, isBaseUri = false) { - if (!(uri.schemeIs("http") || uri.schemeIs("https"))) { - this.log("Not parsing URI scheme: " + uri.scheme); - return false; - } - - try { - uri.QueryInterface(Ci.nsIURL); - } catch (ex) { - // If this doesn't work, presumably the URL is not well-formed or something - return false; - } - // Sadly, some high-profile pages have false positives, so bail early for those: - let asciiHost = uri.asciiHost; - if (!isBaseUri && this._blockedHosts.some(blockedHost => asciiHost.endsWith(blockedHost))) { - return false; - } - - if (!isBaseUri && (!uri.filePath || uri.filePath == "/")) { - this.log("Not parsing home page: " + uri.spec); - return false; - } - - return true; - }, - /** * Attempts to parse a document into an article. Heavy lifting happens * in readerWorker.js. diff --git a/toolkit/components/reader/Readerable.js b/toolkit/components/reader/Readerable.js new file mode 100644 index 0000000000..71c23eb5b2 --- /dev/null +++ b/toolkit/components/reader/Readerable.js @@ -0,0 +1,114 @@ +// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- +/* 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 file and Readability-readerable.js are merged together into +// Readerable.jsm. + +/* exported Readerable */ +/* import-globals-from Readability-readerable.js */ + +const { classes: Cc, interfaces: Ci, utils: Cu } = Components; + +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); + +function isNodeVisible(node) { + return node.clientHeight > 0 && node.clientWidth > 0; +} + +var Readerable = { + DEBUG: 0, + + get isEnabledForParseOnLoad() { + delete this.isEnabledForParseOnLoad; + + // Listen for future pref changes. + Services.prefs.addObserver("reader.parse-on-load.", this, false); + + return this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); + }, + + _getStateForParseOnLoad() { + let isEnabled = Services.prefs.getBoolPref("reader.parse-on-load.enabled"); + let isForceEnabled = Services.prefs.getBoolPref("reader.parse-on-load.force-enabled"); + return isForceEnabled || isEnabled; + }, + + observe(aMessage, aTopic, aData) { + switch (aTopic) { + case "nsPref:changed": + if (aData.startsWith("reader.parse-on-load.")) { + this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); + } else if (aData === "reader.parse-node-limit") { + this.parseNodeLimit = Services.prefs.getIntPref(aData); + } + break; + } + }, + + log(msg) { + if (this.DEBUG) + dump("Reader: " + msg); + }, + + /** + * Decides whether or not a document is reader-able without parsing the whole thing. + * + * @param doc A document to parse. + * @return boolean Whether or not we should show the reader mode button. + */ + isProbablyReaderable(doc) { + // Only care about 'real' HTML documents: + if (doc.mozSyntheticDocument || !(doc instanceof doc.defaultView.HTMLDocument)) { + return false; + } + + let uri = Services.io.newURI(doc.location.href); + if (!this.shouldCheckUri(uri)) { + return false; + } + + return isProbablyReaderable(doc, isNodeVisible); + }, + + _blockedHosts: [ + "amazon.com", + "basilisk-browser.org", + "github.com", + "mail.google.com", + "palemoon.org", + "pinterest.com", + "reddit.com", + "twitter.com", + "youtube.com", + ], + + shouldCheckUri(uri, isBaseUri = false) { + if (!(uri.schemeIs("http") || uri.schemeIs("https"))) { + this.log("Not parsing URI scheme: " + uri.scheme); + return false; + } + + try { + uri.QueryInterface(Ci.nsIURL); + } catch (ex) { + // If this doesn't work, presumably the URL is not well-formed or something + return false; + } + // Sadly, some high-profile pages have false positives, so bail early for those: + let asciiHost = uri.asciiHost; + if (!isBaseUri && this._blockedHosts.some(blockedHost => asciiHost.endsWith(blockedHost))) { + return false; + } + + if (!isBaseUri && (!uri.filePath || uri.filePath == "/")) { + this.log("Not parsing home page: " + uri.spec); + return false; + } + + return true; + }, +}; diff --git a/toolkit/components/reader/Readerable.jsm b/toolkit/components/reader/Readerable.jsm new file mode 100644 index 0000000000..2268487e42 --- /dev/null +++ b/toolkit/components/reader/Readerable.jsm @@ -0,0 +1,10 @@ +// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- +/* 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"; + +var EXPORTED_SYMBOLS = ["Readerable"]; + +#include Readability-readerable.js +#include Readerable.js diff --git a/toolkit/components/reader/moz.build b/toolkit/components/reader/moz.build index 6863d65427..d49bda14fc 100644 --- a/toolkit/components/reader/moz.build +++ b/toolkit/components/reader/moz.build @@ -11,6 +11,10 @@ EXTRA_JS_MODULES += [ 'ReaderMode.jsm' ] +EXTRA_PP_JS_MODULES += [ + 'Readerable.jsm' +] + EXTRA_JS_MODULES.reader = [ 'JSDOMParser.js', 'Readability.js', From 14aede3cc57fde0bb66ba675a8b8e74ee76913cc Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:31:18 -0400 Subject: [PATCH 07/16] Replace explicit pref observer with lazy preference getters. Tag #361. --- toolkit/components/reader/ReaderMode.jsm | 14 ++++------- toolkit/components/reader/Readerable.js | 30 +++++------------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/toolkit/components/reader/ReaderMode.jsm b/toolkit/components/reader/ReaderMode.jsm index ebc3334958..0302054462 100644 --- a/toolkit/components/reader/ReaderMode.jsm +++ b/toolkit/components/reader/ReaderMode.jsm @@ -38,15 +38,6 @@ this.ReaderMode = { DEBUG: 0, - // Don't try to parse the page if it has too many elements (for memory and - // performance reasons) - get maxElemsToParse() { - delete this.parseNodeLimit; - - Services.prefs.addObserver("reader.parse-node-limit", this, false); - return this.parseNodeLimit = Services.prefs.getIntPref("reader.parse-node-limit"); - }, - /** * Enter the reader mode by going forward one step in history if applicable, * if not, append the about:reader page in the history instead. @@ -548,3 +539,8 @@ this.ReaderMode = { return readingSpeed.get(lang) || readingSpeed.get("en"); }, }; + +// Don't try to parse the page if it has too many elements (for memory and +// performance reasons) +XPCOMUtils.defineLazyPreferenceGetter( + ReaderMode, "maxElemsToParse", "reader.parse-node-limit", 0); diff --git a/toolkit/components/reader/Readerable.js b/toolkit/components/reader/Readerable.js index 71c23eb5b2..cee8adc088 100644 --- a/toolkit/components/reader/Readerable.js +++ b/toolkit/components/reader/Readerable.js @@ -23,30 +23,7 @@ var Readerable = { DEBUG: 0, get isEnabledForParseOnLoad() { - delete this.isEnabledForParseOnLoad; - - // Listen for future pref changes. - Services.prefs.addObserver("reader.parse-on-load.", this, false); - - return this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); - }, - - _getStateForParseOnLoad() { - let isEnabled = Services.prefs.getBoolPref("reader.parse-on-load.enabled"); - let isForceEnabled = Services.prefs.getBoolPref("reader.parse-on-load.force-enabled"); - return isForceEnabled || isEnabled; - }, - - observe(aMessage, aTopic, aData) { - switch (aTopic) { - case "nsPref:changed": - if (aData.startsWith("reader.parse-on-load.")) { - this.isEnabledForParseOnLoad = this._getStateForParseOnLoad(); - } else if (aData === "reader.parse-node-limit") { - this.parseNodeLimit = Services.prefs.getIntPref(aData); - } - break; - } + return this.isEnabled || this.isForceEnabled; }, log(msg) { @@ -112,3 +89,8 @@ var Readerable = { return true; }, }; + +XPCOMUtils.defineLazyPreferenceGetter( + Readerable, "isEnabled", "reader.parse-on-load.enabled", true); +XPCOMUtils.defineLazyPreferenceGetter( + Readerable, "isForceEnabled", "reader.parse-on-load.force-enabled", false); From ecf329f733e45fa37de5a867f225f9e373e9506e Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Thu, 25 Apr 2019 21:13:35 -0400 Subject: [PATCH 08/16] Fix parse node limit preference. Tag #361. --- toolkit/components/reader/ReaderMode.jsm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolkit/components/reader/ReaderMode.jsm b/toolkit/components/reader/ReaderMode.jsm index 0302054462..b9b31e29fa 100644 --- a/toolkit/components/reader/ReaderMode.jsm +++ b/toolkit/components/reader/ReaderMode.jsm @@ -543,4 +543,4 @@ this.ReaderMode = { // Don't try to parse the page if it has too many elements (for memory and // performance reasons) XPCOMUtils.defineLazyPreferenceGetter( - ReaderMode, "maxElemsToParse", "reader.parse-node-limit", 0); + ReaderMode, "parseNodeLimit", "reader.parse-node-limit", 0); From a0ceaeace82eeff4a39012b8026bb457af7c1f3a Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Sat, 27 Apr 2019 08:49:17 -0400 Subject: [PATCH 09/16] Bug 1399616 - add WP emoji styling to reader mode. --- toolkit/components/reader/ReaderMode.jsm | 2 ++ toolkit/themes/shared/aboutReader.css | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/toolkit/components/reader/ReaderMode.jsm b/toolkit/components/reader/ReaderMode.jsm index b9b31e29fa..5ba898aec1 100644 --- a/toolkit/components/reader/ReaderMode.jsm +++ b/toolkit/components/reader/ReaderMode.jsm @@ -12,6 +12,7 @@ const { classes: Cc, interfaces: Ci, utils: Cu } = Components; // names so that rules in aboutReader.css can match them. const CLASSES_TO_PRESERVE = [ "caption", + "emoji", "hidden", "invisble", "sr-only", @@ -19,6 +20,7 @@ const CLASSES_TO_PRESERVE = [ "visuallyhidden", "wp-caption", "wp-caption-text", + "wp-smiley", ]; Cu.import("resource://gre/modules/Services.jsm"); diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css index 4dbf11f6db..e685cf69fb 100644 --- a/toolkit/themes/shared/aboutReader.css +++ b/toolkit/themes/shared/aboutReader.css @@ -738,3 +738,14 @@ body:not(.loaded) .toolbar:-moz-locale-dir(rtl) { .moz-reader-content .sr-only { display: none; } + +/* Enforce wordpress and similar emoji/smileys aren't sized to be full-width */ +.moz-reader-content img.wp-smiley, +.moz-reader-content img.emoji { + display: inline-block; + border-width: 0; + /* height: auto is implied from `.moz-reader-content *` rule. */ + width: 1em; + margin: 0 .07em; + padding: 0; +} From deed413b5312ffb7fa4b144cfcdda2009460bae2 Mon Sep 17 00:00:00 2001 From: monikamaheshwari Date: Sat, 27 Apr 2019 09:15:22 -0400 Subject: [PATCH 10/16] Bug 1422680 - simplify aboutReader.css font-size classes using CSS variables r=Gijs --- toolkit/components/reader/AboutReader.jsm | 9 ++---- toolkit/themes/shared/aboutReader.css | 38 ++--------------------- 2 files changed, 5 insertions(+), 42 deletions(-) diff --git a/toolkit/components/reader/AboutReader.jsm b/toolkit/components/reader/AboutReader.jsm index 6ec959eba5..4cc9d67509 100644 --- a/toolkit/components/reader/AboutReader.jsm +++ b/toolkit/components/reader/AboutReader.jsm @@ -276,13 +276,10 @@ AboutReader.prototype = { }, _setFontSize(newFontSize) { - let containerClasses = this._containerElement.classList; - - if (this._fontSize > 0) - containerClasses.remove("font-size" + this._fontSize); - this._fontSize = newFontSize; - containerClasses.add("font-size" + this._fontSize); + let size = (10 + 2 * this._fontSize) + "px"; + + this._containerElement.style.setProperty("--font-size", size); return AsyncPrefs.set("reader.font_size", this._fontSize); }, diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css index e685cf69fb..ff8f275654 100644 --- a/toolkit/themes/shared/aboutReader.css +++ b/toolkit/themes/shared/aboutReader.css @@ -47,44 +47,10 @@ body.serif .remove-button { } .container { + --font-size: 12; max-width: 30em; margin: 0 auto; -} - -.container.font-size1 { - font-size: 12px; -} - -.container.font-size2 { - font-size: 14px; -} - -.container.font-size3 { - font-size: 16px; -} - -.container.font-size4 { - font-size: 18px; -} - -.container.font-size5 { - font-size: 20px; -} - -.container.font-size6 { - font-size: 22px; -} - -.container.font-size7 { - font-size: 24px; -} - -.container.font-size8 { - font-size: 26px; -} - -.container.font-size9 { - font-size: 28px; + font-size: var(--font-size); } .container.content-width1 { From 03e0f2755270b361b6bf592a1aec8461c3e773cb Mon Sep 17 00:00:00 2001 From: Sonali9 Date: Sat, 27 Apr 2019 09:18:44 -0400 Subject: [PATCH 11/16] Bug 1151735 - Hide font panel when text is being selected r=Gijs --- toolkit/components/reader/AboutReader.jsm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/toolkit/components/reader/AboutReader.jsm b/toolkit/components/reader/AboutReader.jsm index 4cc9d67509..5defa623ed 100644 --- a/toolkit/components/reader/AboutReader.jsm +++ b/toolkit/components/reader/AboutReader.jsm @@ -58,6 +58,7 @@ var AboutReader = function(win, articlePromise) { this._scrollOffset = win.pageYOffset; + doc.addEventListener("mousedown", this); doc.addEventListener("click", this); win.addEventListener("pagehide", this); @@ -191,13 +192,16 @@ AboutReader.prototype = { if (!aEvent.isTrusted) return; + let target = aEvent.target; switch (aEvent.type) { + case "mousedown": + if (!target.closest(".dropdown-popup")) { + this._closeDropdowns(); + } + break; case "click": - let target = aEvent.target; if (target.classList.contains("dropdown-toggle")) { this._toggleDropdownClicked(aEvent); - } else if (!target.closest(".dropdown-popup")) { - this._closeDropdowns(); } break; case "scroll": From cf0a5a54cd47336291139660fe9165a68063e6d7 Mon Sep 17 00:00:00 2001 From: monikamaheshwari Date: Sat, 27 Apr 2019 09:35:59 -0400 Subject: [PATCH 12/16] Bug 1429442 - Buttons in "type control" popup in reader mode should have tooltips r=Gijs,MarcoZ --- toolkit/components/reader/AboutReader.jsm | 19 +++++++++++++++++++ .../chrome/global/aboutReader.properties | 11 +++++++++++ 2 files changed, 30 insertions(+) diff --git a/toolkit/components/reader/AboutReader.jsm b/toolkit/components/reader/AboutReader.jsm index 5defa623ed..9d9362a0cc 100644 --- a/toolkit/components/reader/AboutReader.jsm +++ b/toolkit/components/reader/AboutReader.jsm @@ -120,6 +120,25 @@ var AboutReader = function(win, articlePromise) { } this._loadArticle(); + + let dropdown = this._toolbarElement; + + let elemL10nMap = { + ".minus-button": "minus", + ".plus-button": "plus", + ".content-width-minus-button": "contentwidthminus", + ".content-width-plus-button": "contentwidthplus", + ".line-height-minus-button": "lineheightminus", + ".line-height-plus-button": "lineheightplus", + ".light-button": "colorschemelight", + ".dark-button": "colorschemedark", + ".sepia-button": "colorschemesepia", + }; + + for (let [selector, stringID] of Object.entries(elemL10nMap)) { + dropdown.querySelector(selector).setAttribute("title", + gStrings.GetStringFromName("aboutReader.toolbar." + stringID)); + } }; AboutReader.prototype = { diff --git a/toolkit/locales/en-US/chrome/global/aboutReader.properties b/toolkit/locales/en-US/chrome/global/aboutReader.properties index ac004c545d..10d145686b 100644 --- a/toolkit/locales/en-US/chrome/global/aboutReader.properties +++ b/toolkit/locales/en-US/chrome/global/aboutReader.properties @@ -46,3 +46,14 @@ readerView.enter=Enter Reader View readerView.enter.accesskey=R readerView.close=Close Reader View readerView.close.accesskey=R + +# These are used as tooltips in Type Control +aboutReader.toolbar.minus = Decrease Font Size +aboutReader.toolbar.plus = Increase Font Size +aboutReader.toolbar.contentwidthminus = Decrease Content Width +aboutReader.toolbar.contentwidthplus = Increase Content Width +aboutReader.toolbar.lineheightminus = Decrease Line Height +aboutReader.toolbar.lineheightplus = Increase Line Height +aboutReader.toolbar.colorschemelight = Color Scheme Light +aboutReader.toolbar.colorschemedark = Color Scheme Dark +aboutReader.toolbar.colorschemesepia = Color Scheme Sepia From c14d99f0ed093e8ef5e2f2b31faf9eb37269dfe0 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Thu, 9 May 2019 13:26:23 -0400 Subject: [PATCH 13/16] Issue #1082 - Restore a getBoolPref global shim in utilityOverlay.js for Extension compatibility --- application/basilisk/base/content/utilityOverlay.js | 10 ++++++++++ application/palemoon/base/content/utilityOverlay.js | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/application/basilisk/base/content/utilityOverlay.js b/application/basilisk/base/content/utilityOverlay.js index 12a631d0f0..3d27f7d27a 100644 --- a/application/basilisk/base/content/utilityOverlay.js +++ b/application/basilisk/base/content/utilityOverlay.js @@ -17,6 +17,9 @@ XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService", "@mozilla.org/browser/aboutnewtab-service;1", "nsIAboutNewTabService"); +XPCOMUtils.defineLazyModuleGetter(this, "Deprecated", + "resource://gre/modules/Deprecated.jsm"); + this.__defineGetter__("BROWSER_NEW_TAB_URL", () => { if (PrivateBrowsingUtils.isWindowPrivate(window) && !PrivateBrowsingUtils.permanentPrivateBrowsing && @@ -42,6 +45,13 @@ function getBrowserURL() return "chrome://browser/content/browser.xul"; } +function getBoolPref(pref, defaultValue) { + Deprecated.warning("getBoolPref is deprecated and will be removed in a future release. " + + "You should use Services.pref.getBoolPref (Services.jsm).", + "https://github.com/MoonchildProductions/UXP/issues/989"); + return Services.prefs.getBoolPref(pref, defaultValue); +} + function getTopWin(skipPopups) { // If this is called in a browser window, use that window regardless of // whether it's the frontmost window, since commands can be executed in diff --git a/application/palemoon/base/content/utilityOverlay.js b/application/palemoon/base/content/utilityOverlay.js index c2a8baeed5..6ba634a58a 100644 --- a/application/palemoon/base/content/utilityOverlay.js +++ b/application/palemoon/base/content/utilityOverlay.js @@ -12,6 +12,9 @@ Components.utils.import("resource:///modules/RecentWindow.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ShellService", "resource:///modules/ShellService.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Deprecated", + "resource://gre/modules/Deprecated.jsm"); + XPCOMUtils.defineLazyGetter(this, "BROWSER_NEW_TAB_URL", function () { const PREF = "browser.newtab.url"; @@ -57,6 +60,14 @@ function getBrowserURL() return "chrome://browser/content/browser.xul"; } +function getBoolPref(pref, defaultValue) { + Deprecated.warning("getBoolPref is deprecated and will be removed in a future release. " + + "You should use Services.pref.getBoolPref (Services.jsm).", + "https://github.com/MoonchildProductions/UXP/issues/989"); + return Services.prefs.getBoolPref(pref, defaultValue); +} + + function getTopWin(skipPopups) { // If this is called in a browser window, use that window regardless of // whether it's the frontmost window, since commands can be executed in From 9d9a113400de5a9b8cf78503e52cceeccf87bbaa Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Thu, 9 May 2019 14:21:18 -0400 Subject: [PATCH 14/16] Issue #1083 - Deprecate FUEL extension helper javascript library --- application/palemoon/components/fuel/fuelApplication.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/palemoon/components/fuel/fuelApplication.js b/application/palemoon/components/fuel/fuelApplication.js index 017813143b..bc3a091eaa 100644 --- a/application/palemoon/components/fuel/fuelApplication.js +++ b/application/palemoon/components/fuel/fuelApplication.js @@ -6,6 +6,8 @@ const Ci = Components.interfaces; const Cc = Components.classes; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Deprecated", + "resource://gre/modules/Deprecated.jsm"); const APPLICATION_CID = Components.ID("fe74cf80-aa2d-11db-abbd-0800200c9a66"); const APPLICATION_CONTRACTID = "@mozilla.org/fuel/application;1"; @@ -734,6 +736,8 @@ var ApplicationFactory = { //================================================= // Application constructor function Application() { + Deprecated.warning("FUEL is deprecated, you should use the standard Toolkit API instead.", + "https://github.com/MoonchildProductions/UXP/issues/1083"); this.initToolkitHelpers(); } From 112961367a50b2af0ddf77166a7077b1cb68f97e Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Thu, 9 May 2019 15:54:49 -0400 Subject: [PATCH 15/16] Issue #1081 - Restore "release notes" item in the help menu --- .../palemoon/base/content/baseMenuOverlay.xul | 14 ++++++++++---- .../palemoon/base/content/browser-appmenu.inc | 13 +++++++++---- .../palemoon/base/content/utilityOverlay.js | 12 ++++++++++++ .../en-US/chrome/browser/baseMenuOverlay.dtd | 2 ++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/application/palemoon/base/content/baseMenuOverlay.xul b/application/palemoon/base/content/baseMenuOverlay.xul index a006ed5c6b..bccdec2650 100644 --- a/application/palemoon/base/content/baseMenuOverlay.xul +++ b/application/palemoon/base/content/baseMenuOverlay.xul @@ -57,15 +57,21 @@ label="&helpTroubleshootingInfo.label;" oncommand="openTroubleshootingPage()" onclick="checkForMiddleClick(this, event);"/> + + + - + + + - - #ifdef MOZ_UPDATER + + From 37f0839a64a277cfab7f646a80dcbae6c76c1752 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Thu, 9 May 2019 16:57:05 -0400 Subject: [PATCH 16/16] Issue #968 - Preload the permissions manager with permissions file --- application/palemoon/app/moz.build | 1 + application/palemoon/app/permissions | 14 ++++++++++++++ application/palemoon/app/profile/palemoon.js | 6 +++--- application/palemoon/installer/package-manifest.in | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 application/palemoon/app/permissions diff --git a/application/palemoon/app/moz.build b/application/palemoon/app/moz.build index c11f4c37ed..8166760af9 100644 --- a/application/palemoon/app/moz.build +++ b/application/palemoon/app/moz.build @@ -20,6 +20,7 @@ if CONFIG['LIBXUL_SDK']: SOURCES += ['nsBrowserApp.cpp'] FINAL_TARGET_FILES += ['blocklist.xml'] +FINAL_TARGET_FILES.defaults += ['permissions'] FINAL_TARGET_FILES.defaults.profile += ['profile/prefs.js'] DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] diff --git a/application/palemoon/app/permissions b/application/palemoon/app/permissions new file mode 100644 index 0000000000..4d90be82a6 --- /dev/null +++ b/application/palemoon/app/permissions @@ -0,0 +1,14 @@ +# This file has default permissions for the permission manager. +# The file-format is strict: +# * matchtype \t type \t permission \t host +# * "origin" should be used for matchtype, "host" is supported for legacy reasons +# * type is a string that identifies the type of permission (e.g. "cookie") +# * permission is an integer between 1 and 15 +# See nsPermissionManager.cpp for more... + +# XPInstall +origin install 1 http://www.palemoon.org +origin install 1 https://www.palemoon.org + +origin install 1 http://addons.palemoon.org +origin install 1 https://addons.palemoon.org diff --git a/application/palemoon/app/profile/palemoon.js b/application/palemoon/app/profile/palemoon.js index bd1b62cc3d..974d76d4b5 100644 --- a/application/palemoon/app/profile/palemoon.js +++ b/application/palemoon/app/profile/palemoon.js @@ -206,9 +206,6 @@ pref("extensions.dss.switchPending", false); // Non-dynamic switch pending af pref("extensions.{972ce4c6-7e08-4474-a285-3208198ce6fd}.name", "chrome://browser/locale/browser.properties"); pref("extensions.{972ce4c6-7e08-4474-a285-3208198ce6fd}.description", "chrome://browser/locale/browser.properties"); -pref("xpinstall.whitelist.add", "addons.mozilla.org,www.palemoon.org,addons.palemoon.org"); -pref("xpinstall.whitelist.add.36", ""); -pref("xpinstall.whitelist.add.180", ""); pref("xpinstall.whitelist.required", false); // Allow installing XPI add-ons by direct URL requests (no referrer) pref("xpinstall.whitelist.directRequest", true); @@ -1103,6 +1100,9 @@ pref("full-screen-api.enabled", true); // 0-100 (currently) pref("permissions.places-sites-limit", 50); +// Built-in default permissions. +pref("permissions.manager.defaultsUrl", "resource://app/defaults/permissions"); + // Startup Crash Tracking // number of startup crashes that can occur before starting into safe mode automatically // (this pref has no effect if more than 6 hours have passed since the last crash) diff --git a/application/palemoon/installer/package-manifest.in b/application/palemoon/installer/package-manifest.in index d8722bf08b..0d80e15f95 100644 --- a/application/palemoon/installer/package-manifest.in +++ b/application/palemoon/installer/package-manifest.in @@ -231,6 +231,7 @@ ; [Default Preferences] ; All the pref files must be part of base to prevent migration bugs +@RESPATH@/browser/defaults/permissions @RESPATH@/browser/@PREF_DIR@/palemoon.js @RESPATH@/browser/@PREF_DIR@/palemoon-branding.js @RESPATH@/greprefs.js