From d2691a43cc97a89c4d127ef6ef0be4c0417c675d Mon Sep 17 00:00:00 2001
From: Stephen Blott
Date: Thu, 17 Mar 2016 10:37:11 +0000
Subject: Filter out link-hint false positives.
We recognise elements with a class names containing the text "button" as
clickable.  However, often they're not, they're just wrapping a
clickable thing, like a real button.
Here, we filter out such false positives.
This has two effects:
- It eliminates quite a number of real false pasitives in practice.
- With fewer hints close together, fewer hint markers are obscured by
  the hints from (non-clickable) wrappers.  This reduces the need for
  rotating the hint stacking order, e.g #1252.
---
 tests/dom_tests/dom_tests.coffee | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
(limited to 'tests')
diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee
index bc137a56..0dd6e122 100644
--- a/tests/dom_tests/dom_tests.coffee
+++ b/tests/dom_tests/dom_tests.coffee
@@ -109,6 +109,25 @@ createGeneralHintTests = (isFilteredMode) ->
 createGeneralHintTests false
 createGeneralHintTests true
 
+context "False positives in link-hint",
+
+  setup ->
+    testContent = 'false positiveclickable' + 'clickable'
+    document.getElementById("test-div").innerHTML = testContent
+    stubSettings "filterLinkHints", true
+    stubSettings "linkHintNumbers", "12"
+
+  tearDown ->
+    document.getElementById("test-div").innerHTML = ""
+
+  should "handle false positives", ->
+    linkHints = activateLinkHintsMode()
+    hintMarkers = getHintMarkers()
+    linkHints.deactivateMode()
+    assert.equal 2, hintMarkers.length
+    for hintMarker in hintMarkers
+      assert.equal "clickable", hintMarker.linkText
+
 inputs = []
 context "Test link hints for focusing input elements correctly",
 
-- 
cgit v1.2.3