[Webkit-unassigned] [Bug 25868] New: Frame::markAllMatchesForText prematurely aborts while highlighting text

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue May 19 10:39:01 PDT 2009


https://bugs.webkit.org/show_bug.cgi?id=25868

           Summary: Frame::markAllMatchesForText prematurely aborts while
                    highlighting text
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: All
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: New Bugs
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: finnur.webkit at gmail.com


I can easily reproduce a problem with highlighting in
Frame::markAllMatchesForText. 

The problem is this:

On certain HTML files, the markAllMatchesForText is aborted before reaching the
end (resulting in failure to highlight matches). 

A superficial look through the annotations lead me to a bug titled "Searching
in text areas" (https://bugs.webkit.org/show_bug.cgi?id=7023), which was fixed
and I think causes this.

I have a reduced HTML code that I use to reproduce this bug:

<!doctype html>
<body>
  <input type=text value="html"> 
  Call markAllMatchesForText with html[space] and it should highlight these
words: html html done.
</body>

Note that <input type=text> has the string "html" in it.

If you call markAllMatchesForText for "html " (note the trailing space) on this
frame, it will break and not highlight anything (see comment). Observe my
comment in the snippet below, which is where it breaks.

unsigned Frame::markAllMatchesForText(const String& target, bool caseFlag,
unsigned limit)
{
    if (target.isEmpty())
        return 0;

    RefPtr<Range> searchRange(rangeOfContents(document()));

    ExceptionCode exception = 0;
    unsigned matchCount = 0;
    do {
        RefPtr<Range> resultRange(findPlainText(searchRange.get(), target,
true, caseFlag));
        if (resultRange->collapsed(exception)) {
            if (!resultRange->startContainer()->isInShadowTree())
                break;  //  <<  NOTE: THIS IS WHERE IT ABORTS.


If it is easy to fix, feel free to suggest changes to this code that will make
this work and I would be happy to try it out in my tree and submit a patch (if
it works).


-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list