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

Side by Side Diff: content/browser/frame_host/navigator_impl.cc

Issue 1956383003: Forwarding POST body into renderer after a cross-site transfer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/navigator_impl.h" 5 #include "content/browser/frame_host/navigator_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 } 700 }
701 701
702 void NavigatorImpl::RequestTransferURL( 702 void NavigatorImpl::RequestTransferURL(
703 RenderFrameHostImpl* render_frame_host, 703 RenderFrameHostImpl* render_frame_host,
704 const GURL& url, 704 const GURL& url,
705 SiteInstance* source_site_instance, 705 SiteInstance* source_site_instance,
706 const std::vector<GURL>& redirect_chain, 706 const std::vector<GURL>& redirect_chain,
707 const Referrer& referrer, 707 const Referrer& referrer,
708 ui::PageTransition page_transition, 708 ui::PageTransition page_transition,
709 const GlobalRequestID& transferred_global_request_id, 709 const GlobalRequestID& transferred_global_request_id,
710 bool should_replace_current_entry) { 710 bool should_replace_current_entry,
711 const scoped_refptr<ResourceRequestBody>& resource_request_body) {
711 // This call only makes sense for subframes if OOPIFs are possible. 712 // This call only makes sense for subframes if OOPIFs are possible.
712 DCHECK(!render_frame_host->GetParent() || 713 DCHECK(!render_frame_host->GetParent() ||
713 SiteIsolationPolicy::AreCrossProcessFramesPossible()); 714 SiteIsolationPolicy::AreCrossProcessFramesPossible());
714 715
715 // Allow the delegate to cancel the transfer. 716 // Allow the delegate to cancel the transfer.
716 if (!delegate_->ShouldTransferNavigation()) 717 if (!delegate_->ShouldTransferNavigation())
717 return; 718 return;
718 719
719 GURL dest_url(url); 720 GURL dest_url(url);
720 Referrer referrer_to_use(referrer); 721 Referrer referrer_to_use(referrer);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 // |entry| during NavigateToEntry. This will go away when we shortcut this 806 // |entry| during NavigateToEntry. This will go away when we shortcut this
806 // further in https://crbug.com/536906. 807 // further in https://crbug.com/536906.
807 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node)); 808 scoped_refptr<FrameNavigationEntry> frame_entry(entry->GetFrameEntry(node));
808 if (!frame_entry) { 809 if (!frame_entry) {
809 // TODO(creis): Handle POST submissions here, as above. 810 // TODO(creis): Handle POST submissions here, as above.
810 frame_entry = new FrameNavigationEntry( 811 frame_entry = new FrameNavigationEntry(
811 node->unique_name(), -1, -1, nullptr, 812 node->unique_name(), -1, -1, nullptr,
812 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url, 813 static_cast<SiteInstanceImpl*>(source_site_instance), dest_url,
813 referrer_to_use, "GET", -1); 814 referrer_to_use, "GET", -1);
814 } 815 }
816
817 // TODO(lukasza): DO NOT SUBMIT: Plumb |resource_request_body| further.
818 // Option #1: Conjure a new page state and add the body into the page state?
819 // Option #2: Add the body to either FrameNav...Entry or NavigationEntryImpl.
Łukasz Anforowicz 2016/05/10 00:49:37 I haven't quite wrapped my head yet around option
820
815 NavigateToEntry(node, *frame_entry, *entry.get(), 821 NavigateToEntry(node, *frame_entry, *entry.get(),
816 NavigationController::NO_RELOAD, false, false); 822 NavigationController::NO_RELOAD, false, false);
817 } 823 }
818 824
819 // PlzNavigate 825 // PlzNavigate
820 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node, 826 void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node,
821 bool proceed) { 827 bool proceed) {
822 CHECK(IsBrowserSideNavigationEnabled()); 828 CHECK(IsBrowserSideNavigationEnabled());
823 DCHECK(frame_tree_node); 829 DCHECK(frame_tree_node);
824 830
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 if (pending_entry != controller_->GetVisibleEntry() || 1153 if (pending_entry != controller_->GetVisibleEntry() ||
1148 !should_preserve_entry) { 1154 !should_preserve_entry) {
1149 controller_->DiscardPendingEntry(true); 1155 controller_->DiscardPendingEntry(true);
1150 1156
1151 // Also force the UI to refresh. 1157 // Also force the UI to refresh.
1152 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL); 1158 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
1153 } 1159 }
1154 } 1160 }
1155 1161
1156 } // namespace content 1162 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698