| // | |
| // Copyright 2011 The Android Open Source Project | |
| // | |
| #ifndef MOCKFILEFINDER_H | |
| #define MOCKFILEFINDER_H | |
| #include <utils/Vector.h> | |
| #include <utils/KeyedVector.h> | |
| #include <utils/String8.h> | |
| #include "DirectoryWalker.h" | |
| using namespace android; | |
| class MockFileFinder : public FileFinder { | |
| public: | |
| MockFileFinder (KeyedVector<String8, KeyedVector<String8,time_t> >& files) | |
| : mFiles(files) | |
| { | |
| // Nothing left to do | |
| }; | |
| /** | |
| * findFiles implementation for the abstraction. | |
| * PRECONDITIONS: | |
| * No checking is done, so there MUST be an entry in mFiles with | |
| * path matching basePath. | |
| * | |
| * POSTCONDITIONS: | |
| * fileStore is filled with a copy of the data in mFiles corresponding | |
| * to the basePath. | |
| */ | |
| virtual bool findFiles(String8 basePath, Vector<String8>& extensions, | |
| KeyedVector<String8,time_t>& fileStore, | |
| DirectoryWalker* dw) | |
| { | |
| const KeyedVector<String8,time_t>* payload(&mFiles.valueFor(basePath)); | |
| // Since KeyedVector doesn't implement swap | |
| // (who doesn't use swap??) we loop and add one at a time. | |
| for (size_t i = 0; i < payload->size(); ++i) { | |
| fileStore.add(payload->keyAt(i),payload->valueAt(i)); | |
| } | |
| return true; | |
| } | |
| private: | |
| // Virtual mapping between "directories" and the "files" contained | |
| // in them | |
| KeyedVector<String8, KeyedVector<String8,time_t> > mFiles; | |
| }; | |
| #endif // MOCKFILEFINDER_H |