Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Unified Diff: webkit/plugins/ppapi/ppb_directory_reader_impl.cc

Issue 11958033: Implement Pepper proxy for PPB_DirectoryReader (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: test fix Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/plugins/ppapi/ppb_directory_reader_impl.h ('k') | webkit/plugins/ppapi/ppb_file_ref_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/ppapi/ppb_directory_reader_impl.cc
diff --git a/webkit/plugins/ppapi/ppb_directory_reader_impl.cc b/webkit/plugins/ppapi/ppb_directory_reader_impl.cc
deleted file mode 100644
index 7cd8d5d0e9b2c47186f08edcdf1288b8340268c8..0000000000000000000000000000000000000000
--- a/webkit/plugins/ppapi/ppb_directory_reader_impl.cc
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright (c) 2012 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/plugins/ppapi/ppb_directory_reader_impl.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 "ppapi/shared_impl/ppapi_globals.h"
-#include "ppapi/shared_impl/resource_tracker.h"
-#include "ppapi/thunk/enter.h"
-#include "ppapi/thunk/ppb_file_ref_api.h"
-#include "webkit/plugins/ppapi/common.h"
-#include "webkit/plugins/ppapi/file_callbacks.h"
-#include "webkit/plugins/ppapi/plugin_delegate.h"
-#include "webkit/plugins/ppapi/plugin_module.h"
-#include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
-#include "webkit/plugins/ppapi/ppb_file_ref_impl.h"
-#include "webkit/plugins/ppapi/ppb_file_system_impl.h"
-#include "webkit/plugins/ppapi/resource_helper.h"
-
-using ::ppapi::PpapiGlobals;
-using ::ppapi::TrackedCallback;
-using ::ppapi::thunk::EnterResourceNoLock;
-using ::ppapi::thunk::PPB_DirectoryReader_API;
-using ::ppapi::thunk::PPB_FileRef_API;
-
-namespace webkit {
-namespace ppapi {
-
-namespace {
-
-std::string FilePathStringToUTF8String(const base::FilePath::StringType& str) {
-#if defined(OS_WIN)
- return WideToUTF8(str);
-#elif defined(OS_POSIX)
- return str;
-#else
-#error "Unsupported platform."
-#endif
-}
-
-base::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
-}
-
-} // namespace
-
-PPB_DirectoryReader_Impl::PPB_DirectoryReader_Impl(
- PPB_FileRef_Impl* directory_ref)
- : Resource(::ppapi::OBJECT_IS_IMPL, directory_ref->pp_instance()),
- directory_ref_(directory_ref),
- has_more_(true),
- entry_(NULL) {
-}
-
-PPB_DirectoryReader_Impl::~PPB_DirectoryReader_Impl() {
-}
-
-// static
-PP_Resource PPB_DirectoryReader_Impl::Create(PP_Resource directory_ref) {
- EnterResourceNoLock<PPB_FileRef_API> enter(directory_ref, true);
- if (enter.failed())
- return 0;
- return (new PPB_DirectoryReader_Impl(
- static_cast<PPB_FileRef_Impl*>(enter.object())))->GetReference();
-}
-
-PPB_DirectoryReader_API* PPB_DirectoryReader_Impl::AsPPB_DirectoryReader_API() {
- return this;
-}
-
-int32_t PPB_DirectoryReader_Impl::GetNextEntry(
- PP_DirectoryEntry_Dev* entry,
- scoped_refptr<TrackedCallback> callback) {
- if (directory_ref_->GetFileSystemType() == PP_FILESYSTEMTYPE_EXTERNAL)
- return PP_ERROR_FAILED;
-
- entry_ = entry;
- if (FillUpEntry()) {
- entry_ = NULL;
- return PP_OK;
- }
- PluginInstance* plugin_instance = ResourceHelper::GetPluginInstance(this);
- if (!plugin_instance)
- return PP_ERROR_FAILED;
-
- if (!plugin_instance->delegate()->ReadDirectory(
- directory_ref_->GetFileSystemURL(),
- new FileCallbacks(this, callback, NULL, NULL, this)))
- return PP_ERROR_FAILED;
-
- return PP_OK_COMPLETIONPENDING;
-}
-
-void PPB_DirectoryReader_Impl::AddNewEntries(
- const std::vector<base::FileUtilProxy::Entry>& entries, bool has_more) {
- DCHECK(!entries.empty() || !has_more);
- has_more_ = has_more;
-
- std::string dir_path = directory_ref_->GetCreateInfo().path;
- if (dir_path[dir_path.size() - 1] != '/')
- dir_path += '/';
- base::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 PPB_DirectoryReader_Impl::FillUpEntry() {
- DCHECK(entry_);
- if (!entries_.empty()) {
- base::FileUtilProxy::Entry dir_entry = entries_.front();
- entries_.pop();
- if (entry_->file_ref) {
- PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(
- entry_->file_ref);
- }
-
- PPB_FileRef_Impl* file_ref = PPB_FileRef_Impl::CreateInternal(
- directory_ref_->file_system()->pp_resource(),
- FilePathStringToUTF8String(dir_entry.name));
- if (!file_ref)
- return false;
- 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 ppapi
-} // namespace webkit
« no previous file with comments | « webkit/plugins/ppapi/ppb_directory_reader_impl.h ('k') | webkit/plugins/ppapi/ppb_file_ref_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698