Index: components/feedback/anonymizer_tool.h |
diff --git a/components/feedback/anonymizer_tool.h b/components/feedback/anonymizer_tool.h |
index 54a690fe9fa677eeb3ebb3a0a4d2b533d7a1d89f..d41b13b18b66ae9be88989380095735d71928758 100644 |
--- a/components/feedback/anonymizer_tool.h |
+++ b/components/feedback/anonymizer_tool.h |
@@ -9,10 +9,24 @@ |
#include <string> |
#include <vector> |
-#include <base/macros.h> |
+#include "base/macros.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace re2 { |
+class RE2; |
+} |
namespace feedback { |
+struct CustomPatternWithoutContext { |
+ // A string literal used in anonymized tests. Matches to the |pattern| are |
+ // replaced with <|alias|: 1>, <|alias|: 2>, ... |
+ const char* alias; |
+ // A RE2 regexp with exactly one capture group. Matches will be replaced by |
+ // the alias reference described above. |
+ const char* pattern; |
+}; |
+ |
class AnonymizerTool { |
public: |
AnonymizerTool(); |
@@ -25,12 +39,18 @@ class AnonymizerTool { |
private: |
friend class AnonymizerToolTest; |
+ re2::RE2* GetRegExp(const std::string& pattern); |
+ |
std::string AnonymizeMACAddresses(const std::string& input); |
std::string AnonymizeCustomPatterns(std::string input); |
- static std::string AnonymizeCustomPattern( |
+ std::string AnonymizeCustomPatternWithContext( |
const std::string& input, |
const std::string& pattern, |
std::map<std::string, std::string>* identifier_space); |
+ std::string AnonymizeCustomPatternWithoutContext( |
+ const std::string& input, |
+ const CustomPatternWithoutContext& pattern, |
+ std::map<std::string, std::string>* identifier_space); |
// Map of MAC addresses discovered in anonymized strings to anonymized |
// representations. 11:22:33:44:55:66 gets anonymized to 11:22:33:00:00:01, |
@@ -40,9 +60,15 @@ class AnonymizerTool { |
std::map<std::string, std::string> mac_addresses_; |
// Like mac addresses, identifiers in custom patterns are anonymized. |
- // custom_patterns_[i] contains a map of original identifier to anonymized |
- // identifier for custom pattern number i. |
- std::vector<std::map<std::string, std::string>> custom_patterns_; |
+ // custom_patterns_with_context_[i] contains a map of original identifier to |
+ // anonymized identifier for custom pattern number i. |
+ std::vector<std::map<std::string, std::string>> custom_patterns_with_context_; |
+ std::vector<std::map<std::string, std::string>> |
+ custom_patterns_without_context_; |
+ |
+ // Cache to prevent the repeated compilation of the same regular expression |
+ // pattern. Key is the string representation of the RegEx. |
+ std::map<std::string, scoped_ptr<re2::RE2>> regexp_cache_; |
DISALLOW_COPY_AND_ASSIGN(AnonymizerTool); |
}; |