Chromium Code Reviews| Index: ios/chrome/browser/ui/ntp/new_tab_page_controller.mm |
| diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm |
| index ec65f615c8b837fb8ab11f21d5b4546ceeee4546..358c6ffcd0ee512333ac50323f0372d212dcf774 100644 |
| --- a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm |
| +++ b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm |
| @@ -164,6 +164,7 @@ enum { |
| @synthesize ntpView = newTabPageView_; |
| @synthesize swipeRecognizerProvider = swipeRecognizerProvider_; |
| +@synthesize parentViewController = parentViewController_; |
| - (id)initWithUrl:(const GURL&)url |
| loader:(id<UrlLoader>)loader |
| @@ -278,6 +279,11 @@ enum { |
| // Animations can last past the life of the NTP controller, nil out the |
| // delegate. |
| self.ntpView.scrollView.delegate = nil; |
| + |
| + // TODO(crbug.com/708319): Also call -removeFromParentViewController for |
| + // bookmarks, open tabs and incognit here. |
| + [googleLandingController_ removeFromParentViewController]; |
|
rohitrao (ping after 24h)
2017/04/12 12:45:09
Why is this not covered by the willBeDismissed cod
justincohen
2017/04/12 14:23:12
-willMoveToParentViewController is called before t
|
| + |
| [googleLandingController_ setDelegate:nil]; |
| [bookmarkController_ setDelegate:nil]; |
| [openTabsController_ setDelegate:nil]; |
| @@ -287,9 +293,11 @@ enum { |
| #pragma mark - CRWNativeContent |
| -// Note: No point implementing -handleLowMemory because all native content |
| -// views but the selected one are dropped, and the selected view doesn't |
| -// need to do anything. |
| +- (void)willBeDismissed { |
| + // TODO(crbug.com/708319): Also call -willMoveToParentViewController:nil for |
| + // bookmarks, open tabs and incognito here. |
| + [googleLandingController_ willMoveToParentViewController:nil]; |
| +} |
| - (void)reload { |
| [currentController_ reload]; |
| @@ -498,6 +506,7 @@ enum { |
| colorCache:dominantColorCache_] retain]); |
| } |
| view = [bookmarkController_ view]; |
| + // TODO(crbug.com/708319): Also addChildViewController for bookmarks here. |
| [bookmarkController_ setDelegate:self]; |
| } else if (item.identifier == NewTabPage::kMostVisitedPanel) { |
| if (!googleLandingController_) { |
| @@ -508,6 +517,7 @@ enum { |
| webToolbarDelegate:webToolbarDelegate_ |
| tabModel:tabModel_]); |
| } |
| + [self.parentViewController addChildViewController:googleLandingController_]; |
| view = [googleLandingController_ view]; |
| [googleLandingController_ setDelegate:self]; |
| } else if (item.identifier == NewTabPage::kOpenTabsPanel) { |
| @@ -515,6 +525,7 @@ enum { |
| openTabsController_.reset([[RecentTabsPanelController alloc] |
| initWithLoader:loader_ |
| browserState:browserState_]); |
| + // TODO(crbug.com/708319): Also addChildViewController for opentabs here. |
| view = [openTabsController_ view]; |
| [openTabsController_ setDelegate:self]; |
| } else if (item.identifier == NewTabPage::kIncognitoPanel) { |
| @@ -523,6 +534,7 @@ enum { |
| initWithLoader:loader_ |
| browserState:browserState_ |
| webToolbarDelegate:webToolbarDelegate_]); |
| + // TODO(crbug.com/708319): Also addChildViewController for incognito here. |
| view = [incognitoController_ view]; |
| } else { |
| NOTREACHED(); |
| @@ -536,6 +548,13 @@ enum { |
| view.frame = [self.ntpView panelFrameForItemAtIndex:index]; |
| item.view = view; |
| [self.ntpView.scrollView addSubview:view]; |
| + |
| + // Also didMoveToParentViewController for bookmarks, open tabs and incognito |
| + // here. |
| + if (item.identifier == NewTabPage::kMostVisitedPanel) { |
| + [googleLandingController_ |
| + didMoveToParentViewController:self.parentViewController]; |
| + } |
| } |
| return created; |
| } |