1*d57664e9SAndroid Build Coastguard Worker // 2*d57664e9SAndroid Build Coastguard Worker // Copyright 2011 The Android Open Source Project 3*d57664e9SAndroid Build Coastguard Worker // 4*d57664e9SAndroid Build Coastguard Worker 5*d57664e9SAndroid Build Coastguard Worker #ifndef MOCKFILEFINDER_H 6*d57664e9SAndroid Build Coastguard Worker #define MOCKFILEFINDER_H 7*d57664e9SAndroid Build Coastguard Worker 8*d57664e9SAndroid Build Coastguard Worker #include <utils/Vector.h> 9*d57664e9SAndroid Build Coastguard Worker #include <utils/KeyedVector.h> 10*d57664e9SAndroid Build Coastguard Worker #include <utils/String8.h> 11*d57664e9SAndroid Build Coastguard Worker 12*d57664e9SAndroid Build Coastguard Worker #include "DirectoryWalker.h" 13*d57664e9SAndroid Build Coastguard Worker 14*d57664e9SAndroid Build Coastguard Worker using namespace android; 15*d57664e9SAndroid Build Coastguard Worker 16*d57664e9SAndroid Build Coastguard Worker class MockFileFinder : public FileFinder { 17*d57664e9SAndroid Build Coastguard Worker public: MockFileFinder(KeyedVector<String8,KeyedVector<String8,time_t>> & files)18*d57664e9SAndroid Build Coastguard Worker MockFileFinder (KeyedVector<String8, KeyedVector<String8,time_t> >& files) 19*d57664e9SAndroid Build Coastguard Worker : mFiles(files) 20*d57664e9SAndroid Build Coastguard Worker { 21*d57664e9SAndroid Build Coastguard Worker // Nothing left to do 22*d57664e9SAndroid Build Coastguard Worker }; 23*d57664e9SAndroid Build Coastguard Worker 24*d57664e9SAndroid Build Coastguard Worker /** 25*d57664e9SAndroid Build Coastguard Worker * findFiles implementation for the abstraction. 26*d57664e9SAndroid Build Coastguard Worker * PRECONDITIONS: 27*d57664e9SAndroid Build Coastguard Worker * No checking is done, so there MUST be an entry in mFiles with 28*d57664e9SAndroid Build Coastguard Worker * path matching basePath. 29*d57664e9SAndroid Build Coastguard Worker * 30*d57664e9SAndroid Build Coastguard Worker * POSTCONDITIONS: 31*d57664e9SAndroid Build Coastguard Worker * fileStore is filled with a copy of the data in mFiles corresponding 32*d57664e9SAndroid Build Coastguard Worker * to the basePath. 33*d57664e9SAndroid Build Coastguard Worker */ 34*d57664e9SAndroid Build Coastguard Worker findFiles(String8 basePath,Vector<String8> & extensions,KeyedVector<String8,time_t> & fileStore,DirectoryWalker * dw)35*d57664e9SAndroid Build Coastguard Worker virtual bool findFiles(String8 basePath, Vector<String8>& extensions, 36*d57664e9SAndroid Build Coastguard Worker KeyedVector<String8,time_t>& fileStore, 37*d57664e9SAndroid Build Coastguard Worker DirectoryWalker* dw) 38*d57664e9SAndroid Build Coastguard Worker { 39*d57664e9SAndroid Build Coastguard Worker const KeyedVector<String8,time_t>* payload(&mFiles.valueFor(basePath)); 40*d57664e9SAndroid Build Coastguard Worker // Since KeyedVector doesn't implement swap 41*d57664e9SAndroid Build Coastguard Worker // (who doesn't use swap??) we loop and add one at a time. 42*d57664e9SAndroid Build Coastguard Worker for (size_t i = 0; i < payload->size(); ++i) { 43*d57664e9SAndroid Build Coastguard Worker fileStore.add(payload->keyAt(i),payload->valueAt(i)); 44*d57664e9SAndroid Build Coastguard Worker } 45*d57664e9SAndroid Build Coastguard Worker return true; 46*d57664e9SAndroid Build Coastguard Worker } 47*d57664e9SAndroid Build Coastguard Worker 48*d57664e9SAndroid Build Coastguard Worker private: 49*d57664e9SAndroid Build Coastguard Worker // Virtual mapping between "directories" and the "files" contained 50*d57664e9SAndroid Build Coastguard Worker // in them 51*d57664e9SAndroid Build Coastguard Worker KeyedVector<String8, KeyedVector<String8,time_t> > mFiles; 52*d57664e9SAndroid Build Coastguard Worker }; 53*d57664e9SAndroid Build Coastguard Worker 54*d57664e9SAndroid Build Coastguard Worker 55*d57664e9SAndroid Build Coastguard Worker #endif // MOCKFILEFINDER_H