| Index: Source/modules/filesystem/DirectoryReader.cpp
 | 
| diff --git a/Source/modules/filesystem/DirectoryReader.cpp b/Source/modules/filesystem/DirectoryReader.cpp
 | 
| index c97fdea446c26cfa0a6396cce9ea9698f11cb19f..9d4de7ff69ecc28228a6d7b537f4f799bc615749 100644
 | 
| --- a/Source/modules/filesystem/DirectoryReader.cpp
 | 
| +++ b/Source/modules/filesystem/DirectoryReader.cpp
 | 
| @@ -40,24 +40,24 @@ namespace WebCore {
 | 
|  
 | 
|  class DirectoryReader::EntriesCallbackHelper : public EntriesCallback {
 | 
|  public:
 | 
| -    EntriesCallbackHelper(PassRefPtr<DirectoryReader> reader)
 | 
| +    EntriesCallbackHelper(PassRefPtrWillBeRawPtr<DirectoryReader> reader)
 | 
|          : m_reader(reader)
 | 
|      {
 | 
|      }
 | 
|  
 | 
| -    virtual void handleEvent(const Vector<RefPtr<Entry> >& entries) OVERRIDE
 | 
| +    virtual void handleEvent(const EntryHeapVector& entries) OVERRIDE
 | 
|      {
 | 
|          m_reader->addEntries(entries);
 | 
|      }
 | 
|  
 | 
|  private:
 | 
|      // FIXME: This RefPtr keeps the reader alive until all of the readDirectory results are received. crbug.com/350285
 | 
| -    RefPtr<DirectoryReader> m_reader;
 | 
| +    RefPtrWillBePersistent<DirectoryReader> m_reader;
 | 
|  };
 | 
|  
 | 
|  class DirectoryReader::ErrorCallbackHelper : public ErrorCallback {
 | 
|  public:
 | 
| -    ErrorCallbackHelper(PassRefPtr<DirectoryReader> reader)
 | 
| +    ErrorCallbackHelper(PassRefPtrWillBeRawPtr<DirectoryReader> reader)
 | 
|          : m_reader(reader)
 | 
|      {
 | 
|      }
 | 
| @@ -68,10 +68,10 @@ public:
 | 
|      }
 | 
|  
 | 
|  private:
 | 
| -    RefPtr<DirectoryReader> m_reader;
 | 
| +    RefPtrWillBePersistent<DirectoryReader> m_reader;
 | 
|  };
 | 
|  
 | 
| -DirectoryReader::DirectoryReader(PassRefPtr<DOMFileSystemBase> fileSystem, const String& fullPath)
 | 
| +DirectoryReader::DirectoryReader(PassRefPtrWillBeRawPtr<DOMFileSystemBase> fileSystem, const String& fullPath)
 | 
|      : DirectoryReaderBase(fileSystem, fullPath)
 | 
|      , m_isReading(false)
 | 
|  {
 | 
| @@ -110,12 +110,12 @@ void DirectoryReader::readEntries(PassOwnPtr<EntriesCallback> entriesCallback, P
 | 
|      m_errorCallback = errorCallback;
 | 
|  }
 | 
|  
 | 
| -void DirectoryReader::addEntries(const Vector<RefPtr<Entry> >& entries)
 | 
| +void DirectoryReader::addEntries(const EntryHeapVector& entries)
 | 
|  {
 | 
|      m_entries.appendVector(entries);
 | 
|      if (m_entriesCallback) {
 | 
|          OwnPtr<EntriesCallback> entriesCallback = m_entriesCallback.release();
 | 
| -        Vector<RefPtr<Entry> > entries;
 | 
| +        EntryHeapVector entries;
 | 
|          entries.swap(m_entries);
 | 
|          entriesCallback->handleEvent(entries);
 | 
|      }
 | 
| @@ -128,4 +128,11 @@ void DirectoryReader::onError(FileError* error)
 | 
|          m_errorCallback->handleEvent(error);
 | 
|  }
 | 
|  
 | 
| +void DirectoryReader::trace(Visitor* visitor)
 | 
| +{
 | 
| +    visitor->trace(m_entries);
 | 
| +    visitor->trace(m_error);
 | 
| +    DirectoryReaderBase::trace(visitor);
 | 
| +}
 | 
| +
 | 
|  }
 | 
| 
 |