1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2017 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker #ifndef TESTING_FAKE_FILE_ACCESS_H_ 6*3ac0a46fSAndroid Build Coastguard Worker #define TESTING_FAKE_FILE_ACCESS_H_ 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_dataavail.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdfview.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "testing/range_set.h" 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker class FakeFileAccess { 16*3ac0a46fSAndroid Build Coastguard Worker public: 17*3ac0a46fSAndroid Build Coastguard Worker explicit FakeFileAccess(FPDF_FILEACCESS* file_access); 18*3ac0a46fSAndroid Build Coastguard Worker ~FakeFileAccess(); 19*3ac0a46fSAndroid Build Coastguard Worker GetFileAccess()20*3ac0a46fSAndroid Build Coastguard Worker FPDF_FILEACCESS* GetFileAccess() const { return file_access_wrapper_.get(); } GetFileAvail()21*3ac0a46fSAndroid Build Coastguard Worker FX_FILEAVAIL* GetFileAvail() const { return file_avail_.get(); } GetDownloadHints()22*3ac0a46fSAndroid Build Coastguard Worker FX_DOWNLOADHINTS* GetDownloadHints() const { return download_hints_.get(); } 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker FPDF_BOOL IsDataAvail(size_t offset, size_t size) const; 25*3ac0a46fSAndroid Build Coastguard Worker void AddSegment(size_t offset, size_t size); 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker unsigned long GetFileSize(); 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker int GetBlock(unsigned long position, unsigned char* pBuf, unsigned long size); 30*3ac0a46fSAndroid Build Coastguard Worker void SetRequestedDataAvailable(); 31*3ac0a46fSAndroid Build Coastguard Worker void SetWholeFileAvailable(); 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker private: 34*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<FPDF_FILEACCESS> file_access_; 35*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<FPDF_FILEACCESS> file_access_wrapper_; 36*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<FX_FILEAVAIL> file_avail_; 37*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<FX_DOWNLOADHINTS> download_hints_; 38*3ac0a46fSAndroid Build Coastguard Worker RangeSet available_data_; 39*3ac0a46fSAndroid Build Coastguard Worker RangeSet requested_data_; 40*3ac0a46fSAndroid Build Coastguard Worker }; 41*3ac0a46fSAndroid Build Coastguard Worker 42*3ac0a46fSAndroid Build Coastguard Worker #endif // TESTING_FAKE_FILE_ACCESS_H_ 43