|  | // Copyright 2017 PDFium 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 TESTING_FAKE_FILE_ACCESS_H_ | 
|  | #define TESTING_FAKE_FILE_ACCESS_H_ | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | #include "core/fxcrt/unowned_ptr.h" | 
|  | #include "public/fpdf_dataavail.h" | 
|  | #include "public/fpdfview.h" | 
|  | #include "testing/range_set.h" | 
|  |  | 
|  | class FakeFileAccess { | 
|  | public: | 
|  | explicit FakeFileAccess(FPDF_FILEACCESS* file_access); | 
|  | ~FakeFileAccess(); | 
|  |  | 
|  | FPDF_FILEACCESS* GetFileAccess() const { return file_access_wrapper_.get(); } | 
|  | FX_FILEAVAIL* GetFileAvail() const { return file_avail_.get(); } | 
|  | FX_DOWNLOADHINTS* GetDownloadHints() const { return download_hints_.get(); } | 
|  |  | 
|  | FPDF_BOOL IsDataAvail(size_t offset, size_t size) const; | 
|  | void AddSegment(size_t offset, size_t size); | 
|  |  | 
|  | unsigned long GetFileSize(); | 
|  |  | 
|  | int GetBlock(unsigned long position, unsigned char* pBuf, unsigned long size); | 
|  | void SetRequestedDataAvailable(); | 
|  | void SetWholeFileAvailable(); | 
|  |  | 
|  | private: | 
|  | UnownedPtr<FPDF_FILEACCESS> file_access_; | 
|  | std::unique_ptr<FPDF_FILEACCESS> file_access_wrapper_; | 
|  | std::unique_ptr<FX_FILEAVAIL> file_avail_; | 
|  | std::unique_ptr<FX_DOWNLOADHINTS> download_hints_; | 
|  | RangeSet available_data_; | 
|  | RangeSet requested_data_; | 
|  | }; | 
|  |  | 
|  | #endif  // TESTING_FAKE_FILE_ACCESS_H_ |