RESOLVED FIXED103067
Keyboard caret movement in textarea with RTL Override Character can make tab unresponsive
https://bugs.webkit.org/show_bug.cgi?id=103067
Summary Keyboard caret movement in textarea with RTL Override Character can make tab ...
Yair Yogev
Reported 2012-11-22 06:43:28 PST
Steps to repro: 1. Copy that 7th line from the source code of http://xkcd.com/1137/ (view-source:http://xkcd.com/1137/ from chrome) 2. Type a line of text in the comments textarea in this very page, for example type "one two three" and press enter. 3. Paste that 7th line you copied before (it should appear in the beginning of the second line) 4. Use your mouse to select the "<title>xkcd: " prefix of that line you pasted and press the Delete key. 5. Now press Left 6. The tab is now unresponsive. Tested using: Google Chrome 25.0.1323.1 (Official Build 167142) dev-m OS Windows XP WebKit 537.19 (@134111) JavaScript V8 3.15.1.2 and also using Windows Safari 5.1.7 (7534.57.2) with r131444 WebKit
Attachments
testcase (388 bytes, text/html)
2012-11-22 07:24 PST, Yair Yogev
no flags
first try (4.16 KB, patch)
2012-12-05 11:25 PST, Yi Shen
rniwa: review-
rniwa: commit-queue-
updated base on Niwa's review (5.26 KB, patch)
2012-12-05 14:05 PST, Yi Shen
rniwa: review+
rniwa: commit-queue-
fix test (5.02 KB, patch)
2012-12-10 15:02 PST, Yi Shen
no flags
Jeremy Moskovich
Comment 1 2012-11-22 06:56:45 PST
Able to reproduce on the following browsers: * Chrome 25.0.1323.0 on OS X * Safari 6.0.2 on OS X Just to clarify step #4 - to select, click on the left side of the first line and drag all the way past the line to the right. "<title>xkcd: " will be selected.
Yair Yogev
Comment 2 2012-11-22 07:24:37 PST
Created attachment 175672 [details] testcase
Yi Shen
Comment 3 2012-12-04 14:29:16 PST
Is anyone working on this issue? If not, I will work on it.
Ryosuke Niwa
Comment 4 2012-12-04 16:02:27 PST
Go for it!
Yi Shen
Comment 5 2012-12-05 11:25:49 PST
Created attachment 177801 [details] first try A quick fix for this crash issue.
Ryosuke Niwa
Comment 6 2012-12-05 11:54:07 PST
Comment on attachment 177801 [details] first try View in context: https://bugs.webkit.org/attachment.cgi?id=177801&action=review > Source/WebCore/editing/VisiblePosition.cpp:149 > InlineBox* prevBox = box->prevLeafChild(); > - if (!prevBox) { > + if (!prevBox || prevBox->isLineBreak()) { I think what you want to do here is to call prevLeafChildIgnoringLineBreak() in the previous line. Also, you probably need to do the same thing in leftVisuallyDistinctCandidate.
Ryosuke Niwa
Comment 7 2012-12-05 11:54:29 PST
Comment on attachment 177801 [details] first try r- because it’s missing a fix in leftVisuallyDistinctCandidate.
Yair Yogev
Comment 8 2012-12-05 12:10:37 PST
did you mean rightVisuallyDistinctCandidate ?
Ryosuke Niwa
Comment 9 2012-12-05 12:11:14 PST
(In reply to comment #8) > did you mean rightVisuallyDistinctCandidate ? Oops, yeah, that’s what I meant.
Yi Shen
Comment 10 2012-12-05 14:05:13 PST
Created attachment 177825 [details] updated base on Niwa's review Thanks for the review, niwa :)
Ryosuke Niwa
Comment 11 2012-12-07 14:14:23 PST
Comment on attachment 177825 [details] updated base on Niwa's review View in context: https://bugs.webkit.org/attachment.cgi?id=177825&action=review > Source/WebCore/editing/VisiblePosition.cpp:148 > - InlineBox* prevBox = box->prevLeafChild(); > + InlineBox* prevBox = box->prevLeafChildIgnoringLineBreak(); Looks much better! > LayoutTests/editing/selection/move-by-character-crash-test-textarea.html:11 > + var test = document.getElementById("test_move_by_character"); Please use camelCase.
Yi Shen
Comment 12 2012-12-10 15:02:57 PST
Created attachment 178641 [details] fix test
WebKit Review Bot
Comment 13 2012-12-10 15:04:27 PST
Comment on attachment 178641 [details] fix test Rejecting attachment 178641 [details] from commit-queue. max.hong.shen@gmail.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py. - If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags. - If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed). The commit-queue restarts itself every 2 hours. After restart the commit-queue will correctly respect your committer rights.
WebKit Review Bot
Comment 14 2012-12-10 15:31:36 PST
Comment on attachment 178641 [details] fix test Clearing flags on attachment: 178641 Committed r137213: <http://trac.webkit.org/changeset/137213>
WebKit Review Bot
Comment 15 2012-12-10 15:31:40 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.