Commit 85c03b03 authored by Christoph Schwering's avatar Christoph Schwering Committed by Commit Bot

[Autofill] Add English patterns to all languages.

It adds the English patterns, restricted to non-label values (i.e.,name and id attributes) to all non-English patterns.

Bug: 1141407
Change-Id: I093e0364df5cead253d6e164ce104bfde7dd26ef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2488564Reviewed-by: default avatarChristoph Schwering <schwering@google.com>
Commit-Queue: Christoph Schwering <schwering@google.com>
Cr-Commit-Position: refs/heads/master@{#819944}
parent a650553c
...@@ -32,6 +32,7 @@ void PatternProvider::SetPatterns(PatternProvider::Map patterns, ...@@ -32,6 +32,7 @@ void PatternProvider::SetPatterns(PatternProvider::Map patterns,
(overwrite_equal_version && pattern_version_ == version)) { (overwrite_equal_version && pattern_version_ == version)) {
patterns_ = patterns; patterns_ = patterns;
pattern_version_ = version; pattern_version_ = version;
EnrichPatternsWithEnVersion();
} }
} }
...@@ -95,6 +96,31 @@ void PatternProvider::ResetPatternProvider() { ...@@ -95,6 +96,31 @@ void PatternProvider::ResetPatternProvider() {
g_pattern_provider = nullptr; g_pattern_provider = nullptr;
} }
void PatternProvider::EnrichPatternsWithEnVersion() {
for (auto& p : patterns_) {
std::map<std::string, std::vector<MatchingPattern>>& lg_to_patterns =
p.second;
auto it = lg_to_patterns.find("en");
if (it == lg_to_patterns.end())
continue;
std::vector<MatchingPattern> en_patterns = it->second;
for (MatchingPattern& en_pattern : en_patterns) {
en_pattern.match_field_attributes = MATCH_NAME;
}
for (auto& q : lg_to_patterns) {
const std::string& page_language = q.first;
std::vector<MatchingPattern>& patterns = q.second;
if (page_language != "en") {
patterns.insert(patterns.end(), en_patterns.begin(), en_patterns.end());
}
}
}
}
const std::vector<MatchingPattern> PatternProvider::GetAllPatternsBaseOnType( const std::vector<MatchingPattern> PatternProvider::GetAllPatternsBaseOnType(
ServerFieldType type) { ServerFieldType type) {
std::string type_str = AutofillType(type).ToString(); std::string type_str = AutofillType(type).ToString();
......
...@@ -51,6 +51,8 @@ class PatternProvider { ...@@ -51,6 +51,8 @@ class PatternProvider {
const std::vector<MatchingPattern> GetAllPatternsBaseOnType( const std::vector<MatchingPattern> GetAllPatternsBaseOnType(
const std::string& type); const std::string& type);
// desc
void EnrichPatternsWithEnVersion();
protected: protected:
PatternProvider(); PatternProvider();
......
...@@ -12,7 +12,7 @@ TestPatternProvider::TestPatternProvider() { ...@@ -12,7 +12,7 @@ TestPatternProvider::TestPatternProvider() {
base::Optional<PatternProvider::Map> patterns = base::Optional<PatternProvider::Map> patterns =
field_type_parsing::GetPatternsFromResourceBundleSynchronously(); field_type_parsing::GetPatternsFromResourceBundleSynchronously();
if (patterns) if (patterns)
patterns_ = patterns.value(); SetPatterns(patterns.value(), base::Version(), true);
PatternProvider::SetPatternProviderForTesting(this); PatternProvider::SetPatternProviderForTesting(this);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment