| Index: Source/core/editing/VisibleSelection.h
 | 
| diff --git a/Source/core/editing/VisibleSelection.h b/Source/core/editing/VisibleSelection.h
 | 
| index c14630c15d700258279bc14bf5c7d10716c4e681..920c6b8ff035171de3d3a0935a6c6da2addb311e 100644
 | 
| --- a/Source/core/editing/VisibleSelection.h
 | 
| +++ b/Source/core/editing/VisibleSelection.h
 | 
| @@ -39,6 +39,7 @@ const EAffinity SEL_DEFAULT_AFFINITY = DOWNSTREAM;
 | 
|  enum SelectionDirection { DirectionForward, DirectionBackward, DirectionRight, DirectionLeft };
 | 
|  
 | 
|  class VisibleSelection {
 | 
| +    DISALLOW_ALLOCATION();
 | 
|  public:
 | 
|      VisibleSelection();
 | 
|  
 | 
| @@ -116,18 +117,21 @@ public:
 | 
|      // or end is moved to a different position.
 | 
|      //
 | 
|      // Objects implementing |ChangeObserver| interface must outlive the VisibleSelection object.
 | 
| -    class ChangeObserver {
 | 
| +    class ChangeObserver : public WillBeGarbageCollectedMixin {
 | 
|          WTF_MAKE_NONCOPYABLE(ChangeObserver);
 | 
|      public:
 | 
|          ChangeObserver();
 | 
|          virtual ~ChangeObserver();
 | 
|          virtual void didChangeVisibleSelection() = 0;
 | 
| +        virtual void trace(Visitor*) { }
 | 
|      };
 | 
|  
 | 
|      void setChangeObserver(ChangeObserver&);
 | 
|      void clearChangeObserver();
 | 
|      void didChange(); // Fire the change observer, if any.
 | 
|  
 | 
| +    void trace(Visitor*);
 | 
| +
 | 
|  #ifndef NDEBUG
 | 
|      void debugPosition() const;
 | 
|      void formatForDebugger(char* buffer, unsigned length) const;
 | 
| @@ -156,7 +160,9 @@ private:
 | 
|  
 | 
|      EAffinity m_affinity;           // the upstream/downstream affinity of the caret
 | 
|  
 | 
| -    ChangeObserver* m_changeObserver;
 | 
| +    // Oilpan: this reference has a lifetime that is at least as long
 | 
| +    // as this object.
 | 
| +    RawPtrWillBeMember<ChangeObserver> m_changeObserver;
 | 
|  
 | 
|      // these are cached, can be recalculated by validate()
 | 
|      SelectionType m_selectionType; // None, Caret, Range
 | 
| 
 |