From a057e92058cf6e083f26ef6e5e0d9b07f3e29347 Mon Sep 17 00:00:00 2001 From: girst Date: Wed, 31 Jul 2019 12:51:44 +0200 Subject: [PATCH] Remove dependency on non-standard Array.some() and Array.filter() Also replaces the deprecated DOMQuad.bounds. Firefox 70 will remove[1] non-standard Array generics[2][3]. These were identified using the following shell pipeline: cd VimFx/extension grep -rn 'Array\.' | grep -v '\.isArray\|\.of\|\.from\|\.prototype' [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1558914 [2]: https://www.fxsitecompat.dev/en-CA/docs/2019/non-standard-array-generics-have-been-deprecated/ [3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Array_generic_methods --- extension/lib/commands-frame.coffee | 2 +- extension/lib/commands.coffee | 4 ++-- extension/lib/markable-elements.coffee | 5 +++-- extension/lib/utils.coffee | 4 ++-- extension/lib/viewport.coffee | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/extension/lib/commands-frame.coffee b/extension/lib/commands-frame.coffee index 0b0595a..ad88a22 100644 --- a/extension/lib/commands-frame.coffee +++ b/extension/lib/commands-frame.coffee @@ -545,7 +545,7 @@ commands.focus_text_input = ({vim, count = null}) -> candidates = utils.querySelectorAllDeep( vim.content, 'input, textarea, textbox, [contenteditable]' ) - inputs = Array.filter(candidates, (element) -> + inputs = Array.prototype.filter.call(candidates, (element) -> return isTextInputElement(element) and utils.area(element) > 0 ) if lastFocusedTextInput and lastFocusedTextInput not in inputs diff --git a/extension/lib/commands.coffee b/extension/lib/commands.coffee index ba7a77f..f71f33a 100644 --- a/extension/lib/commands.coffee +++ b/extension/lib/commands.coffee @@ -345,7 +345,7 @@ helper_is_visited = (tab) -> commands.tab_select_most_recent = ({vim, count = 1}) -> {gBrowser} = vim.window tabsSorted = - Array.filter( + Array.prototype.filter.call( gBrowser.tabs, (tab) -> not tab.closing and helper_is_visited(tab) ).sort((a, b) -> b.lastAccessed - a.lastAccessed)[1..] # Remove current tab. @@ -358,7 +358,7 @@ commands.tab_select_most_recent = ({vim, count = 1}) -> commands.tab_select_oldest_unvisited = ({vim, count = 1}) -> {gBrowser} = vim.window tabsSorted = - Array.filter( + Array.prototype.filter.call( gBrowser.tabs, (tab) -> not tab.closing and not helper_is_visited(tab) ).sort((a, b) -> a.lastAccessed - b.lastAccessed) diff --git a/extension/lib/markable-elements.coffee b/extension/lib/markable-elements.coffee index 567963d..772f669 100644 --- a/extension/lib/markable-elements.coffee +++ b/extension/lib/markable-elements.coffee @@ -95,7 +95,7 @@ getRects = (element, viewport) -> rects = element.getClientRects() return { all: rects, - insideViewport: Array.filter( + insideViewport: Array.prototype.filter.call( rects, (rect) -> viewportUtils.isInsideViewport(rect, viewport) ) @@ -172,7 +172,8 @@ getElementShape = (elementData, tryRight, rects = null) -> utils.walkTextNodes(element, (node) -> unless node.data.trim() == '' - for {bounds} in node.getBoxQuads() + for quads in node.getBoxQuads() + bounds = quads.getBounds() if bounds.width < MIN_TEXTNODE_SIZE or bounds.height < MIN_TEXTNODE_SIZE continue diff --git a/extension/lib/utils.coffee b/extension/lib/utils.coffee index c1206b7..dfd7cf0 100644 --- a/extension/lib/utils.coffee +++ b/extension/lib/utils.coffee @@ -46,7 +46,7 @@ EVENTS_HOVER_END = ['mouseout', 'mouseleave'] # Element classification helpers hasMarkableTextNode = (element) -> - return Array.some(element.childNodes, (node) -> + return Array.prototype.some.call(element.childNodes, (node) -> # Ignore whitespace-only text nodes, and single-letter ones (which are # common in many syntax highlighters). return node.nodeType == 3 and node.data.trim().length > 1 @@ -86,7 +86,7 @@ isContentEditable = (element) -> isDevtoolsElement = (element) -> return false unless element.ownerGlobal - return Array.some(element.ownerGlobal.top.frames, isDevtoolsWindow) + return Array.prototype.some.call(element.ownerGlobal.top.frames, isDevtoolsWindow) isDevtoolsWindow = (window) -> return window.location?.href in [ diff --git a/extension/lib/viewport.coffee b/extension/lib/viewport.coffee index b8ea1c6..a57c040 100644 --- a/extension/lib/viewport.coffee +++ b/extension/lib/viewport.coffee @@ -142,7 +142,7 @@ getFirstVisibleText = (window, viewport) -> continue nonEmptyTextNodes = - Array.filter(element.childNodes, utils.isNonEmptyTextNode) + Array.prototype.filter.call(element.childNodes, utils.isNonEmptyTextNode) continue if nonEmptyTextNodes.length == 0 continue if utils.checkElementOrAncestor(element, isFixed) -- 2.39.3