blob: b7cae31ad008ccf7885c4dccdafc184f698d9b41 [file] [log] [blame]
// 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_