Issue 2220: FindNext doesn't work beyond page 1 of search results
http://code.google.com/p/chromium/issues/detail?id=2220

Comment #6 by [EMAIL PROTECTED]:
I was going to suggest this not be a 1.0 blocker, but you beat me to it.  
This is actually yet another case of a bug that would be fixed if we  
automatically hid the Find box on blur.
Then, when you start interacting with the page (ie. click the "Next  
Results") the Find box would disappear. My recommendation would be to up  
the priority on that bug and put it on
the 1.1 train, if it isn't there already.

In any case, the problem with this bug is that when the user clicks "Next  
results" the DOM is modified and the tickmark vector is partially/fully  
invalid. Ojan, Dimitri and I
brainstormed this problem a bit on Friday and we can think of a number of  
ways to approach this:

1) We can register for DOM change events and for each removed node, we  
could evict its descendants from the tickmark vector and for each added  
node we could do a search on that
subtree and add it to the vector. This would have to be done in a smart way  
so that we don't put a big load on the cpu if the DOM is changing a lot.

2) Another approach is that once we FindNext to an invalid tickmark (one  
that is no longer a descendant of the body node) we clear the tickmark  
vector for that frame, redo it and
restore state in such a way that the first new tickmark found becomes  
active.

3) We can alleviate some of the symptoms by just skipping over and evicting  
invalid tickmarks as we find them with FindNext (when we jump to an invalid  
tickmark we evict that
tickmark and try the next one until we find a valid one or reach the end of  
the tickmark vector).

Approach 3 is quick, dead simple, easy and very low risk, but of course  
means that you don't get new tickmarks added for the dynamic content that  
was just added to the page. :/ It
also doesn't address new nodes added to the DOM, it just removed invalid  
ones.

Approach 2 isn't very complex and doesn't come with much of a performance  
risk but feels a bit hacky, especially restoring back the state so that we  
get the right tickmark active
after redoing the search in the frame. And, of course, the new tickmarks  
wouldn't appear until you hit an invalid one. I took a stab at this and  
have it working in my tree, except
that if you FindNext from tickmark A (valid) to tickmark B (invalid), the  
new tickmarks appear but tickmark A is still the active one after doing  
FindNext. Another FindNext moves
active tickmark status to B. :/

Approach 1 is the most powerful and promising, but also the most complex  
approach and probably will take time to get right. Definately not worth the  
risk for 1.0.





-- 
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Chromium-bugs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/chromium-bugs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to