When the second AccessibleCaret is out of scrollport, its logical
position becomes (0, 0). Therefore we should adjust the dragging point
for first AccessibleCaret only if dragDownBoundaryY > 0.
We should not dispatch an event if it is not safe to run script since
the event handlers might be implemented by Javascript.
To fix this, we always use AsyncEventDispatcher to dispatch the event.
See AccessibleCaretManager.h for the class description.
AccessibleCaretManager uses two AccessibleCarets to unify the
functionality provided by TouchCaret and SelectionCarets. It has
"cursor" mode and "selection" mode, which corresponds to TouchCaret and
SelectionCarets, respectively.