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

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

Issue 1738233002: Disallow was_within_same_page = true for a cross-process navigation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 4 years, 9 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
« no previous file with comments | « no previous file | content/browser/frame_host/navigator_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree(); 450 FrameTree* frame_tree = render_frame_host->frame_tree_node()->frame_tree();
451 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible(); 451 bool oopifs_possible = SiteIsolationPolicy::AreCrossProcessFramesPossible();
452 452
453 bool has_embedded_credentials = 453 bool has_embedded_credentials =
454 params.url.has_username() || params.url.has_password(); 454 params.url.has_username() || params.url.has_password();
455 UMA_HISTOGRAM_BOOLEAN("Navigation.FrameHasEmbeddedCredentials", 455 UMA_HISTOGRAM_BOOLEAN("Navigation.FrameHasEmbeddedCredentials",
456 has_embedded_credentials); 456 has_embedded_credentials);
457 457
458 bool is_navigation_within_page = controller_->IsURLInPageNavigation( 458 bool is_navigation_within_page = controller_->IsURLInPageNavigation(
459 params.url, params.was_within_same_page, render_frame_host); 459 params.url, params.was_within_same_page, render_frame_host);
460
461 // If a frame claims it navigated within page, it must be the current frame,
462 // not a pending one.
463 if (is_navigation_within_page &&
464 render_frame_host !=
465 render_frame_host->frame_tree_node()
466 ->render_manager()
467 ->current_frame_host()) {
468 bad_message::ReceivedBadMessage(render_frame_host->GetProcess(),
469 bad_message::NC_IN_PAGE_NAVIGATION);
470 is_navigation_within_page = false;
471 }
472
460 if (ui::PageTransitionIsMainFrame(params.transition)) { 473 if (ui::PageTransitionIsMainFrame(params.transition)) {
461 if (delegate_) { 474 if (delegate_) {
462 // When overscroll navigation gesture is enabled, a screenshot of the page 475 // When overscroll navigation gesture is enabled, a screenshot of the page
463 // in its current state is taken so that it can be used during the 476 // in its current state is taken so that it can be used during the
464 // nav-gesture. It is necessary to take the screenshot here, before 477 // nav-gesture. It is necessary to take the screenshot here, before
465 // calling RenderFrameHostManager::DidNavigateMainFrame, because that can 478 // calling RenderFrameHostManager::DidNavigateMainFrame, because that can
466 // change WebContents::GetRenderViewHost to return the new host, instead 479 // change WebContents::GetRenderViewHost to return the new host, instead
467 // of the one that may have just been swapped out. 480 // of the one that may have just been swapped out.
468 if (delegate_->CanOverscrollContent()) { 481 if (delegate_->CanOverscrollContent()) {
469 // Don't take screenshots if we are staying on the same page. We want 482 // Don't take screenshots if we are staying on the same page. We want
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 entry->set_should_replace_entry(pending_entry->should_replace_entry()); 1078 entry->set_should_replace_entry(pending_entry->should_replace_entry());
1066 entry->SetRedirectChain(pending_entry->GetRedirectChain()); 1079 entry->SetRedirectChain(pending_entry->GetRedirectChain());
1067 } 1080 }
1068 controller_->SetPendingEntry(std::move(entry)); 1081 controller_->SetPendingEntry(std::move(entry));
1069 if (delegate_) 1082 if (delegate_)
1070 delegate_->NotifyChangedNavigationState(content::INVALIDATE_TYPE_URL); 1083 delegate_->NotifyChangedNavigationState(content::INVALIDATE_TYPE_URL);
1071 } 1084 }
1072 } 1085 }
1073 1086
1074 } // namespace content 1087 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/frame_host/navigator_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698