Bug 129586

Summary: Find results on simple lines are not marked correctly
Product: WebKit Reporter: Antti Koivisto <koivisto>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal Keywords: InRadar
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
patch
none
rebased kling: review+

Description Antti Koivisto 2014-03-02 17:01:37 PST
Some cases end up being O(n^2)
Comment 1 Antti Koivisto 2014-03-03 08:50:18 PST
Created attachment 225657 [details]
patch
Comment 2 Antti Koivisto 2014-03-03 08:50:53 PST
<rdar://problem/15618878>
Comment 3 Antti Koivisto 2014-03-03 09:38:41 PST
Created attachment 225662 [details]
rebased
Comment 4 Andreas Kling 2014-03-03 09:48:34 PST
Comment on attachment 225662 [details]
rebased

View in context: https://bugs.webkit.org/attachment.cgi?id=225662&action=review

r=me

> Source/WebCore/editing/TextIterator.cpp:544
> -        while (runEnd < str.length() && (deprecatedIsCollapsibleWhitespace(str[runEnd]) || str[runEnd] == '\t'))
> +        while (runEnd < end && (deprecatedIsCollapsibleWhitespace(str[runEnd]) || str[runEnd] == '\t'))

It irks me that we are calling operator[] on WTF::String in a loop instead of at least just operating on the StringImpl, but this is hardly time||place for that kinda cleanup.

> Source/WebCore/editing/TextIterator.cpp:1304
> -    if (!renderer->firstTextBox() && text.length() > 0)
> +    if (!renderer->hasRenderedText() && text.length() > 0)

We should make the fat linebox getters assert that we are not in simple linebox mode.
(Or better yet, abstract away the ability to call them in the wrong context by encapsulating lines.)
Comment 5 Antti Koivisto 2014-03-03 13:06:08 PST
https://trac.webkit.org/r165002