Reland "[ios] Call LoadIfNecessary even when displaying the NTP."

This reverts commit 2a974e5ae5d7df2535b2923999f48a075d5394a8.

WKBasedNavigationManagerImpl::Restore will never actually begin loading
if the current page is an NTP.  Call LoadIfNecessary to begin restore
process.

Updated to more narrowly scope -LoadIfNecessary for NTP..

Change-Id: Ic1906bbab280d46e9b0766517eff718728b26933
Reviewed-on: https://chromium-review.googlesource.com/c/1427042
Auto-Submit: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Danyao Wang <danyao@chromium.org>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625047}
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index 0c76470..59933f3 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -2366,6 +2366,10 @@
       UIViewController* viewController =
           _ntpCoordinatorsForWebStates[tab.webState].viewController;
       viewController.view.frame = [self ntpFrameForWebState:tab.webState];
+      // TODO(crbug.com/873729): For a newly created WebState, the session will
+      // not be restored until LoadIfNecessary call. Remove when fixed.
+      if (tab.webState->GetNavigationManager()->IsRestoreSessionInProgress())
+        tab.webState->GetNavigationManager()->LoadIfNecessary();
       self.browserContainerViewController.contentViewController =
           viewController;
     } else {