fake_pepper_interface_html5_fs.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// Copyright 2014 The Chromium Authors. All rights reserved. 2e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o// Use of this source code is governed by a BSD-style license that can be 3efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o// found in the LICENSE file. 4e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o 5e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o#ifndef LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_ 6e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o#define LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_ 7f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 8f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include <map> 9f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include <string> 10f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include <vector> 11f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 12f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include <ppapi/c/pp_directory_entry.h> 13f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 14f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include "fake_ppapi/fake_core_interface.h" 1550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#include "fake_ppapi/fake_var_interface.h" 1650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#include "fake_ppapi/fake_var_manager.h" 1750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#include "nacl_io/pepper_interface_dummy.h" 18f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#include "sdk_util/macros.h" 19f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 20f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// This class is a fake implementation of the interfaces necessary to access 21f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// the HTML5 Filesystem from NaCl. 22f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// 23f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// Example: 24b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'o// FakePepperInterfaceHtml5Fs ppapi_html5fs; 25b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'o// ... 265113a6e32b298671c86ae7da097bcd24540cebc9Eric Sandeen// PP_Resource ref_resource = ppapi_html5fs.GetFileRefInterface()->Create( 27b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'o// ppapi_html5fs.GetInstance(), 28b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'o// "/some/path"); 29b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o// ... 30b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o// 31f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// NOTE: This pepper interface creates an instance resource that can only be 32f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o// used with FakePepperInterfaceHtml5Fs, not other fake pepper implementations. 33f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 34b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'oclass FakeHtml5FsNode { 35b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o public: 36b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o FakeHtml5FsNode(const PP_FileInfo& info); 37b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o FakeHtml5FsNode(const PP_FileInfo& info, 38f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const std::vector<uint8_t>& contents); 39f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeHtml5FsNode(const PP_FileInfo& info, const std::string& contents); 4050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o 41f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int32_t Read(int64_t offset, char* buffer, int32_t bytes_to_read); 4250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o int32_t Write(int64_t offset, const char* buffer, int32_t bytes_to_write); 43f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int32_t Append(const char* buffer, int32_t bytes_to_write); 4450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o int32_t SetLength(int64_t length); 4550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o void GetInfo(PP_FileInfo* out_info); 46f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o bool IsRegular() const; 47f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o bool IsDirectory() const; 48f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileType file_type() const { return info_.type; } 49f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 5050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o // These times are not modified by the fake implementation. 51e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void set_creation_time(PP_Time time) { info_.creation_time = time; } 52b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o void set_last_access_time(PP_Time time) { info_.last_access_time = time; } 53e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void set_last_modified_time(PP_Time time) { info_.last_modified_time = time; } 54b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o 5550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o const std::vector<uint8_t>& contents() const { return contents_; } 56f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 57f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o private: 58f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileInfo info_; 59f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o std::vector<uint8_t> contents_; 60f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}; 61f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 62e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallclass FakeHtml5FsFilesystem { 63f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o public: 64f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o typedef std::string Path; 65f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 66f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o struct DirectoryEntry { 67e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall Path path; 68f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const FakeHtml5FsNode* node; 69f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o }; 70f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o typedef std::vector<DirectoryEntry> DirectoryEntries; 71f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 72f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeHtml5FsFilesystem(); 73f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o explicit FakeHtml5FsFilesystem(PP_FileSystemType type); 74f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeHtml5FsFilesystem(const FakeHtml5FsFilesystem& filesystem, 75f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileSystemType type); 76f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 77f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o void Clear(); 78f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o bool AddEmptyFile(const Path& path, FakeHtml5FsNode** out_node); 79b044c2e02af46c54206f0f6e29896ab32681a7dbTheodore Ts'o bool AddFile(const Path& path, 80f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const std::string& contents, 81f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeHtml5FsNode** out_node); 82f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o bool AddFile(const Path& path, 83f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const std::vector<uint8_t>& contents, 84e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o FakeHtml5FsNode** out_node); 85e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o bool AddDirectory(const Path& path, FakeHtml5FsNode** out_node); 866cab406d2b687f251ae533951c78fbe484cff0dfTheodore Ts'o bool RemoveNode(const Path& path); 877380ac903316c0fe91ed6706eb4d84249a9b348dTheodore Ts'o 88efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o FakeHtml5FsNode* GetNode(const Path& path); 89e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall bool GetDirectoryEntries(const Path& path, 90e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o DirectoryEntries* out_dir_entries) const; 91f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileSystemType filesystem_type() const { return filesystem_type_; } 926cab406d2b687f251ae533951c78fbe484cff0dfTheodore Ts'o static Path GetParentPath(const Path& path); 93e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o 94e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o private: 95e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o typedef std::map<Path, FakeHtml5FsNode> NodeMap; 96e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o NodeMap node_map_; 97e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o PP_FileSystemType filesystem_type_; 98e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'o}; 99f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 100f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oclass FakeFileIoInterface : public nacl_io::FileIoInterface { 1016cab406d2b687f251ae533951c78fbe484cff0dfTheodore Ts'o public: 102f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o explicit FakeFileIoInterface(FakeCoreInterface* core_interface); 103f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 104f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual PP_Resource Create(PP_Resource instance); 105f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t Open(PP_Resource file_io, 106f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_Resource file_ref, 107f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int32_t open_flags, 108f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 109f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t Query(PP_Resource file_io, 110f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileInfo* info, 111fc6d9d519aef67735918bf02c0fa8c9222008f76Theodore Ts'o PP_CompletionCallback callback); 112f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t Read(PP_Resource file_io, 113f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int64_t offset, 114f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o char* buffer, 115f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int32_t bytes_to_read, 116f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 117fc6d9d519aef67735918bf02c0fa8c9222008f76Theodore Ts'o virtual int32_t Write(PP_Resource file_io, 118f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int64_t offset, 119f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const char* buffer, 120f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int32_t bytes_to_write, 121f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 122f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t SetLength(PP_Resource file_io, 123f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int64_t length, 1243e025efc0fb0de0f62be3421aa61c75eedf0d913Theodore Ts'o PP_CompletionCallback callback); 1253e025efc0fb0de0f62be3421aa61c75eedf0d913Theodore Ts'o virtual int32_t Flush(PP_Resource file_io, PP_CompletionCallback callback); 1263e025efc0fb0de0f62be3421aa61c75eedf0d913Theodore Ts'o virtual void Close(PP_Resource file_io); 127f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 128f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o private: 129f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeCoreInterface* core_interface_; // Weak reference. 130f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 131f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o DISALLOW_COPY_AND_ASSIGN(FakeFileIoInterface); 132efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o}; 133f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 134e1018eeaa3285cd0ca26986d929194c1b577d211Theodore Ts'oclass FakeFileRefInterface : public nacl_io::FileRefInterface { 135544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o public: 136f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeFileRefInterface(FakeCoreInterface* core_interface, 137f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeVarInterface* var_interface); 138f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 139f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual PP_Resource Create(PP_Resource file_system, const char* path); 140f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual PP_Var GetName(PP_Resource file_ref); 141f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t MakeDirectory(PP_Resource directory_ref, 142efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o PP_Bool make_parents, 143e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall PP_CompletionCallback callback); 14443323be95742298b8229be728c3812e95c90629cTheodore Ts'o virtual int32_t Delete(PP_Resource file_ref, PP_CompletionCallback callback); 145b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o virtual int32_t Query(PP_Resource file_ref, 146f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_FileInfo* info, 147f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 148b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o virtual int32_t ReadDirectoryEntries(PP_Resource file_ref, 149f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const PP_ArrayOutput& output, 150f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 151f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t Rename(PP_Resource file_ref, 152f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_Resource new_file_ref, 153f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 154f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 155f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o private: 156f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeCoreInterface* core_interface_; // Weak reference. 157f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeVarInterface* var_interface_; // Weak reference. 158f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeVarManager* var_manager_; // Weak reference 159f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 160f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o DISALLOW_COPY_AND_ASSIGN(FakeFileRefInterface); 161f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}; 162f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 163efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'oclass FakeFileSystemInterface : public nacl_io::FileSystemInterface { 164f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o public: 165f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeFileSystemInterface(FakeCoreInterface* core_interface); 1665113a6e32b298671c86ae7da097bcd24540cebc9Eric Sandeen 167e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall virtual PP_Bool IsFileSystem(PP_Resource resource); 168f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual PP_Resource Create(PP_Instance instance, PP_FileSystemType type); 169f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual int32_t Open(PP_Resource file_system, 170f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o int64_t expected_size, 171f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_CompletionCallback callback); 172f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 173efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o private: 174f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeCoreInterface* core_interface_; // Weak reference. 1753e025efc0fb0de0f62be3421aa61c75eedf0d913Theodore Ts'o 176ee753091cf6df32010c5f3ab37bf1326eef18d08Theodore Ts'o DISALLOW_COPY_AND_ASSIGN(FakeFileSystemInterface); 1773e025efc0fb0de0f62be3421aa61c75eedf0d913Theodore Ts'o}; 178f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 179f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oclass FakePepperInterfaceHtml5Fs : public nacl_io::PepperInterfaceDummy { 180f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o public: 181f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakePepperInterfaceHtml5Fs(); 182f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o explicit FakePepperInterfaceHtml5Fs(const FakeHtml5FsFilesystem& filesystem); 183f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o ~FakePepperInterfaceHtml5Fs(); 184f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 1857380ac903316c0fe91ed6706eb4d84249a9b348dTheodore Ts'o virtual PP_Instance GetInstance() { return instance_; } 186efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o virtual nacl_io::CoreInterface* GetCoreInterface(); 187b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o virtual nacl_io::FileSystemInterface* GetFileSystemInterface(); 188efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o virtual nacl_io::FileRefInterface* GetFileRefInterface(); 189f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual nacl_io::FileIoInterface* GetFileIoInterface(); 190f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o virtual nacl_io::VarInterface* GetVarInterface(); 191efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 192f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeHtml5FsFilesystem* filesystem_template() { return &filesystem_template_; } 193efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 194b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o private: 195b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o void Init(); 196efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 197b05d4ab635196f1e45bb7a11914edb2b0877274cTheodore Ts'o FakeResourceManager resource_manager_; 198f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeCoreInterface core_interface_; 1997380ac903316c0fe91ed6706eb4d84249a9b348dTheodore Ts'o FakeVarInterface var_interface_; 2007380ac903316c0fe91ed6706eb4d84249a9b348dTheodore Ts'o FakeVarManager var_manager_; 201efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o FakeHtml5FsFilesystem filesystem_template_; 202f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeFileSystemInterface file_system_interface_; 203f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeFileRefInterface file_ref_interface_; 204f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o FakeFileIoInterface file_io_interface_; 205f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o PP_Instance instance_; 206f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 207f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o DISALLOW_COPY_AND_ASSIGN(FakePepperInterfaceHtml5Fs); 208f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}; 209f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 210f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#endif // LIBRARIES_NACL_IO_TEST_FAKE_PEPPER_INTERFACE_HTML5_FS_H_ 211f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o