commit | 190f7af83049a0371b94e3736a42aa87d74e9365 | [log] [tgz] |
---|---|---|
author | Joey Arhar <jarhar@chromium.org> | Mon Jun 01 21:29:59 2020 +0000 |
committer | Commit Bot <commit-bot@chromium.org> | Mon Jun 01 21:29:59 2020 +0000 |
tree | 2bff17d2d6575da5659aa3c7755902ddd17bf2f2 | |
parent | 66f8f435eab659fd87abf4cca032b5ba5e1a05dc [diff] |
Allow one form to navigate multiple frames consecutively This patch allows one form to navigate two different frames by moving all state associated with the form submission which occurs after the async step as described in [1] from the form element and the form element's document to the target frame being navigated. Despite the spec saying that the task should be stored in the form element, firefox and safari are both able to navigate multiple frames like this. I plan to follow this up with a spec issue. This organization of state reflect what we used to have with NavigationScheduler [2], which was a member of LocalFrame. I decided to use Frame instead of LocalFrame so that we can have the same semantics for form submission regardless of whether we are submitting to a LocalFrame or a RemoteFrame. The effects are observable in this wpt: [3] This patch disables some double-submit tests. These double-submit tests were added to cover http://crbug.com/977882, however, they do so by targeting different frames. This is not the behavior sites which reported the bug had, and the bug will not reproduce with this patch. This patch basically gets us back to the behavior we had before the patch which caused that bug. Any site which relied on the exact behavior in the test would have only been able to do so since http://crrev.com/c/1850358, which was landed 7 months ago. I plan to follow up and try to get the test passing again in this bug: http://crbug.com/1087077 [1] http://html.spec.whatwg.org/C/#plan-to-navigate [2] https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/html/forms/html_form_element.cc;l=519-520;drc=8f4e07de2e8797821a9446eb66ceeb305d763cbf [3] https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html (cherry picked from commit e711e05bf363308236aaf55d924776dff3d8d141) Bug: 1085097, 1047489 Change-Id: I1a212e52ef95449c5a0527d5530efaa49d384037 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2212458 Commit-Queue: Joey Arhar <jarhar@chromium.org> Reviewed-by: Mason Freed <masonfreed@chromium.org> Reviewed-by: Nate Chapin <japhet@chromium.org> Reviewed-by: Kent Tamura <tkent@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#772785} Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225258 Reviewed-by: Ben Mason <benmason@chromium.org> Reviewed-by: Joey Arhar <jarhar@chromium.org> Cr-Commit-Position: refs/branch-heads/4103@{#654} Cr-Branched-From: 8ad47e8d21f6866e4a37f47d83a860d41debf514-refs/heads/master@{#756066}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.