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

Unified Diff: media/cdm/ppapi/cdm_file_io_impl.h

Issue 93243003: Add CDM FileIO tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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
Index: media/cdm/ppapi/cdm_file_io_impl.h
diff --git a/media/cdm/ppapi/cdm_file_io_impl.h b/media/cdm/ppapi/cdm_file_io_impl.h
new file mode 100644
index 0000000000000000000000000000000000000000..de8789312ea213e4f59aac2028db4ed1e1efea2e
--- /dev/null
+++ b/media/cdm/ppapi/cdm_file_io_impl.h
@@ -0,0 +1,103 @@
+// Copyright 2013 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 MEDIA_CDM_PPAPI_CDM_FILE_IO_IMPL_H_
+#define MEDIA_CDM_PPAPI_CDM_FILE_IO_IMPL_H_
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+#include "media/cdm/ppapi/api/content_decryption_module.h"
+#include "ppapi/c/ppb_file_io.h"
+#include "ppapi/cpp/file_io.h"
+#include "ppapi/cpp/file_ref.h"
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module.h"
+#include "ppapi/cpp/private/isolated_file_system_private.h"
+#include "ppapi/utility/completion_callback_factory.h"
+
+namespace media {
+
+// Due to PPAPI limitations, all functions must be called on the main thread.
+class CdmFileIOImpl : public cdm::CdmFileIO {
+ public:
+ CdmFileIOImpl(cdm::CdmFileIOClient* client, PP_Instance pp_instance);
+ virtual ~CdmFileIOImpl();
+
+ // cdm::CdmFileIO implementation.
+ virtual void Open(const char* file_name, uint32_t file_name_size) OVERRIDE;
+ virtual void Read() OVERRIDE;
+ virtual void Write(const uint8_t* data, uint32_t data_size) OVERRIDE;
+ virtual void Close() OVERRIDE;
+
+ private:
+ enum State {
+ OPENING_FILE_SYSTEM,
+ OPENING_FILE,
+ FILE_OPENED,
+ READING_FILE,
+ WRITING_FILE,
+ FILE_CLOSED
+ };
+
+ enum ErrorType {
+ OPEN_ERROR,
+ READ_ERROR,
+ WRITE_ERROR
+ };
+
+ void OpenFileSystem();
+ void OnFileSystemOpen(int32_t result, pp::FileSystem file_system);
ddorwin 2013/12/04 05:27:08 Open_ed_? ditto at 54.
xhwang 2013/12/10 01:24:25 Done.
+ void OpenFile();
+ void OnFileOpen(int32_t result);
+ void ReadFile();
+ void OnFileRead(int32_t bytes_read);
+ void WriteFile();
+ void OnFileWritten(int32_t bytes_written);
+
+ void CloseFile();
+
+ // Calls client_->OnXxxxComplete with kError asynchronously. In some cases we
+ // could actually call them synchronously, but since these errors shouldn't
+ // happen in normal cases, we are not optimizing these cases.
ddorwin 2013/12/04 05:27:08 nit: s/these/such/ sounds better IMO
xhwang 2013/12/10 01:24:25 Done.
+ void OnError(ErrorType error_type, const std::string& error_msg);
+ // Callback to notify client of error asynchronously.
+ void NotifyClientOfError(int32_t result,
+ ErrorType error_type,
+ const std::string& error_msg);
+
+ State state_;
+
+ // Non-owning pointer.
+ cdm::CdmFileIOClient* const client_;
+
+ const pp::InstanceHandle pp_instance_handle_;
+
+ std::string file_name_;
+ pp::FileRef file_ref_;
+ pp::FileIO file_io_;
+ pp::FileSystem file_system_;
+
+ pp::CompletionCallbackFactory<CdmFileIOImpl> callback_factory_;
+
+ // A temporary buffer to hold data to write or the data that has been read.
ddorwin 2013/12/04 05:27:08 If this holds read data, why do we have read_buffe
xhwang 2013/12/10 01:24:25 This holds "partial" read/write data. Renamed to i
+ // The size of |buffer_| is always "bytes to write" or "bytes to read".
+ // Use "char" instead of "unit8_t" because PPB_FileIO uses char* for binary
+ // data read and write.
+ std::vector<char> buffer_;
ddorwin 2013/12/04 05:27:08 It seems we should name this such that it's clear
xhwang 2013/12/10 01:24:25 Done.
+
+ // Offset into the file for reading/writing data.
+ size_t file_offset_;
+
+ // Buffer to hold all read data requested. This buffer is passed to
+ // |client_| when read completes.
+ std::vector<char> read_buffer_;
ddorwin 2013/12/04 05:27:08 cumulative_read_buffer_? Or something similar to i
xhwang 2013/12/10 01:24:25 Done.
+
+ DISALLOW_COPY_AND_ASSIGN(CdmFileIOImpl);
+};
+
+} // namespace media
+
+#endif // MEDIA_CDM_PPAPI_CDM_FILE_IO_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698