| Index: content/browser/frame_host/navigation_handle_impl.cc
|
| diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc
|
| index 318967d41be2ed0f3e091e686c7e78382447c4c1..b34eca2b8379e722f58289572ff7ca06bd150a76 100644
|
| --- a/content/browser/frame_host/navigation_handle_impl.cc
|
| +++ b/content/browser/frame_host/navigation_handle_impl.cc
|
| @@ -14,6 +14,7 @@
|
| #include "content/browser/devtools/render_frame_devtools_agent_host.h"
|
| #include "content/browser/frame_host/ancestor_throttle.h"
|
| #include "content/browser/frame_host/debug_urls.h"
|
| +#include "content/browser/frame_host/form_submission_throttle.h"
|
| #include "content/browser/frame_host/frame_tree_node.h"
|
| #include "content/browser/frame_host/mixed_content_navigation_throttle.h"
|
| #include "content/browser/frame_host/navigation_controller_impl.h"
|
| @@ -65,11 +66,12 @@ std::unique_ptr<NavigationHandleImpl> NavigationHandleImpl::Create(
|
| const base::TimeTicks& navigation_start,
|
| int pending_nav_entry_id,
|
| bool started_from_context_menu,
|
| - CSPDisposition should_check_main_world_csp) {
|
| + CSPDisposition should_check_main_world_csp,
|
| + bool is_form_submission) {
|
| return std::unique_ptr<NavigationHandleImpl>(new NavigationHandleImpl(
|
| url, redirect_chain, frame_tree_node, is_renderer_initiated, is_same_page,
|
| navigation_start, pending_nav_entry_id, started_from_context_menu,
|
| - should_check_main_world_csp));
|
| + should_check_main_world_csp, is_form_submission));
|
| }
|
|
|
| NavigationHandleImpl::NavigationHandleImpl(
|
| @@ -81,7 +83,8 @@ NavigationHandleImpl::NavigationHandleImpl(
|
| const base::TimeTicks& navigation_start,
|
| int pending_nav_entry_id,
|
| bool started_from_context_menu,
|
| - CSPDisposition should_check_main_world_csp)
|
| + CSPDisposition should_check_main_world_csp,
|
| + bool is_form_submission)
|
| : url_(url),
|
| has_user_gesture_(false),
|
| transition_(ui::PAGE_TRANSITION_LINK),
|
| @@ -113,6 +116,7 @@ NavigationHandleImpl::NavigationHandleImpl(
|
| restore_type_(RestoreType::NONE),
|
| navigation_type_(NAVIGATION_TYPE_UNKNOWN),
|
| should_check_main_world_csp_(should_check_main_world_csp),
|
| + is_form_submission_(is_form_submission),
|
| weak_factory_(this) {
|
| DCHECK(!navigation_start.is_null());
|
| if (redirect_chain_.empty())
|
| @@ -925,6 +929,20 @@ void NavigationHandleImpl::RegisterNavigationThrottles() {
|
| std::vector<std::unique_ptr<NavigationThrottle>> throttles_to_register =
|
| GetDelegate()->CreateThrottlesForNavigation(this);
|
|
|
| + std::unique_ptr<content::NavigationThrottle> ancestor_throttle =
|
| + content::AncestorThrottle::MaybeCreateThrottleFor(this);
|
| + if (ancestor_throttle)
|
| + throttles_.push_back(std::move(ancestor_throttle));
|
| +
|
| + std::unique_ptr<content::NavigationThrottle> form_submission_throttle =
|
| + content::FormSubmissionThrottle::MaybeCreateThrottleFor(this);
|
| + if (form_submission_throttle)
|
| + throttles_.push_back(std::move(form_submission_throttle));
|
| +
|
| + // Check for mixed content. This is done after the AncestorThrottle and the
|
| + // FormSubmissionThrottle so that when folks block mixed content with a CSP
|
| + // policy, they don't get a warning. They'll still get a warning in the
|
| + // console about CSP blocking the load.
|
| std::unique_ptr<NavigationThrottle> mixed_content_throttle =
|
| MixedContentNavigationThrottle::CreateThrottleForNavigation(this);
|
| if (mixed_content_throttle)
|
| @@ -940,11 +958,6 @@ void NavigationHandleImpl::RegisterNavigationThrottles() {
|
| if (clear_site_data_throttle)
|
| throttles_to_register.push_back(std::move(clear_site_data_throttle));
|
|
|
| - std::unique_ptr<content::NavigationThrottle> ancestor_throttle =
|
| - content::AncestorThrottle::MaybeCreateThrottleFor(this);
|
| - if (ancestor_throttle)
|
| - throttles_.push_back(std::move(ancestor_throttle));
|
| -
|
| throttles_.insert(throttles_.begin(),
|
| std::make_move_iterator(throttles_to_register.begin()),
|
| std::make_move_iterator(throttles_to_register.end()));
|
|
|