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

Unified Diff: chrome/test/data/password/create_form_copy_on_submit.html

Issue 331593008: Only consider PasswordFromManager which HasCompletedMatching when provisionally saving passwords (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing copyright notice in the JavaScript file Created 6 years, 5 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: chrome/test/data/password/create_form_copy_on_submit.html
diff --git a/chrome/test/data/password/create_form_copy_on_submit.html b/chrome/test/data/password/create_form_copy_on_submit.html
new file mode 100644
index 0000000000000000000000000000000000000000..f3b283726c211b0f9a8c019f3197527d0e6a9c27
--- /dev/null
+++ b/chrome/test/data/password/create_form_copy_on_submit.html
@@ -0,0 +1,63 @@
+<!--
+This page enables to simulate the following scenario:
+On password form submit, the page's JavaScript deletes that form, creates
+another one, almost an exact copy of the deleted form, just with a different
+action, and submits the new one.
+
+The issue demonstrated here is that there is very little time between
+creating and submitting the second form. As observed in
+http://crbug.com/367768, PasswordManager is not able to process the form
+quickly enough in such cases: the PasswordFormManager associated with the
+created form has not enough time to asynchronously get matching results from
+the password store, and is hence not ready to provisionally save the new
+credential. This test checks that PasswordManager still makes use of the
+PasswordFormManager associated with the first form (which is a reasonable
+match for the credential, though worse than the newer PasswordFormManager)
+and works in this scenario.
+-->
+<html>
+ <head>
+ <script src="form_utils.js"></script>
+ <script>
+function preCreatePasswordForm() {
+ // Remember the filled in password + destroy the old form.
+ var old_password = document.getElementById('password').value;
+ document.getElementById('contains-form').innerText = '';
+ // Spin the message loop: it's not clear spinning it is needed, but
+ // let's make sure the deletion side effects, if any, have time to
+ // propagate and don't cause flakes.
+ window.setTimeout(createPasswordForm, 0, old_password);
+}
+function createPasswordForm(old_password) {
+ // Create and append the new password form. It is almost the
+ // same as the deleted one, only with a different action.
+ document.body.appendChild(createSimplePasswordForm());
+ // Spin the message loop again, to let the creation settle in.
+ window.setTimeout(postCreatePasswordForm, 0, old_password);
+}
+function postCreatePasswordForm(old_password) {
+ // Copy over the old password + add a dummy username, and submit
+ // the new form.
+ document.getElementById('username').value = 'test';
+ document.getElementById('password').value = old_password;
+ document.getElementById('submit-button').click();
+}
+ </script>
+ <title>Test dynamically created password form</title>
+ </head>
+ <body>
+ <div id="contains-form">
+ <form action="none.html">
+ Old Form (to visually distinguish it from the form it is replaced with):
+ <label for="username">Username</label>
+ <input type="text" id="username" name="username">
+ <label for="password">Password</label>
+ <input type="password" id="password" name="password">
+ <input type="submit" id="submit-button" value="Don't click!">
+ </form>
+ <button id="non-form-button" onclick="preCreatePasswordForm();">
+ Click!
+ </button>
+ </div>
+ </body>
+</html>
« no previous file with comments | « chrome/test/data/password/between_parsing_and_rendering.html ('k') | chrome/test/data/password/form_utils.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698