1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// Copyright 2011 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#ifndef MOCKFILEFINDER_H 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#define MOCKFILEFINDER_H 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/Vector.h> 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/KeyedVector.h> 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/String8.h> 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include "DirectoryWalker.h" 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiusing namespace android; 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass MockFileFinder : public FileFinder { 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski MockFileFinder (KeyedVector<String8, KeyedVector<String8,time_t> >& files) 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski : mFiles(files) 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // Nothing left to do 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }; 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * findFiles implementation for the abstraction. 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * PRECONDITIONS: 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * No checking is done, so there MUST be an entry in mFiles with 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * path matching basePath. 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * POSTCONDITIONS: 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * fileStore is filled with a copy of the data in mFiles corresponding 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * to the basePath. 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool findFiles(String8 basePath, Vector<String8>& extensions, 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski KeyedVector<String8,time_t>& fileStore, 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski DirectoryWalker* dw) 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const KeyedVector<String8,time_t>* payload(&mFiles.valueFor(basePath)); 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // Since KeyedVector doesn't implement swap 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // (who doesn't use swap??) we loop and add one at a time. 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (size_t i = 0; i < payload->size(); ++i) { 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski fileStore.add(payload->keyAt(i),payload->valueAt(i)); 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // Virtual mapping between "directories" and the "files" contained 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // in them 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski KeyedVector<String8, KeyedVector<String8,time_t> > mFiles; 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // MOCKFILEFINDER_H