Index: ui/file_manager/zip_archiver/unpacker/cpp/volume.h |
diff --git a/ui/file_manager/zip_archiver/unpacker/cpp/volume.h b/ui/file_manager/zip_archiver/unpacker/cpp/volume.h |
deleted file mode 100644 |
index dc8efb43dae3d3cba117b0b7f82c3b0db247edeb..0000000000000000000000000000000000000000 |
--- a/ui/file_manager/zip_archiver/unpacker/cpp/volume.h |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
-// Copyright 2014 The Chromium OS 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 VOLUME_H_ |
-#define VOLUME_H_ |
- |
-#include <pthread.h> |
- |
-#include "archive.h" |
-#include "ppapi/cpp/instance_handle.h" |
-#include "ppapi/cpp/var_array_buffer.h" |
-#include "ppapi/cpp/var_dictionary.h" |
-#include "ppapi/utility/completion_callback_factory.h" |
-#include "ppapi/utility/threading/lock.h" |
-#include "ppapi/utility/threading/simple_thread.h" |
- |
-#include "javascript_requestor_interface.h" |
-#include "javascript_message_sender_interface.h" |
-#include "volume_archive.h" |
- |
-// A factory that creates VolumeArchive(s). Useful for testing. |
-class VolumeArchiveFactoryInterface { |
- public: |
- virtual ~VolumeArchiveFactoryInterface() {} |
- |
- // Creates a new VolumeArchive. |
- virtual VolumeArchive* Create(VolumeReader* reader) = 0; |
-}; |
- |
-// A factory that creates VolumeReader(s). Useful for testing. |
-class VolumeReaderFactoryInterface { |
- public: |
- virtual ~VolumeReaderFactoryInterface() {} |
- |
- // Creates a new VolumeReader. Returns NULL if failed. |
- // Passes VolumeReader ownership to the implementation of |
- // VolumeArchiveInterfaceInterface. |
- virtual VolumeReader* Create(int64_t archive_size) = 0; |
-}; |
- |
-// Handles all operations like reading metadata and reading files from a single |
-// Volume. |
-class Volume { |
- public: |
- Volume(const pp::InstanceHandle& instance_handle /* Used for workers. */, |
- const std::string& file_system_id, |
- JavaScriptMessageSenderInterface* message_sender); |
- |
- // Used by tests to create custom VolumeArchive and VolumeReader objects. |
- // VolumeArchiveFactory and VolumeReaderFactory should be allocated with new |
- // and the ownership will be passed to Volume on constructing it. |
- Volume(const pp::InstanceHandle& instance_handle /* Used for workers. */, |
- const std::string& file_system_id, |
- JavaScriptMessageSenderInterface* message_sender, |
- VolumeArchiveFactoryInterface* volume_archive_factory, |
- VolumeReaderFactoryInterface* volume_reader_factory); |
- |
- virtual ~Volume(); |
- |
- // Initializes the volume. |
- bool Init(); |
- |
- // Reads archive metadata using libarchive. |
- void ReadMetadata(const std::string& request_id, |
- const std::string& encoding, |
- int64_t archive_size); |
- |
- // Processes a successful archive chunk read from JavaScript. Read offset |
- // represents the offset from where the data contained in array_buffer starts. |
- void ReadChunkDone(const std::string& nacl_request_id, |
- const pp::VarArrayBuffer& array_buffer, |
- int64_t read_offset); |
- |
- // Processes an invalid archive chunk read from JavaScript. |
- void ReadChunkError(const std::string& nacl_request_id); |
- |
- // Processes a successful passphrase read from JavaScript. |
- void ReadPassphraseDone(const std::string& nacl_request_id, |
- const std::string& passphrase); |
- |
- // Processes an error when requesting a passphrase from JavaScript. |
- void ReadPassphraseError(const std::string& nacl_request_id); |
- |
- // Opens a file. |
- void OpenFile(const std::string& request_id, |
- int64_t index, |
- const std::string& encoding, |
- int64_t archive_size); |
- |
- // Closes a file. |
- void CloseFile(const std::string& request_id, |
- const std::string& open_request_id); |
- |
- // Reads a file contents from offset to offset + length. dictionary |
- // should contain the open_request_id, the offset and the length with |
- // the keys as defined in "request" namespace, and they should have |
- // valid types. The reason for not passing them directly is that |
- // pp::CompletionCallbackFactory can create a callback with a maximum of |
- // 3 parameters, not 4 as needed here (including request_id). |
- void ReadFile(const std::string& request_id, |
- const pp::VarDictionary& dictionary); |
- |
- JavaScriptMessageSenderInterface* message_sender() { return message_sender_; } |
- JavaScriptRequestorInterface* requestor() { return requestor_; } |
- std::string file_system_id() { return file_system_id_; } |
- |
- private: |
- // Encapsulates arguments to OpenFileCallback, as NewCallback supports binding |
- // up to three arguments, while here we have four. |
- struct OpenFileArgs; |
- |
- // A callback helper for ReadMetadata. |
- void ReadMetadataCallback(int32_t result, |
- const std::string& request_id, |
- const std::string& encoding, |
- int64_t archive_size); |
- |
- // A calback helper for OpenFile. |
- void OpenFileCallback(int32_t result, |
- const OpenFileArgs& args); |
- |
- // A callback helper for CloseFile. |
- void CloseFileCallback(int32_t result, |
- const std::string& request_id, |
- const std::string& open_request_id); |
- |
- // A calback helper for ReadFile. |
- void ReadFileCallback(int32_t result, |
- const std::string& request_id, |
- const pp::VarDictionary& dictionary); |
- |
- // Creates a new archive object for this volume. |
- VolumeArchive* CreateVolumeArchive(const std::string& request_id, |
- const std::string& encoding, |
- int64_t archive_size); |
- |
- // Clears job. |
- void ClearJob(); |
- |
- // Libarchive wrapper instance per volume, shared across all operations. |
- VolumeArchive* volume_archive_; |
- |
- // The file system id for this volume. |
- std::string file_system_id_; |
- |
- // An object that sends messages to JavaScript. |
- JavaScriptMessageSenderInterface* message_sender_; |
- |
- // A worker for jobs that require blocking operations or a lot of processing |
- // time. Those shouldn't be done on the main thread. The jobs submitted to |
- // this thread are executed in order, so a new job must wait for the last job |
- // to finish. |
- // TODO(cmihail): Consider using multiple workers in case of many jobs to |
- // improve execution speedup. In case multiple workers are added |
- // synchronization between workers might be needed. |
- pp::SimpleThread worker_; |
- |
- // Callback factory used to submit jobs to worker_. |
- // See "Detailed Description" Note at: |
- // https://developer.chrome.com/native-client/ |
- // pepper_dev/cpp/classpp_1_1_completion_callback_factory |
- // |
- // As a minus this would require ugly synchronization between the main thread |
- // and the function that is executed on worker_ construction. Current |
- // implementation is simimlar to examples in $NACL_SDK_ROOT and according to |
- // https://chromiumcodereview.appspot.com/lint_patch/issue10790078_24001_25013 |
- // it should be safe (see TODO(dmichael)). That's because both worker_ and |
- // callback_factory_ will be alive during the life of Volume and deleting a |
- // Volume is permitted only if there are no requests in progress on |
- // JavaScript side (this means no Callbacks in progress). |
- pp::CompletionCallbackFactory<Volume> callback_factory_; |
- |
- // Request ID of the current reader instance. |
- std::string reader_request_id_; |
- |
- pp::Lock job_lock_; // A lock for guarding members related to jobs. |
- |
- // A requestor for making calls to JavaScript. |
- JavaScriptRequestorInterface* requestor_; |
- |
- // A factory for creating VolumeArchive. |
- VolumeArchiveFactoryInterface* volume_archive_factory_; |
- |
- // A factory for creating VolumeReader. |
- VolumeReaderFactoryInterface* volume_reader_factory_; |
-}; |
- |
-#endif /// VOLUME_H_ |