Chromium Code Reviews| Index: Source/web/TextFinder.h |
| diff --git a/Source/web/TextFinder.h b/Source/web/TextFinder.h |
| index a3b18ec177b16638adb5e0d5377a416d9a688da8..f71702f06e1837556d3d5f52871f4d862dd955d6 100644 |
| --- a/Source/web/TextFinder.h |
| +++ b/Source/web/TextFinder.h |
| @@ -34,6 +34,7 @@ |
| #include "WebFindOptions.h" |
| #include "core/editing/FindOptions.h" |
| #include "platform/geometry/FloatRect.h" |
| +#include "platform/heap/Handle.h" |
| #include "public/platform/WebFloatPoint.h" |
| #include "public/platform/WebFloatRect.h" |
| #include "public/platform/WebRect.h" |
| @@ -89,12 +90,10 @@ public: |
| ~TextFinder(); |
| -private: |
| - class DeferredScopeStringMatches; |
| - friend class DeferredScopeStringMatches; |
| - |
| - struct FindMatch { |
| - RefPtr<WebCore::Range> m_range; |
| + class FindMatch { |
| + ALLOW_ONLY_INLINE_ALLOCATION(); |
| + public: |
| + RefPtrWillBeMember<WebCore::Range> m_range; |
| // 1-based index within this frame. |
| int m_ordinal; |
| @@ -103,9 +102,15 @@ private: |
| // Lazily calculated by updateFindMatchRects. |
| WebCore::FloatRect m_rect; |
| - FindMatch(PassRefPtr<WebCore::Range>, int ordinal); |
| + FindMatch(PassRefPtrWillBeRawPtr<WebCore::Range>, int ordinal); |
| + |
| + void trace(WebCore::Visitor*); |
| }; |
| +private: |
| + class DeferredScopeStringMatches; |
| + friend class DeferredScopeStringMatches; |
| + |
| explicit TextFinder(WebFrameImpl& ownerFrame); |
| // Notifies the delegate about a new selection rect. |
| @@ -192,14 +197,14 @@ private: |
| WebFrameImpl* m_currentActiveMatchFrame; |
| // The range of the active match for the current frame. |
| - RefPtr<WebCore::Range> m_activeMatch; |
| + RefPtrWillBePersistent<WebCore::Range> m_activeMatch; |
| // The index of the active match for the current frame. |
| int m_activeMatchIndexInCurrentFrame; |
| // The scoping effort can time out and we need to keep track of where we |
| // ended our last search so we can continue from where we left of. |
| - RefPtr<WebCore::Range> m_resumeScopingFromRange; |
| + RefPtrWillBePersistent<WebCore::Range> m_resumeScopingFromRange; |
| // Keeps track of the last string this frame searched for. This is used for |
| // short-circuiting searches in the following scenarios: When a frame has |
| @@ -238,7 +243,7 @@ private: |
| int m_findMatchMarkersVersion; |
| // Local cache of the find match markers currently displayed for this frame. |
| - Vector<FindMatch> m_findMatchesCache; |
| + WillBePersistentHeapVector<FindMatch> m_findMatchesCache; |
| // Contents size when find-in-page match rects were last computed for this |
| // frame's cache. |
| @@ -263,4 +268,10 @@ private: |
| } // namespace blink |
| +namespace WTF { |
| +template <> struct VectorTraits<blink::TextFinder::FindMatch> : VectorTraitsBase<blink::TextFinder::FindMatch> { |
| + static const bool canInitializeWithMemset = true; |
|
haraken
2014/04/04 02:30:19
I think you can also specify "canMoveWithMemcpy =
|
| +}; |
| +} |
| + |
| #endif |