Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Unified Diff: components/autofill/content/renderer/password_generation_agent.cc

Issue 662493002: [Password Generation] Enable generation for dynamically created forms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/content/renderer/password_generation_agent.cc
diff --git a/components/autofill/content/renderer/password_generation_agent.cc b/components/autofill/content/renderer/password_generation_agent.cc
index 1bdd7b51521d8afc67e86ab2b23ebd0cf1a5fbf4..abfcabaa4f45dea1735af7f5b4a367c5cc88fe84 100644
--- a/components/autofill/content/renderer/password_generation_agent.cc
+++ b/components/autofill/content/renderer/password_generation_agent.cc
@@ -123,6 +123,13 @@ void PasswordGenerationAgent::DidFinishDocumentLoad(
generation_enabled_forms_.clear();
generation_element_.reset();
possible_account_creation_form_.reset(new PasswordForm());
+ if (password_elements_.empty()) {
vabr (Chromium) 2014/10/16 07:46:15 If I understand correctly, this logs the event fro
Garrett Casto 2014/10/16 19:14:06 I think that happens rarely enough not to worry ab
+ password_generation::LogPasswordGenerationEvent(
+ password_generation::NO_SIGN_UP_DETECTED);
+ } else {
+ password_generation::LogPasswordGenerationEvent(
+ password_generation::SIGN_UP_DETECTED);
+ }
password_elements_.clear();
password_is_generated_ = false;
if (password_edited_) {
@@ -145,7 +152,16 @@ void PasswordGenerationAgent::DidFinishDocumentLoad(
}
}
+void PasswordGenerationAgent::OnDynamicFormsSeen(blink::WebLocalFrame* frame) {
+ FindPossibleGenerationForm(frame);
+}
+
void PasswordGenerationAgent::DidFinishLoad(blink::WebLocalFrame* frame) {
+ FindPossibleGenerationForm(frame);
+}
+
+void PasswordGenerationAgent::FindPossibleGenerationForm(
+ blink::WebLocalFrame* frame) {
if (!enabled_)
return;
@@ -154,6 +170,10 @@ void PasswordGenerationAgent::DidFinishLoad(blink::WebLocalFrame* frame) {
if (!ShouldAnalyzeDocument(frame->document()))
return;
+ // If we have already found a signup form for this page, no need to continue.
+ if (!password_elements_.empty())
+ return;
+
blink::WebVector<blink::WebFormElement> forms;
frame->document().forms(forms);
for (size_t i = 0; i < forms.size(); ++i) {
@@ -178,8 +198,6 @@ void PasswordGenerationAgent::DidFinishLoad(blink::WebLocalFrame* frame) {
std::vector<blink::WebInputElement> passwords;
if (GetAccountCreationPasswordFields(forms[i], &passwords)) {
DVLOG(2) << "Account creation form detected";
- password_generation::LogPasswordGenerationEvent(
- password_generation::SIGN_UP_DETECTED);
password_elements_ = passwords;
possible_account_creation_form_.swap(password_form);
DetermineGenerationElement();
@@ -187,8 +205,6 @@ void PasswordGenerationAgent::DidFinishLoad(blink::WebLocalFrame* frame) {
return;
}
}
- password_generation::LogPasswordGenerationEvent(
- password_generation::NO_SIGN_UP_DETECTED);
}
bool PasswordGenerationAgent::ShouldAnalyzeDocument(

Powered by Google App Engine
This is Rietveld 408576698