xref: /aosp_15_r20/frameworks/base/tools/aapt/tests/MockFileFinder.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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