From 88cbe89247a4ebdf9498d77eb0f7e675b7a4c785 Mon Sep 17 00:00:00 2001
From: Stanley Shyiko
Date: Mon, 28 Oct 2013 22:13:37 +0200
Subject: Fixed detection of links which are only partially inside the viewport
---
lib/dom_utils.coffee | 16 +++++++++++++---
tests/dom_tests/dom_utils_test.coffee | 8 ++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee
index 38b23202..70e52a6c 100644
--- a/lib/dom_utils.coffee
+++ b/lib/dom_utils.coffee
@@ -46,11 +46,21 @@ DomUtils =
#
getVisibleClientRect: (element) ->
# Note: this call will be expensive if we modify the DOM in between calls.
- clientRects = element.getClientRects()
+ clientRects = ({
+ top: clientRect.top, right: clientRect.right, bottom: clientRect.bottom, left: clientRect.left,
+ width: clientRect.width, height: clientRect.height
+ } for clientRect in element.getClientRects())
for clientRect in clientRects
- if (clientRect.top < -2 || clientRect.top >= window.innerHeight - 4 ||
- clientRect.left < -2 || clientRect.left >= window.innerWidth - 4)
+ if (clientRect.top < 0)
+ clientRect.height += clientRect.top
+ clientRect.top = 0
+
+ if (clientRect.left < 0)
+ clientRect.width += clientRect.left
+ clientRect.left = 0
+
+ if (clientRect.top >= window.innerHeight - 4 || clientRect.left >= window.innerWidth - 4)
continue
if (clientRect.width < 3 || clientRect.height < 3)
diff --git a/tests/dom_tests/dom_utils_test.coffee b/tests/dom_tests/dom_utils_test.coffee
index d0f881ba..130a3014 100644
--- a/tests/dom_tests/dom_utils_test.coffee
+++ b/tests/dom_tests/dom_utils_test.coffee
@@ -42,6 +42,14 @@ context "Check visibility",
assert.equal null, DomUtils.getVisibleClientRect document.getElementById 'foo'
assert.equal null, DomUtils.getVisibleClientRect document.getElementById 'bar'
+ should "detect links only partially outside viewport as visible", ->
+ document.getElementById("test-div").innerHTML = """
+ test
+ test
+ """
+ assert.isTrue (DomUtils.getVisibleClientRect document.getElementById 'foo') != null
+ assert.isTrue (DomUtils.getVisibleClientRect document.getElementById 'bar') != null
+
should "detect opacity:0 links as hidden", ->
document.getElementById("test-div").innerHTML = """
test
--
cgit v1.2.3
From 004f9a119d15d1b7e96ba50c1fec2c56b052a5b8 Mon Sep 17 00:00:00 2001
From: Stanley Shyiko
Date: Mon, 28 Oct 2013 23:00:21 +0200
Subject: Fixed sporadic utils_test failure (which could be reproduced when
settings_test did not precede utils_test)
---
tests/unit_tests/utils_test.coffee | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/unit_tests/utils_test.coffee b/tests/unit_tests/utils_test.coffee
index e1aa32c7..91a06135 100644
--- a/tests/unit_tests/utils_test.coffee
+++ b/tests/unit_tests/utils_test.coffee
@@ -1,5 +1,7 @@
require "./test_helper.js"
extend(global, require "../../lib/utils.js")
+Utils.getCurrentVersion = -> '1.43'
+global.localStorage = {}
extend(global, require "../../background_scripts/settings.js")
context "isUrl",
--
cgit v1.2.3