| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef WEBKIT_PLUGINS_PPAPI_PPB_DIRECTORY_READER_IMPL_H_ |
| #define WEBKIT_PLUGINS_PPAPI_PPB_DIRECTORY_READER_IMPL_H_ |
| |
| #include <queue> |
| #include <vector> |
| |
| #include "base/file_util_proxy.h" |
| #include "ppapi/shared_impl/resource.h" |
| #include "ppapi/thunk/ppb_directory_reader_api.h" |
| |
| struct PP_CompletionCallback; |
| struct PP_DirectoryEntry_Dev; |
| |
| namespace webkit { |
| namespace ppapi { |
| |
| class PPB_FileRef_Impl; |
| |
| class PPB_DirectoryReader_Impl |
| : public ::ppapi::Resource, |
| public ::ppapi::thunk::PPB_DirectoryReader_API { |
| public: |
| explicit PPB_DirectoryReader_Impl(PPB_FileRef_Impl* directory_ref); |
| virtual ~PPB_DirectoryReader_Impl(); |
| |
| static PP_Resource Create(PP_Resource directory_ref); |
| |
| // Resource overrides. |
| virtual ::ppapi::thunk::PPB_DirectoryReader_API* AsPPB_DirectoryReader_API() |
| OVERRIDE; |
| |
| // PPB_DirectoryReader_API implementation. |
| virtual int32_t GetNextEntry(PP_DirectoryEntry_Dev* entry, |
| PP_CompletionCallback callback) OVERRIDE; |
| |
| void AddNewEntries(const std::vector<base::FileUtilProxy::Entry>& entries, |
| bool has_more); |
| |
| private: |
| bool FillUpEntry(); |
| |
| scoped_refptr<PPB_FileRef_Impl> directory_ref_; |
| std::queue<base::FileUtilProxy::Entry> entries_; |
| bool has_more_; |
| PP_DirectoryEntry_Dev* entry_; |
| }; |
| |
| } // namespace ppapi |
| } // namespace webkit |
| |
| #endif // WEBKIT_PLUGINS_PPAPI_PPB_DIRECTORY_READER_IMPL_H_ |