Chromium Code Reviews| Index: ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
| diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
| index 1134edaf082d7d19827934bca1de5192b46ce4c9..e3e19a251ffcf6890892573176b3d88b608fd84d 100644 |
| --- a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
| +++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
| @@ -50,30 +50,10 @@ |
| using bookmarks::BookmarkNode; |
| namespace { |
| -// The width of the bookmark menu, displaying the different sections. |
| -const CGFloat kMenuWidth = 264.0; |
| // The margin on top to the navigation bar. |
| const CGFloat kNavigationBarTopMargin = 8.0; |
| } // namespace |
| -// A simple UIView subclass to pass on relayout information to its delegate. |
| -@protocol ContentViewDelegate<NSObject> |
| -- (void)willLayoutSubviews; |
| -@end |
| - |
| -@interface ContentView : UIView |
| -@property(nonatomic, weak) id<ContentViewDelegate> delegate; |
| -@end |
| - |
| -@implementation ContentView |
| -@synthesize delegate = _delegate; |
| - |
| -- (void)layoutSubviews { |
| - [self.delegate willLayoutSubviews]; |
| - [super layoutSubviews]; |
| -} |
| -@end |
| - |
| @interface BookmarkHomeTabletNTPController ()< |
| BookmarkCollectionViewDelegate, |
| BookmarkEditViewControllerDelegate, |
| @@ -81,12 +61,9 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| BookmarkFolderViewControllerDelegate, |
| BookmarkMenuViewDelegate, |
| BookmarkModelBridgeObserver, |
| - BookmarkPromoControllerDelegate, |
| - ContentViewDelegate> { |
| + BookmarkPromoControllerDelegate> { |
| // Bridge to register for bookmark changes. |
| std::unique_ptr<bookmarks::BookmarkModelBridge> _bridge; |
| - ios::ChromeBrowserState* _browserState; // Weak. |
| - __weak id<UrlLoader> _loader; |
| // The following 2 ivars both represent the set of nodes being edited. |
| // The set is for fast lookup. |
| @@ -97,19 +74,12 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| std::vector<const BookmarkNode*> _editNodesOrdered; |
| } |
| -@property(nonatomic, strong) BookmarkPanelView* panelView; |
| - |
| #pragma mark - Properties and methods akin to BookmarkHomeHandsetViewController |
| // Whether the view controller is in editing mode. |
| @property(nonatomic, assign) BOOL editing; |
| // The set of edited index paths. |
| @property(nonatomic, strong) NSMutableArray* editIndexPaths; |
| -// The bookmark model used. |
| -@property(nonatomic, assign, readonly) bookmarks::BookmarkModel* bookmarks; |
| -// The user's browser state model used. |
| -@property(nonatomic, assign, readonly) |
| - ios::ChromeBrowserState* browserState; // from superclass. |
| // Replaces |_editNodes| and |_editNodesOrdered| with new container objects. |
| - (void)resetEditNodes; |
| @@ -123,31 +93,12 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| - (void)setEditing:(BOOL)editing animated:(BOOL)animated; |
| #pragma mark - Properties and methods akin to BookmarkHomeHandsetViewController |
| - |
| -// This views holds the primary content of this controller. |
| -@property(nonatomic, readwrite, strong) ContentView* view; |
| - |
| -// The possible views that can be shown from the menu. |
| -@property(nonatomic, strong) BookmarkCollectionView* folderView; |
| -// This view is created and used if the model is not fully loaded yet by the |
| -// time this controller starts. |
| -@property(nonatomic, strong) BookmarkHomeWaitingView* waitForModelView; |
| - |
| -// The menu with all the folders and special entries. |
| -@property(nonatomic, strong) BookmarkMenuView* menuView; |
| -// At any point in time, there is exactly one collection view whose view is part |
| -// of the view hierarchy. This property determines which collection view is |
| -// visible. Not by accident, this property also reflects the selected menu item |
| -// in the BookmarkMenuView. |
| -@property(nonatomic, strong) BookmarkMenuItem* primaryMenuItem; |
| // When the view is first shown on the screen, this property represents the |
| // cached value of the y of the content offset of the primary view. This |
| // property is set to nil after it is used. |
| @property(nonatomic, strong) |
| NSNumber* cachedContentPosition; // FIXME: INACTIVE |
| -// The navigation bar sits on top of the main content. |
| -@property(nonatomic, strong) BookmarkNavigationBar* navigationBar; |
| // The editing bar present when items are selected. |
| @property(nonatomic, strong) BookmarkEditingBar* editingBar; |
| @@ -167,31 +118,19 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| #pragma mark Specific to this class. |
| -// Either the menu or the primaryView can scrollToTop. |
| -@property(nonatomic, assign) BOOL scrollToTop; |
| - |
| // Opens the url. |
| - (void)loadURL:(const GURL&)url; |
| #pragma mark View loading, laying out, and switching. |
| -// This method is called if the view needs to be loaded and the model is not |
| -// ready yet. |
| -- (void)loadWaitingView; |
| // This method should be called at most once in the life-cycle of the class. |
| // It should be called at the soonest possible time after the view has been |
| // loaded, and the bookmark model is loaded. |
| - (void)loadBookmarkViews; |
| -// If the view doesn't exist, create it. |
| -- (void)ensureFolderViewExists; |
| // Updates the property 'primaryMenuItem'. |
| // Updates the UI to reflect the new state of 'primaryMenuItem'. |
| - (void)updatePrimaryMenuItem:(BookmarkMenuItem*)menuItem |
| animated:(BOOL)animated; |
| -// The active collection view that corresponds to primaryMenuItem. |
| -- (UIView<BookmarkHomePrimaryView>*)primaryView; |
| // Returns whether the menu should be in a side panel that slides in. |
| - (BOOL)shouldPresentMenuInSlideInPanel; |
| -// Returns the width of the menu. |
| -- (CGFloat)menuWidth; |
| // Returns the leading margin of the primary view. |
| - (CGFloat)primaryViewLeadingMargin; |
| // Moves the menu and primary view to their correct parent views depending on |
| @@ -273,20 +212,10 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| @implementation BookmarkHomeTabletNTPController |
| -@dynamic view; |
| @synthesize editing = _editing; |
| @synthesize editIndexPaths = _editIndexPaths; |
| -@synthesize bookmarks = _bookmarks; |
| - |
| -@synthesize folderView = _folderView; |
| -@synthesize waitForModelView = _waitForModelView; |
| - |
| -@synthesize menuView = _menuView; |
| -@synthesize primaryMenuItem = _primaryMenuItem; |
| @synthesize cachedContentPosition = _cachedContentPosition; |
| -@synthesize navigationBar = _navigationBar; |
| @synthesize editingBar = _editingBar; |
| -@synthesize panelView = _panelView; |
| @synthesize actionSheetCoordinator = _actionSheetCoordinator; |
| @synthesize editViewController = _editViewController; |
| @@ -294,21 +223,14 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| @synthesize folderEditor = _folderEditor; |
| @synthesize bookmarkPromoController = _bookmarkPromoController; |
| -@synthesize scrollToTop = _scrollToTop; |
| - |
| // Property declared in NewTabPagePanelProtocol. |
| @synthesize delegate = _delegate; |
| - (id)initWithLoader:(id<UrlLoader>)loader |
| browserState:(ios::ChromeBrowserState*)browserState { |
| - self = [super init]; |
| + self = [super initWithLoader:loader browserState:browserState]; |
| if (self) { |
| - DCHECK(browserState); |
| - _browserState = browserState->GetOriginalChromeBrowserState(); |
| - _loader = loader; |
| - |
| - _bookmarks = ios::BookmarkModelFactory::GetForBrowserState(_browserState); |
| - _bridge.reset(new bookmarks::BookmarkModelBridge(self, _bookmarks)); |
| + _bridge.reset(new bookmarks::BookmarkModelBridge(self, self.bookmarks)); |
| _editIndexPaths = [[NSMutableArray alloc] init]; |
| // It is important to initialize the promo controller with the browser state |
| // passed in, as it could be incognito. |
| @@ -320,23 +242,18 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| } |
| - (void)dealloc { |
| - self.view.delegate = nil; |
| - |
| - _folderView.delegate = nil; |
| - |
| - _menuView.delegate = nil; |
| - |
| _editViewController.delegate = nil; |
| _folderSelector.delegate = nil; |
| } |
| -- (ios::ChromeBrowserState*)browserState { |
| - return _browserState; |
| -} |
| +#pragma mark - UIViewController method. |
| -#pragma mark - ContentViewDelegate method. |
| +- (void)loadView { |
|
lpromero
2017/07/07 13:30:09
Not needed anymore as this is no longer a specific
ramyasharma
2017/07/10 06:55:58
Done.
|
| + self.view = [[UIView alloc] initWithFrame:CGRectZero]; |
| +} |
| -- (void)willLayoutSubviews { |
| +- (void)viewWillLayoutSubviews { |
| + [super viewWillLayoutSubviews]; |
| if (![self primaryView] && ![self primaryMenuItem] && |
| self.bookmarks->loaded()) { |
| BookmarkMenuItem* item = nil; |
| @@ -428,7 +345,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| new_tab_page_uma::ACTION_OPENED_BOOKMARK); |
| base::RecordAction( |
| base::UserMetricsAction("MobileBookmarkManagerEntryOpened")); |
| - [_loader loadURL:url |
| + [self.loader loadURL:url |
| referrer:web::Referrer() |
| transition:ui::PAGE_TRANSITION_AUTO_BOOKMARK |
| rendererInitiated:NO]; |
| @@ -436,18 +353,6 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| #pragma mark - Views |
| -- (void)loadWaitingView { |
| - DCHECK(!self.waitForModelView); |
| - DCHECK(self.view); |
| - |
| - // Present a waiting view. |
| - BookmarkHomeWaitingView* waitingView = |
| - [[BookmarkHomeWaitingView alloc] initWithFrame:self.view.bounds]; |
| - self.waitForModelView = waitingView; |
| - [self.view addSubview:self.waitForModelView]; |
| - [self.waitForModelView startWaiting]; |
| -} |
| - |
| - (void)updateMenuViewLayout { |
| LayoutRect menuLayout = |
| LayoutRectMake(0, self.view.bounds.size.width, 0, self.menuWidth, |
| @@ -456,17 +361,11 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| } |
| - (void)loadBookmarkViews { |
| + [super loadBookmarkViews]; |
| DCHECK(self.bookmarks->loaded()); |
| - // Create the menu. |
| - LayoutRect menuLayout = |
| - LayoutRectMake(0, self.view.bounds.size.width, 0, self.menuWidth, |
| - self.view.bounds.size.height); |
| - self.menuView = [[BookmarkMenuView alloc] |
| - initWithBrowserState:self.browserState |
| - frame:LayoutRectGetRect(menuLayout)]; |
| self.menuView.delegate = self; |
| - self.menuView.autoresizingMask = UIViewAutoresizingFlexibleHeight; |
| + self.folderView.delegate = self; |
| [self moveMenuAndPrimaryViewToAdequateParent]; |
| @@ -495,38 +394,12 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| } |
| } |
| -- (void)ensureFolderViewExists { |
| - if (self.folderView) |
| - return; |
| - |
| - BookmarkCollectionView* view = |
| - [[BookmarkCollectionView alloc] initWithBrowserState:self.browserState |
| - frame:CGRectZero]; |
| - self.folderView = view; |
| - self.folderView.delegate = self; |
| - [self.folderView setEditing:self.editing animated:NO]; |
| - self.folderView.autoresizingMask = |
| - UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; |
| -} |
| - |
| - (void)updatePrimaryMenuItem:(BookmarkMenuItem*)menuItem |
| animated:(BOOL)animated { |
| - DCHECK(menuItem.type == bookmarks::MenuItemFolder); |
| - if ([self.primaryMenuItem isEqual:menuItem]) |
| - return; |
| - |
| if (![self.view superview]) |
| return; |
| - [[self primaryView] removeFromSuperview]; |
| - self.primaryMenuItem = menuItem; |
| - |
| - [self ensureFolderViewExists]; |
| - [self.folderView resetFolder:self.primaryMenuItem.folder]; |
| - [self.folderView promoStateChangedAnimated:NO]; |
| - |
| - [[self primaryView] changeOrientation:GetInterfaceOrientation()]; |
| - [[self primaryView] setScrollsToTop:self.scrollToTop]; |
| + [super updatePrimaryMenuItem:menuItem]; |
| [self moveMenuAndPrimaryViewToAdequateParent]; |
| @@ -536,25 +409,13 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| self.navigationBar.hidden = NO; |
| [self updateNavigationBarAnimated:animated |
| orientation:GetInterfaceOrientation()]; |
| - |
| - [self.menuView updatePrimaryMenuItem:self.primaryMenuItem]; |
| [self updateEditBarShadow]; |
| } |
| -- (UIView<BookmarkHomePrimaryView>*)primaryView { |
| - if (self.primaryMenuItem.type == bookmarks::MenuItemFolder) |
| - return self.folderView; |
| - return nil; |
| -} |
| - |
| - (BOOL)shouldPresentMenuInSlideInPanel { |
| return IsCompactTablet(); |
| } |
| -- (CGFloat)menuWidth { |
| - return kMenuWidth; |
| -} |
| - |
| - (CGFloat)primaryViewLeadingMargin { |
| if ([self shouldPresentMenuInSlideInPanel]) |
| return 0; |
| @@ -572,12 +433,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| [primaryView removeFromSuperview]; |
| if ([self shouldPresentMenuInSlideInPanel]) { |
| - // Create (if needed), and add the panelView to the view hierarchy. |
| - if (!self.panelView) { |
| - self.panelView = |
| - [[BookmarkPanelView alloc] initWithFrame:CGRectZero |
| - menuViewWidth:[self menuWidth]]; |
| - } |
| + // add the panelView to the view hierarchy. |
|
lpromero
2017/07/07 13:30:09
Nit: s/add/Add
ramyasharma
2017/07/10 06:55:58
Done.
|
| [self.view addSubview:self.panelView]; |
| CGSize size = self.view.bounds.size; |
| CGFloat navBarHeight = CGRectGetHeight([self navigationBarFrame]); |
| @@ -1182,17 +1038,9 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
| [[self primaryView] setScrollsToTop:self.scrollToTop]; |
| } |
| -- (void)loadView { |
| - self.view = [[ContentView alloc] initWithFrame:CGRectZero]; |
| -} |
| - |
| - (void)viewDidLoad { |
| [super viewDidLoad]; |
| - self.view.delegate = self; |
| self.view.backgroundColor = bookmark_utils_ios::mainBackgroundColor(); |
| - BookmarkNavigationBar* bar = |
| - [[BookmarkNavigationBar alloc] initWithFrame:CGRectZero]; |
| - self.navigationBar = bar; |
| self.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; |
| [self.navigationBar setEditTarget:self |