summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/pepper_directory_reader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/pepper_directory_reader.cc')
-rw-r--r--webkit/glue/plugins/pepper_directory_reader.cc156
1 files changed, 0 insertions, 156 deletions
diff --git a/webkit/glue/plugins/pepper_directory_reader.cc b/webkit/glue/plugins/pepper_directory_reader.cc
deleted file mode 100644
index c476b76..0000000
--- a/webkit/glue/plugins/pepper_directory_reader.cc
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright (c) 2010 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.
-
-#include "webkit/glue/plugins/pepper_directory_reader.h"
-
-#include "base/logging.h"
-#include "base/utf_string_conversions.h"
-#include "ppapi/c/pp_completion_callback.h"
-#include "ppapi/c/pp_errors.h"
-#include "ppapi/c/dev/ppb_directory_reader_dev.h"
-#include "webkit/glue/plugins/pepper_file_callbacks.h"
-#include "webkit/glue/plugins/pepper_common.h"
-#include "webkit/glue/plugins/pepper_file_ref.h"
-#include "webkit/glue/plugins/pepper_file_system.h"
-#include "webkit/glue/plugins/pepper_plugin_delegate.h"
-#include "webkit/glue/plugins/pepper_plugin_instance.h"
-#include "webkit/glue/plugins/pepper_plugin_module.h"
-#include "webkit/glue/plugins/pepper_resource_tracker.h"
-
-namespace pepper {
-
-namespace {
-
-std::string FilePathStringToUTF8String(const FilePath::StringType& str) {
-#if defined(OS_WIN)
- return WideToUTF8(str);
-#elif defined(OS_POSIX)
- return str;
-#else
-#error "Unsupported platform."
-#endif
-}
-
-FilePath::StringType UTF8StringToFilePathString(const std::string& str) {
-#if defined(OS_WIN)
- return UTF8ToWide(str);
-#elif defined(OS_POSIX)
- return str;
-#else
-#error "Unsupported platform."
-#endif
-}
-
-PP_Resource Create(PP_Resource directory_ref_id) {
- scoped_refptr<FileRef> directory_ref(
- Resource::GetAs<FileRef>(directory_ref_id));
- if (!directory_ref)
- return 0;
-
- DirectoryReader* reader = new DirectoryReader(directory_ref);
- return reader->GetReference();
-}
-
-PP_Bool IsDirectoryReader(PP_Resource resource) {
- return BoolToPPBool(!!Resource::GetAs<DirectoryReader>(resource));
-}
-
-int32_t GetNextEntry(PP_Resource reader_id,
- PP_DirectoryEntry_Dev* entry,
- PP_CompletionCallback callback) {
- scoped_refptr<DirectoryReader> reader(
- Resource::GetAs<DirectoryReader>(reader_id));
- if (!reader)
- return PP_ERROR_BADRESOURCE;
-
- return reader->GetNextEntry(entry, callback);
-}
-
-const PPB_DirectoryReader_Dev ppb_directoryreader = {
- &Create,
- &IsDirectoryReader,
- &GetNextEntry
-};
-
-} // namespace
-
-DirectoryReader::DirectoryReader(FileRef* directory_ref)
- : Resource(directory_ref->module()),
- directory_ref_(directory_ref),
- has_more_(true),
- entry_(NULL) {
-}
-
-DirectoryReader::~DirectoryReader() {
-}
-
-const PPB_DirectoryReader_Dev* DirectoryReader::GetInterface() {
- return &ppb_directoryreader;
-}
-
-int32_t DirectoryReader::GetNextEntry(PP_DirectoryEntry_Dev* entry,
- PP_CompletionCallback callback) {
- if (directory_ref_->GetFileSystemType() == PP_FILESYSTEMTYPE_EXTERNAL)
- return PP_ERROR_FAILED;
-
- entry_ = entry;
- if (FillUpEntry()) {
- entry_ = NULL;
- return PP_OK;
- }
-
- PluginInstance* instance = directory_ref_->GetFileSystem()->instance();
- if (!instance->delegate()->ReadDirectory(
- directory_ref_->GetSystemPath(),
- new FileCallbacks(instance->module()->AsWeakPtr(),
- callback, NULL, NULL, this)))
- return PP_ERROR_FAILED;
-
- return PP_ERROR_WOULDBLOCK;
-}
-
-void DirectoryReader::AddNewEntries(
- const std::vector<base::FileUtilProxy::Entry>& entries, bool has_more) {
- DCHECK(!entries.empty());
- has_more_ = has_more;
- std::string dir_path = directory_ref_->GetPath();
- if (dir_path[dir_path.size() - 1] != '/')
- dir_path += '/';
- FilePath::StringType dir_file_path = UTF8StringToFilePathString(dir_path);
- for (std::vector<base::FileUtilProxy::Entry>::const_iterator it =
- entries.begin(); it != entries.end(); it++) {
- base::FileUtilProxy::Entry entry;
- entry.name = dir_file_path + it->name;
- entry.is_directory = it->is_directory;
- entries_.push(entry);
- }
-
- FillUpEntry();
- entry_ = NULL;
-}
-
-bool DirectoryReader::FillUpEntry() {
- DCHECK(entry_);
- if (!entries_.empty()) {
- base::FileUtilProxy::Entry dir_entry = entries_.front();
- entries_.pop();
- if (entry_->file_ref)
- ResourceTracker::Get()->UnrefResource(entry_->file_ref);
- FileRef* file_ref = new FileRef(module(), directory_ref_->GetFileSystem(),
- FilePathStringToUTF8String(dir_entry.name));
- entry_->file_ref = file_ref->GetReference();
- entry_->file_type =
- (dir_entry.is_directory ? PP_FILETYPE_DIRECTORY : PP_FILETYPE_REGULAR);
- return true;
- }
-
- if (!has_more_) {
- entry_->file_ref = 0;
- return true;
- }
-
- return false;
-}
-
-} // namespace pepper