There is a common pattern on the web where a click listener is registered on a
container element high up in the DOM tree, and based on the target of the click
events, it performs the appropriate action. In such cases, our existing fluffing
code was not getting activated anywhere inside the container, because the entire
container was considered clickable. However, this is not user-friendly because
often the actual targets inside the container are small and hard to hit. Also,
the fluffing code will often take the container element itself as the target,
even if the user actually hit something inside the container.
This patch changes this behaviour so when an event hits inside a clickable
container, fluffing still occurs, but is restricted to DOM descendants of the
container. This allows fluffing to work in the above scenarios, and since the
events will bubble up to the container, the listeners on the container are
guaranteed to still trigger.
There is a common pattern on the web where a click listener is registered on a
container element high up in the DOM tree, and based on the target of the click
events, it performs the appropriate action. In such cases, our existing fluffing
code was not getting activated anywhere inside the container, because the entire
container was considered clickable. However, this is not user-friendly because
often the actual targets inside the container are small and hard to hit. Also,
the fluffing code will often take the container element itself as the target,
even if the user actually hit something inside the container.
This patch changes this behaviour so when an event hits inside a clickable
container, fluffing still occurs, but is restricted to DOM descendants of the
container. This allows fluffing to work in the above scenarios, and since the
events will bubble up to the container, the listeners on the container are
guaranteed to still trigger.
These are SpiderMonkey-proprietary legacy feature which has been deprecated
and is expected to be removed in due course.
This commit also fixes a number of bugs in test_bug708874.xul. In particular,
because of the semicolon after the for head, the (alleged) loop body was only
executed for the final element of the array ({}), and because each of the
functions under test threw an exception, only the first call was executed.
I do not know of a way to test the changes in frame-verify.js, so I can't
guarantee they actually work.
AccessibleCaret should behave like TouchCaret and SelectionCarets. I
refactor the setUp() to support both the old and new preferences.
Rename test_selectioncarets_multiplerange.py to test_selectioncarets2.py
since it now contains more than just multirange tests.
_test_handle_tilt_when_carets_overlap_to_each_other() is modified
because AccessibleCaret does not inflate the caret hit rectangle as
TouchCaret/SelectionCarets did. The point for tilt caret edges need to
shrink a bit.
In test_touchcaret.py, instead of setting _large_expiration_time, I just
disable caret timeout by default for every test. For those timeout
tests, use one second timeout to reduce test running time, and allow
1.5x margin to prevent intermittent failures.
Refine test case that move touch caret to front by using the real
position at the front rather than (0, 0).
Use skip_if_not_rotatable decorator for better log message.
This is more likely to be correct, and a necessary step in case we ever want
to move to Object.is.
This keeps ise as an alias for is, and introduces is_loosely for the old
behaviour.
This will help fix an intermittent test failure as explained in bug
1142360 comment 301. It also has the additional benefit of making
things faster overall, since the reflows of the huge mochitest test
runner page every time the bidi.numeral pref changes are very expensive,
and such overhead doesn't exist in the reftest framework.
The original test had dragged the second SelectionCaret over
non-selectable elements. After that, we should further drag the first
SelectionCaret over non-selectable elements, and confirm that the
selection ranges are correct.
Note that this adds a parameter to the callback function so that we can
keep track of which canvas is for the test and which is for the
reference; previously we didn't care.
It also puts testfile and reffile in local variables so that they can be
reused, and then appends the extra bidi numeral information to reffile
when calling assertSnapshots so that the messages contain the same (or
more) data as before.