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

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

Issue 208453002: Add "previewing on hover" support for password field. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update code as per further review comments. Created 6 years, 7 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_autofill_agent.cc
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
index 9e1e1db7025acd8685af9239015a95f397cd8bc2..bb7785e933200c27ca0cde648da70c8858fae118 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -229,6 +229,9 @@ PasswordAutofillAgent::PasswordAutofillAgent(content::RenderView* render_view)
usernames_usage_(NOTHING_TO_AUTOFILL),
web_view_(render_view->GetWebView()),
logging_state_active_(false),
+ was_username_autofilled_(false),
+ was_password_autofilled_(false),
+ username_selection_start_(0),
weak_ptr_factory_(this) {
}
@@ -367,7 +370,7 @@ bool PasswordAutofillAgent::TextFieldHandlingKeyDown(
return true;
}
-bool PasswordAutofillAgent::AcceptSuggestion(
+bool PasswordAutofillAgent::FillSuggestion(
const blink::WebNode& node,
const blink::WebString& username,
const blink::WebString& password) {
@@ -391,11 +394,43 @@ bool PasswordAutofillAgent::AcceptSuggestion(
return true;
}
+bool PasswordAutofillAgent::PreviewSuggestion(
+ const blink::WebNode& node,
+ const blink::WebString& username,
+ const blink::WebString& password) {
+ blink::WebInputElement username_element;
+ PasswordInfo password_info;
+
+ if (!FindLoginInfo(node, &username_element, &password_info) ||
+ !IsElementAutocompletable(username_element) ||
+ !IsElementAutocompletable(password_info.password_field)) {
+ return false;
+ }
+
+ was_username_autofilled_ = username_element.isAutofilled();
+ username_selection_start_ = username_element.selectionStart();
+ username_element.setSuggestedValue(username);
+ username_element.setAutofilled(true);
+ username_element.setSelectionRange(
+ username_selection_start_,
+ username_element.suggestedValue().length());
+
+ was_password_autofilled_ = password_info.password_field.isAutofilled();
+ password_info.password_field.setSuggestedValue(password);
+ password_info.password_field.setAutofilled(true);
+
+ return true;
+}
+
bool PasswordAutofillAgent::DidClearAutofillSelection(
const blink::WebNode& node) {
- blink::WebInputElement input;
- PasswordInfo password;
- return FindLoginInfo(node, &input, &password);
+ blink::WebInputElement username_element;
+ PasswordInfo password_info;
+ if (!FindLoginInfo(node, &username_element, &password_info))
+ return false;
+
+ ClearPreview(&username_element, &password_info.password_field);
+ return true;
}
bool PasswordAutofillAgent::ShowSuggestions(
@@ -1026,4 +1061,19 @@ bool PasswordAutofillAgent::FindLoginInfo(const blink::WebNode& node,
return true;
}
+void PasswordAutofillAgent::ClearPreview(
+ blink::WebInputElement* username,
+ blink::WebInputElement* password) {
+ if (!username->suggestedValue().isEmpty()) {
+ username->setSuggestedValue(blink::WebString());
+ username->setAutofilled(was_username_autofilled_);
+ username->setSelectionRange(username_selection_start_,
+ username->value().length());
+ }
+ if (!password->suggestedValue().isEmpty()) {
+ password->setSuggestedValue(blink::WebString());
+ password->setAutofilled(was_password_autofilled_);
+ }
+}
+
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698