Chromium Code Reviews| 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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 144 | (options.medialCapitalAsWordStart ? TreatMedialCapitalAsWordStart : 0) | 144 | (options.medialCapitalAsWordStart ? TreatMedialCapitalAsWordStart : 0) |
| 145 | (options.findNext ? 0 : StartInSelection); | 145 | (options.findNext ? 0 : StartInSelection); |
| 146 m_activeMatch = ownerFrame().frame()->editor().findStringAndScrollToVisible( searchText, m_activeMatch.get(), findOptions); | 146 m_activeMatch = ownerFrame().frame()->editor().findStringAndScrollToVisible( searchText, m_activeMatch.get(), findOptions); |
| 147 | 147 |
| 148 if (!m_activeMatch) { | 148 if (!m_activeMatch) { |
| 149 // If we're finding next the next active match might not be in the curre nt frame. | 149 // If we're finding next the next active match might not be in the curre nt frame. |
| 150 // In this case we don't want to clear the matches cache. | 150 // In this case we don't want to clear the matches cache. |
| 151 if (!options.findNext) | 151 if (!options.findNext) |
| 152 clearFindMatchesCache(); | 152 clearFindMatchesCache(); |
| 153 | 153 |
| 154 ownerFrame().invalidateAll(); | 154 ownerFrame().frameView()->invalidatePaintForTickmarks(); |
| 155 return false; | 155 return false; |
| 156 } | 156 } |
| 157 | 157 |
| 158 #if OS(ANDROID) | 158 #if OS(ANDROID) |
| 159 ownerFrame().viewImpl()->zoomToFindInPageRect(ownerFrame().frameView()->cont entsToRootFrame(enclosingIntRect(LayoutObject::absoluteBoundingBoxRectForRange(m _activeMatch.get())))); | 159 ownerFrame().viewImpl()->zoomToFindInPageRect(ownerFrame().frameView()->cont entsToRootFrame(enclosingIntRect(LayoutObject::absoluteBoundingBoxRectForRange(m _activeMatch.get())))); |
| 160 #endif | 160 #endif |
| 161 | 161 |
| 162 setMarkerActive(m_activeMatch.get(), true); | 162 setMarkerActive(m_activeMatch.get(), true); |
| 163 WebLocalFrameImpl* oldActiveFrame = mainFrameImpl->ensureTextFinder().m_curr entActiveMatchFrame; | 163 WebLocalFrameImpl* oldActiveFrame = mainFrameImpl->ensureTextFinder().m_curr entActiveMatchFrame; |
| 164 mainFrameImpl->ensureTextFinder().m_currentActiveMatchFrame = &ownerFrame(); | 164 mainFrameImpl->ensureTextFinder().m_currentActiveMatchFrame = &ownerFrame(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 199 | 199 |
| 200 void TextFinder::stopFindingAndClearSelection() | 200 void TextFinder::stopFindingAndClearSelection() |
| 201 { | 201 { |
| 202 cancelPendingScopingEffort(); | 202 cancelPendingScopingEffort(); |
| 203 | 203 |
| 204 // Remove all markers for matches found and turn off the highlighting. | 204 // Remove all markers for matches found and turn off the highlighting. |
| 205 ownerFrame().frame()->document()->markers().removeMarkers(DocumentMarker::Te xtMatch); | 205 ownerFrame().frame()->document()->markers().removeMarkers(DocumentMarker::Te xtMatch); |
| 206 ownerFrame().frame()->editor().setMarkedTextMatchesAreHighlighted(false); | 206 ownerFrame().frame()->editor().setMarkedTextMatchesAreHighlighted(false); |
| 207 clearFindMatchesCache(); | 207 clearFindMatchesCache(); |
| 208 | 208 |
| 209 // Let the frame know that we don't want tickmarks or highlighting anymore. | 209 // Let the frame know that we don't want tickmarks anymore. |
|
chrishtr
2015/04/20 17:53:25
Highlighting is not relevant here? Just checking b
Xianzhu
2015/04/20 18:13:48
Highlightings have been removed by line 205, not r
| |
| 210 ownerFrame().invalidateAll(); | 210 ownerFrame().frameView()->invalidatePaintForTickmarks(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void TextFinder::reportFindInPageResultToAccessibility(int identifier) | 213 void TextFinder::reportFindInPageResultToAccessibility(int identifier) |
| 214 { | 214 { |
| 215 AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(ownerFrame().frame()- >document()->existingAXObjectCache()); | 215 AXObjectCacheImpl* axObjectCache = toAXObjectCacheImpl(ownerFrame().frame()- >document()->existingAXObjectCache()); |
| 216 if (!axObjectCache) | 216 if (!axObjectCache) |
| 217 return; | 217 return; |
| 218 | 218 |
| 219 AXObject* startObject = axObjectCache->get(m_activeMatch->startContainer()); | 219 AXObject* startObject = axObjectCache->get(m_activeMatch->startContainer()); |
| 220 AXObject* endObject = axObjectCache->get(m_activeMatch->endContainer()); | 220 AXObject* endObject = axObjectCache->get(m_activeMatch->endContainer()); |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 404 } | 404 } |
| 405 | 405 |
| 406 void TextFinder::finishCurrentScopingEffort(int identifier) | 406 void TextFinder::finishCurrentScopingEffort(int identifier) |
| 407 { | 407 { |
| 408 flushCurrentScopingEffort(identifier); | 408 flushCurrentScopingEffort(identifier); |
| 409 | 409 |
| 410 m_scopingInProgress = false; | 410 m_scopingInProgress = false; |
| 411 m_lastFindRequestCompletedWithNoMatches = !m_lastMatchCount; | 411 m_lastFindRequestCompletedWithNoMatches = !m_lastMatchCount; |
| 412 | 412 |
| 413 // This frame is done, so show any scrollbar tickmarks we haven't drawn yet. | 413 // This frame is done, so show any scrollbar tickmarks we haven't drawn yet. |
| 414 ownerFrame().invalidateScrollbar(); | 414 ownerFrame().frameView()->invalidatePaintForTickmarks(); |
| 415 } | 415 } |
| 416 | 416 |
| 417 void TextFinder::cancelPendingScopingEffort() | 417 void TextFinder::cancelPendingScopingEffort() |
| 418 { | 418 { |
| 419 #if ENABLE(OILPAN) | 419 #if ENABLE(OILPAN) |
| 420 for (DeferredScopeStringMatches* deferredWork : m_deferredScopingWork) | 420 for (DeferredScopeStringMatches* deferredWork : m_deferredScopingWork) |
| 421 deferredWork->dispose(); | 421 deferredWork->dispose(); |
| 422 #endif | 422 #endif |
| 423 m_deferredScopingWork.clear(); | 423 m_deferredScopingWork.clear(); |
| 424 | 424 |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 737 m_deferredScopingWork.remove(index); | 737 m_deferredScopingWork.remove(index); |
| 738 | 738 |
| 739 scopeStringMatches(identifier, searchText, options, reset); | 739 scopeStringMatches(identifier, searchText, options, reset); |
| 740 } | 740 } |
| 741 | 741 |
| 742 void TextFinder::invalidateIfNecessary() | 742 void TextFinder::invalidateIfNecessary() |
| 743 { | 743 { |
| 744 if (m_lastMatchCount <= m_nextInvalidateAfter) | 744 if (m_lastMatchCount <= m_nextInvalidateAfter) |
| 745 return; | 745 return; |
| 746 | 746 |
| 747 // FIXME: (http://b/1088165) Optimize the drawing of the tickmarks and | 747 // FIXME: (http://crbug.com/6819) Optimize the drawing of the tickmarks and |
| 748 // remove this. This calculation sets a milestone for when next to | 748 // remove this. This calculation sets a milestone for when next to |
| 749 // invalidate the scrollbar and the content area. We do this so that we | 749 // invalidate the scrollbar and the content area. We do this so that we |
| 750 // don't spend too much time drawing the scrollbar over and over again. | 750 // don't spend too much time drawing the scrollbar over and over again. |
| 751 // Basically, up until the first 500 matches there is no throttle. | 751 // Basically, up until the first 500 matches there is no throttle. |
| 752 // After the first 500 matches, we set set the milestone further and | 752 // After the first 500 matches, we set set the milestone further and |
| 753 // further out (750, 1125, 1688, 2K, 3K). | 753 // further out (750, 1125, 1688, 2K, 3K). |
| 754 static const int startSlowingDownAfter = 500; | 754 static const int startSlowingDownAfter = 500; |
| 755 static const int slowdown = 750; | 755 static const int slowdown = 750; |
| 756 | 756 |
| 757 int i = m_lastMatchCount / startSlowingDownAfter; | 757 int i = m_lastMatchCount / startSlowingDownAfter; |
| 758 m_nextInvalidateAfter += i * slowdown; | 758 m_nextInvalidateAfter += i * slowdown; |
| 759 ownerFrame().invalidateScrollbar(); | 759 ownerFrame().frameView()->invalidatePaintForTickmarks(); |
| 760 } | 760 } |
| 761 | 761 |
| 762 void TextFinder::flushCurrentScoping() | 762 void TextFinder::flushCurrentScoping() |
| 763 { | 763 { |
| 764 flushCurrentScopingEffort(m_findRequestIdentifier); | 764 flushCurrentScopingEffort(m_findRequestIdentifier); |
| 765 } | 765 } |
| 766 | 766 |
| 767 void TextFinder::setMatchMarkerActive(bool active) | 767 void TextFinder::setMatchMarkerActive(bool active) |
| 768 { | 768 { |
| 769 setMarkerActive(m_activeMatch.get(), active); | 769 setMarkerActive(m_activeMatch.get(), active); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 790 { | 790 { |
| 791 visitor->trace(m_ownerFrame); | 791 visitor->trace(m_ownerFrame); |
| 792 visitor->trace(m_currentActiveMatchFrame); | 792 visitor->trace(m_currentActiveMatchFrame); |
| 793 visitor->trace(m_activeMatch); | 793 visitor->trace(m_activeMatch); |
| 794 visitor->trace(m_resumeScopingFromRange); | 794 visitor->trace(m_resumeScopingFromRange); |
| 795 visitor->trace(m_deferredScopingWork); | 795 visitor->trace(m_deferredScopingWork); |
| 796 visitor->trace(m_findMatchesCache); | 796 visitor->trace(m_findMatchesCache); |
| 797 } | 797 } |
| 798 | 798 |
| 799 } // namespace blink | 799 } // namespace blink |
| OLD | NEW |