OSDN Git Service

Fix exploit where can hide the fact that a location was mocked am: a206a0f17e am...
[android-x86/frameworks-base.git] / tools / aapt / pseudolocalize.h
1 #ifndef HOST_PSEUDOLOCALIZE_H
2 #define HOST_PSEUDOLOCALIZE_H
3
4 #include <android-base/macros.h>
5 #include "StringPool.h"
6
7 class PseudoMethodImpl {
8  public:
9   virtual ~PseudoMethodImpl() {}
10   virtual String16 start() { return String16(); }
11   virtual String16 end() { return String16(); }
12   virtual String16 text(const String16& text) = 0;
13   virtual String16 placeholder(const String16& text) = 0;
14 };
15
16 class PseudoMethodNone : public PseudoMethodImpl {
17  public:
18   PseudoMethodNone() {}
19   String16 text(const String16& text) { return text; }
20   String16 placeholder(const String16& text) { return text; }
21  private:
22   DISALLOW_COPY_AND_ASSIGN(PseudoMethodNone);
23 };
24
25 class PseudoMethodBidi : public PseudoMethodImpl {
26  public:
27   String16 text(const String16& text);
28   String16 placeholder(const String16& text);
29 };
30
31 class PseudoMethodAccent : public PseudoMethodImpl {
32  public:
33   PseudoMethodAccent() : mDepth(0), mWordCount(0), mLength(0) {}
34   String16 start();
35   String16 end();
36   String16 text(const String16& text);
37   String16 placeholder(const String16& text);
38  private:
39   size_t mDepth;
40   size_t mWordCount;
41   size_t mLength;
42 };
43
44 class Pseudolocalizer {
45  public:
46   Pseudolocalizer(PseudolocalizationMethod m);
47   ~Pseudolocalizer() { if (mImpl) delete mImpl; }
48   void setMethod(PseudolocalizationMethod m);
49   String16 start() { return mImpl->start(); }
50   String16 end() { return mImpl->end(); }
51   String16 text(const String16& text);
52  private:
53   PseudoMethodImpl *mImpl;
54   size_t mLastDepth;
55 };
56
57 #endif // HOST_PSEUDOLOCALIZE_H
58