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

Side by Side Diff: ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm

Issue 2786893002: [ios] Dispatcher for tab_strip and tab_grid. (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controll er.h" 5 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controll er.h"
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h"
9 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_data_source.h " 8 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_data_source.h "
10 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell.h" 9 #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell.h"
11 10
12 #if !defined(__has_feature) || !__has_feature(objc_arc) 11 #if !defined(__has_feature) || !__has_feature(objc_arc)
13 #error "This file requires ARC support." 12 #error "This file requires ARC support."
14 #endif 13 #endif
15 14
16 @interface TabCollectionViewController ()<UICollectionViewDataSource, 15 @interface TabCollectionViewController ()<UICollectionViewDataSource,
17 UICollectionViewDelegate, 16 UICollectionViewDelegate,
18 SessionCellDelegate> 17 SessionCellDelegate>
19 @property(nonatomic, readwrite) UICollectionView* tabs; 18 @property(nonatomic, readwrite) UICollectionView* tabs;
20 @end 19 @end
21 20
22 @implementation TabCollectionViewController 21 @implementation TabCollectionViewController
23 @synthesize tabs = _tabs; 22 @synthesize tabs = _tabs;
24 @synthesize dataSource = _dataSource; 23 @synthesize dataSource = _dataSource;
25 @synthesize tabCommandHandler = _tabCommandHandler;
26 24
27 #pragma mark - UIViewController 25 #pragma mark - UIViewController
28 26
29 - (void)viewDidLoad { 27 - (void)viewDidLoad {
30 [super viewDidLoad]; 28 [super viewDidLoad];
31 UICollectionView* tabs = 29 UICollectionView* tabs =
32 [[UICollectionView alloc] initWithFrame:CGRectZero 30 [[UICollectionView alloc] initWithFrame:CGRectZero
33 collectionViewLayout:[self collectionViewLayout]]; 31 collectionViewLayout:[self collectionViewLayout]];
34 tabs.translatesAutoresizingMaskIntoConstraints = NO; 32 tabs.translatesAutoresizingMaskIntoConstraints = NO;
35 tabs.backgroundColor = [UIColor blackColor]; 33 tabs.backgroundColor = [UIColor blackColor];
(...skipping 19 matching lines...) Expand all
55 53
56 #pragma mark - Required subclass override 54 #pragma mark - Required subclass override
57 55
58 - (UICollectionViewLayout*)collectionViewLayout { 56 - (UICollectionViewLayout*)collectionViewLayout {
59 [NSException 57 [NSException
60 raise:NSInternalInconsistencyException 58 raise:NSInternalInconsistencyException
61 format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; 59 format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];
62 return nil; 60 return nil;
63 } 61 }
64 62
63 - (void)showTabAtIndex:(int)index {
64 [NSException
marq (ping after 24h) 2017/03/30 08:46:18 We prefer not to raise ObjC exceptions (see https:
edchin 2017/03/30 18:15:51 Done.
65 raise:NSInternalInconsistencyException
66 format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];
67 }
68
69 - (void)closeTabAtIndex:(int)index {
70 [NSException
71 raise:NSInternalInconsistencyException
72 format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];
73 }
74
65 #pragma mark - UICollectionViewDataSource methods 75 #pragma mark - UICollectionViewDataSource methods
66 76
67 - (NSInteger)numberOfSectionsInCollectionView: 77 - (NSInteger)numberOfSectionsInCollectionView:
68 (UICollectionView*)collectionView { 78 (UICollectionView*)collectionView {
69 return 1; 79 return 1;
70 } 80 }
71 81
72 - (NSInteger)collectionView:(UICollectionView*)collectionView 82 - (NSInteger)collectionView:(UICollectionView*)collectionView
73 numberOfItemsInSection:(NSInteger)section { 83 numberOfItemsInSection:(NSInteger)section {
74 return [self.dataSource numberOfTabs]; 84 return [self.dataSource numberOfTabs];
(...skipping 29 matching lines...) Expand all
104 114
105 - (TabSwitcherCache*)tabSwitcherCache { 115 - (TabSwitcherCache*)tabSwitcherCache {
106 // PLACEHOLDER: return image cache. 116 // PLACEHOLDER: return image cache.
107 return nil; 117 return nil;
108 } 118 }
109 119
110 - (void)cellPressed:(UICollectionViewCell*)cell { 120 - (void)cellPressed:(UICollectionViewCell*)cell {
111 NSInteger item = [[self.tabs indexPathForCell:cell] item]; 121 NSInteger item = [[self.tabs indexPathForCell:cell] item];
112 DCHECK_LE(item, INT_MAX); 122 DCHECK_LE(item, INT_MAX);
113 int index = static_cast<int>(item); 123 int index = static_cast<int>(item);
114 [self.tabCommandHandler showTabAtIndex:index]; 124 [self showTabAtIndex:index];
115 } 125 }
116 126
117 - (void)deleteButtonPressedForCell:(UICollectionViewCell*)cell { 127 - (void)deleteButtonPressedForCell:(UICollectionViewCell*)cell {
118 NSInteger item = [[self.tabs indexPathForCell:cell] item]; 128 NSInteger item = [[self.tabs indexPathForCell:cell] item];
119 DCHECK_LE(item, INT_MAX); 129 DCHECK_LE(item, INT_MAX);
120 int index = static_cast<int>(item); 130 int index = static_cast<int>(item);
121 [self.tabCommandHandler closeTabAtIndex:index]; 131 [self closeTabAtIndex:index];
122 } 132 }
123 133
124 #pragma mark - TabCollectionConsumer methods 134 #pragma mark - TabCollectionConsumer methods
125 135
126 - (void)insertItemAtIndex:(int)index { 136 - (void)insertItemAtIndex:(int)index {
127 [self.tabs insertItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index 137 [self.tabs insertItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index
128 inSection:0] ]]; 138 inSection:0] ]];
129 } 139 }
130 140
131 - (void)deleteItemAtIndex:(int)index { 141 - (void)deleteItemAtIndex:(int)index {
132 [self.tabs deleteItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index 142 [self.tabs deleteItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index
133 inSection:0] ]]; 143 inSection:0] ]];
134 } 144 }
135 145
136 - (void)reloadItemsAtIndexes:(NSIndexSet*)indexes { 146 - (void)reloadItemsAtIndexes:(NSIndexSet*)indexes {
137 NSMutableArray<NSIndexPath*>* indexPaths = [[NSMutableArray alloc] init]; 147 NSMutableArray<NSIndexPath*>* indexPaths = [[NSMutableArray alloc] init];
138 [indexes enumerateIndexesUsingBlock:^(NSUInteger index, BOOL* _Nonnull stop) { 148 [indexes enumerateIndexesUsingBlock:^(NSUInteger index, BOOL* _Nonnull stop) {
139 [indexPaths addObject:[NSIndexPath indexPathForItem:index inSection:0]]; 149 [indexPaths addObject:[NSIndexPath indexPathForItem:index inSection:0]];
140 }]; 150 }];
141 [self.tabs reloadItemsAtIndexPaths:indexPaths]; 151 [self.tabs reloadItemsAtIndexPaths:indexPaths];
142 } 152 }
143 153
144 @end 154 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698