| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 235 |
| 236 WebLocalFrameImpl* mainFrameImpl = m_ownerFrame.viewImpl()->mainFrameImpl(); | 236 WebLocalFrameImpl* mainFrameImpl = m_ownerFrame.viewImpl()->mainFrameImpl(); |
| 237 Position searchStart = firstPositionInNode(m_ownerFrame.frame()->document())
; | 237 Position searchStart = firstPositionInNode(m_ownerFrame.frame()->document())
; |
| 238 Position searchEnd = lastPositionInNode(m_ownerFrame.frame()->document()); | 238 Position searchEnd = lastPositionInNode(m_ownerFrame.frame()->document()); |
| 239 ASSERT(searchStart.document() == searchEnd.document()); | 239 ASSERT(searchStart.document() == searchEnd.document()); |
| 240 | 240 |
| 241 if (m_resumeScopingFromRange) { | 241 if (m_resumeScopingFromRange) { |
| 242 // This is a continuation of a scoping operation that timed out and didn
't | 242 // This is a continuation of a scoping operation that timed out and didn
't |
| 243 // complete last time around, so we should start from where we left off. | 243 // complete last time around, so we should start from where we left off. |
| 244 ASSERT(m_resumeScopingFromRange->collapsed()); | 244 ASSERT(m_resumeScopingFromRange->collapsed()); |
| 245 searchStart = m_resumeScopingFromRange->startPosition().next(); | 245 searchStart = m_resumeScopingFromRange->startPosition(); |
| 246 if (searchStart.document() != searchEnd.document()) | 246 if (searchStart.document() != searchEnd.document()) |
| 247 return; | 247 return; |
| 248 } | 248 } |
| 249 | 249 |
| 250 // This timeout controls how long we scope before releasing control. This | 250 // This timeout controls how long we scope before releasing control. This |
| 251 // value does not prevent us from running for longer than this, but it is | 251 // value does not prevent us from running for longer than this, but it is |
| 252 // periodically checked to see if we have exceeded our allocated time. | 252 // periodically checked to see if we have exceeded our allocated time. |
| 253 const double maxScopingDuration = 0.1; // seconds | 253 const double maxScopingDuration = 0.1; // seconds |
| 254 | 254 |
| 255 int matchCount = 0; | 255 int matchCount = 0; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 } | 311 } |
| 312 | 312 |
| 313 addMarker(resultRange.get(), foundActiveMatch); | 313 addMarker(resultRange.get(), foundActiveMatch); |
| 314 | 314 |
| 315 m_findMatchesCache.append(FindMatch(resultRange.get(), m_lastMatchCount
+ matchCount)); | 315 m_findMatchesCache.append(FindMatch(resultRange.get(), m_lastMatchCount
+ matchCount)); |
| 316 | 316 |
| 317 // Set the new start for the search range to be the end of the previous | 317 // Set the new start for the search range to be the end of the previous |
| 318 // result range. There is no need to use a VisiblePosition here, | 318 // result range. There is no need to use a VisiblePosition here, |
| 319 // since findPlainText will use a TextIterator to go over the visible | 319 // since findPlainText will use a TextIterator to go over the visible |
| 320 // text nodes. | 320 // text nodes. |
| 321 searchStart = resultStart.next(); | 321 searchStart = resultEnd; |
| 322 | 322 |
| 323 m_resumeScopingFromRange = Range::create(*resultStart.document(), result
Start, resultStart); | 323 m_resumeScopingFromRange = Range::create(*resultStart.document(), result
Start, resultStart); |
| 324 timedOut = (currentTime() - startTime) >= maxScopingDuration; | 324 timedOut = (currentTime() - startTime) >= maxScopingDuration; |
| 325 } while (!timedOut); | 325 } while (!timedOut); |
| 326 | 326 |
| 327 // Remember what we search for last time, so we can skip searching if more | 327 // Remember what we search for last time, so we can skip searching if more |
| 328 // letters are added to the search string (and last outcome was 0). | 328 // letters are added to the search string (and last outcome was 0). |
| 329 m_lastSearchString = searchText; | 329 m_lastSearchString = searchText; |
| 330 | 330 |
| 331 if (matchCount > 0) { | 331 if (matchCount > 0) { |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 if (!m_framesScopingCount) | 730 if (!m_framesScopingCount) |
| 731 m_ownerFrame.increaseMatchCount(0, identifier); | 731 m_ownerFrame.increaseMatchCount(0, identifier); |
| 732 } | 732 } |
| 733 | 733 |
| 734 int TextFinder::ordinalOfFirstMatch() const | 734 int TextFinder::ordinalOfFirstMatch() const |
| 735 { | 735 { |
| 736 return ordinalOfFirstMatchForFrame(&m_ownerFrame); | 736 return ordinalOfFirstMatchForFrame(&m_ownerFrame); |
| 737 } | 737 } |
| 738 | 738 |
| 739 } // namespace blink | 739 } // namespace blink |
| OLD | NEW |