Index: ios/chrome/browser/ui/browser_view_controller.mm |
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm |
index 6a4a6377932b8bb80bc74322b25a863d130bcf91..59a76ae81321b5afa2632fe4593f5a8bdbe20aed 100644 |
--- a/ios/chrome/browser/ui/browser_view_controller.mm |
+++ b/ios/chrome/browser/ui/browser_view_controller.mm |
@@ -3678,15 +3678,12 @@ - (void)loadURL:(const GURL&)url |
Tab* newTab = [_preloadController releasePrerenderContents]; |
DCHECK(oldTab); |
DCHECK(newTab); |
- if (oldTab && newTab) { |
+ bool canPruneItems = |
+ [newTab navigationManager]->CanPruneAllButLastCommittedItem(); |
+ if (oldTab && newTab && canPruneItems) { |
[oldTab recordStateInHistory]; |
- DCHECK([newTab navigationManager]); |
- CRWSessionController* newHistory = |
- [newTab navigationManagerImpl]->GetSessionController(); |
- DCHECK([oldTab navigationManager]); |
- CRWSessionController* oldHistory = |
- [oldTab navigationManagerImpl]->GetSessionController(); |
- [newHistory insertStateFromSessionController:oldHistory]; |
+ [newTab navigationManager]->CopyStateFromAndPrune( |
+ [oldTab navigationManager]); |
[[newTab nativeAppNavigationController] |
copyStateFrom:[oldTab nativeAppNavigationController]]; |
[_model replaceTab:oldTab withTab:newTab]; |