| 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);
|
| };
|
|
|