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

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

Issue 1143653002: Create FrameNavigationEntries for manual subframe navigations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 6 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/navigation_controller_impl_browsertest.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/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1386 DiscardNonCommittedEntriesInternal(); 1386 DiscardNonCommittedEntriesInternal();
1387 return; 1387 return;
1388 } 1388 }
1389 1389
1390 // Manual subframe navigations just get the current entry cloned so the user 1390 // Manual subframe navigations just get the current entry cloned so the user
1391 // can go back or forward to it. The actual subframe information will be 1391 // can go back or forward to it. The actual subframe information will be
1392 // stored in the page state for each of those entries. This happens out of 1392 // stored in the page state for each of those entries. This happens out of
1393 // band with the actual navigations. 1393 // band with the actual navigations.
1394 DCHECK(GetLastCommittedEntry()) << "ClassifyNavigation should guarantee " 1394 DCHECK(GetLastCommittedEntry()) << "ClassifyNavigation should guarantee "
1395 << "that a last committed entry exists."; 1395 << "that a last committed entry exists.";
1396 NavigationEntryImpl* new_entry = GetLastCommittedEntry()->Clone(); 1396
1397 NavigationEntryImpl* new_entry = nullptr;
1398 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1399 switches::kSitePerProcess)) {
1400 // Make sure new_entry takes ownership of frame_entry in a scoped_refptr.
1401 FrameNavigationEntry* frame_entry = new FrameNavigationEntry(
1402 rfh->frame_tree_node()->frame_tree_node_id(), rfh->GetSiteInstance(),
1403 params.url, params.referrer);
1404 new_entry = GetLastCommittedEntry()->CloneAndReplace(rfh->frame_tree_node(),
1405 frame_entry);
1406 CHECK(frame_entry->HasOneRef());
1407 } else {
1408 new_entry = GetLastCommittedEntry()->Clone();
1409 }
1410
1397 new_entry->SetPageID(params.page_id); 1411 new_entry->SetPageID(params.page_id);
1398 InsertOrReplaceEntry(new_entry, false); 1412 InsertOrReplaceEntry(new_entry, false);
1399 } 1413 }
1400 1414
1401 bool NavigationControllerImpl::RendererDidNavigateAutoSubframe( 1415 bool NavigationControllerImpl::RendererDidNavigateAutoSubframe(
1402 RenderFrameHostImpl* rfh, 1416 RenderFrameHostImpl* rfh,
1403 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { 1417 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
1404 DCHECK(ui::PageTransitionCoreTypeIs(params.transition, 1418 DCHECK(ui::PageTransitionCoreTypeIs(params.transition,
1405 ui::PAGE_TRANSITION_AUTO_SUBFRAME)); 1419 ui::PAGE_TRANSITION_AUTO_SUBFRAME));
1406 1420
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
2036 } 2050 }
2037 } 2051 }
2038 } 2052 }
2039 2053
2040 void NavigationControllerImpl::SetGetTimestampCallbackForTest( 2054 void NavigationControllerImpl::SetGetTimestampCallbackForTest(
2041 const base::Callback<base::Time()>& get_timestamp_callback) { 2055 const base::Callback<base::Time()>& get_timestamp_callback) {
2042 get_timestamp_callback_ = get_timestamp_callback; 2056 get_timestamp_callback_ = get_timestamp_callback;
2043 } 2057 }
2044 2058
2045 } // namespace content 2059 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/frame_host/navigation_controller_impl_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698