| Index: Source/core/editing/FrameSelection.h
 | 
| diff --git a/Source/core/editing/FrameSelection.h b/Source/core/editing/FrameSelection.h
 | 
| index d4eefe515b79b5a6c179afcb842c55044e4abcde..9b1aeb59acc79d216bc2c6401ed88d6d90f8df57 100644
 | 
| --- a/Source/core/editing/FrameSelection.h
 | 
| +++ b/Source/core/editing/FrameSelection.h
 | 
| @@ -34,6 +34,7 @@
 | 
|  #include "platform/Timer.h"
 | 
|  #include "platform/geometry/IntRect.h"
 | 
|  #include "platform/geometry/LayoutRect.h"
 | 
| +#include "platform/heap/Handle.h"
 | 
|  #include "wtf/Noncopyable.h"
 | 
|  
 | 
|  namespace WebCore {
 | 
| @@ -56,10 +57,17 @@ enum RevealExtentOption {
 | 
|      DoNotRevealExtent
 | 
|  };
 | 
|  
 | 
| -class FrameSelection FINAL : public VisibleSelection::ChangeObserver, private CaretBase {
 | 
| +class FrameSelection FINAL : public NoBaseWillBeGarbageCollectedFinalized<FrameSelection>, public VisibleSelection::ChangeObserver, private CaretBase {
 | 
|      WTF_MAKE_NONCOPYABLE(FrameSelection);
 | 
| -    WTF_MAKE_FAST_ALLOCATED;
 | 
| +    WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
 | 
| +    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FrameSelection);
 | 
|  public:
 | 
| +    static PassOwnPtrWillBeRawPtr<FrameSelection> create(LocalFrame* frame = 0)
 | 
| +    {
 | 
| +        return adoptPtrWillBeNoop(new FrameSelection(frame));
 | 
| +    }
 | 
| +    virtual ~FrameSelection();
 | 
| +
 | 
|      enum EAlteration { AlterationMove, AlterationExtend };
 | 
|      enum CursorAlignOnScroll { AlignCursorOnScrollIfNeeded,
 | 
|                                 AlignCursorOnScrollAlways };
 | 
| @@ -77,9 +85,6 @@ public:
 | 
|          return static_cast<EUserTriggered>(options & UserTriggered);
 | 
|      }
 | 
|  
 | 
| -    explicit FrameSelection(LocalFrame* = 0);
 | 
| -    virtual ~FrameSelection();
 | 
| -
 | 
|      Element* rootEditableElement() const { return m_selection.rootEditableElement(); }
 | 
|      Element* rootEditableElementOrDocumentElement() const;
 | 
|      Node* rootEditableElementOrTreeScopeRootNode() const;
 | 
| @@ -187,7 +192,7 @@ public:
 | 
|      void notifyRendererOfSelectionChange(EUserTriggered);
 | 
|  
 | 
|      EditingStyle* typingStyle() const;
 | 
| -    void setTypingStyle(PassRefPtr<EditingStyle>);
 | 
| +    void setTypingStyle(PassRefPtrWillBeRawPtr<EditingStyle>);
 | 
|      void clearTypingStyle();
 | 
|  
 | 
|      String selectedText() const;
 | 
| @@ -205,7 +210,11 @@ public:
 | 
|      // VisibleSelection::ChangeObserver interface.
 | 
|      virtual void didChangeVisibleSelection() OVERRIDE;
 | 
|  
 | 
| +    virtual void trace(Visitor*) OVERRIDE;
 | 
| +
 | 
|  private:
 | 
| +    explicit FrameSelection(LocalFrame*);
 | 
| +
 | 
|      enum EPositionType { START, END, BASE, EXTENT };
 | 
|  
 | 
|      void respondToNodeModification(Node&, bool baseRemoved, bool extentRemoved, bool startRemoved, bool endRemoved);
 | 
| @@ -258,11 +267,11 @@ private:
 | 
|      // The range specified by the user, which may not be visually canonicalized (hence "logical").
 | 
|      // This will be invalidated if the underlying VisibleSelection changes. If that happens, this variable will
 | 
|      // become null, in which case logical positions == visible positions.
 | 
| -    RefPtrWillBePersistent<Range> m_logicalRange;
 | 
| +    RefPtrWillBeMember<Range> m_logicalRange;
 | 
|  
 | 
| -    RefPtr<Node> m_previousCaretNode; // The last node which painted the caret. Retained for clearing the old caret when it moves.
 | 
| +    RefPtrWillBeMember<Node> m_previousCaretNode; // The last node which painted the caret. Retained for clearing the old caret when it moves.
 | 
|  
 | 
| -    RefPtr<EditingStyle> m_typingStyle;
 | 
| +    RefPtrWillBeMember<EditingStyle> m_typingStyle;
 | 
|  
 | 
|      Timer<FrameSelection> m_caretBlinkTimer;
 | 
|      // The painted bounds of the caret in absolute coordinates
 | 
| @@ -284,7 +293,7 @@ inline void FrameSelection::clearTypingStyle()
 | 
|      m_typingStyle.clear();
 | 
|  }
 | 
|  
 | 
| -inline void FrameSelection::setTypingStyle(PassRefPtr<EditingStyle> style)
 | 
| +inline void FrameSelection::setTypingStyle(PassRefPtrWillBeRawPtr<EditingStyle> style)
 | 
|  {
 | 
|      m_typingStyle = style;
 | 
|  }
 | 
| 
 |