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

Unified Diff: ui/app_list/cocoa/apps_grid_controller.mm

Issue 1802473002: Add deprecation warning banner to App Launcher on Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20170310-MacViews-ViewsUnittests
Patch Set: self nits Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: ui/app_list/cocoa/apps_grid_controller.mm
diff --git a/ui/app_list/cocoa/apps_grid_controller.mm b/ui/app_list/cocoa/apps_grid_controller.mm
index 53ea288fcf367e776d2456fefc3612b01ba01d9d..455c441299ffa0a333853a11216eae07cee403fe 100644
--- a/ui/app_list/cocoa/apps_grid_controller.mm
+++ b/ui/app_list/cocoa/apps_grid_controller.mm
@@ -4,6 +4,7 @@
#import "ui/app_list/cocoa/apps_grid_controller.h"
+#include "base/command_line.h"
#include "base/mac/foundation_util.h"
#include "base/macros.h"
#include "ui/app_list/app_list_item.h"
@@ -17,10 +18,8 @@
namespace {
-// OSX app list has hardcoded rows and columns for now.
-const int kFixedRows = 4;
+// OSX app list has hardcoded columns for now.
const int kFixedColumns = 4;
-const int kItemsPerPage = kFixedRows * kFixedColumns;
// Padding space in pixels for fixed layout.
const CGFloat kGridTopPadding = 1;
@@ -34,11 +33,31 @@ const CGFloat kPreferredTileHeight = 98;
const CGFloat kViewWidth =
kFixedColumns * kPreferredTileWidth + 2 * kLeftRightPadding;
-const CGFloat kViewHeight = kFixedRows * kPreferredTileHeight;
const NSTimeInterval kScrollWhileDraggingDelay = 1.0;
NSTimeInterval g_scroll_duration = 0.18;
+const char kTestType[] = "test-type";
+
+int DetermineFixedRowCount() {
+ // This needs to be called before a delegate exists, since it is needed to
+ // determine the height of the view.
+ return [AppsGridController hasFewerRows] ? 3 : 4;
+}
+
+int RowCount() {
+ static const int row_count = DetermineFixedRowCount();
+ return row_count;
+}
+
+int ItemsPerPage() {
+ return RowCount() * kFixedColumns;
+}
+
+CGFloat ViewHeight() {
+ return RowCount() * kPreferredTileHeight;
+}
+
} // namespace
@interface AppsGridController ()
@@ -119,7 +138,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
return;
[parent_ selectItemAtIndex:index];
- [parent_ scrollToPage:index / kItemsPerPage];
+ [parent_ scrollToPage:index / ItemsPerPage()];
}
AppsGridController* parent_; // Weak, owns us.
@@ -152,17 +171,21 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
return kScrollerPadding;
}
++ (BOOL)hasFewerRows {
+ return !base::CommandLine::ForCurrentProcess()->HasSwitch(kTestType);
+}
+
@synthesize paginationObserver = paginationObserver_;
- (id)init {
if ((self = [super init])) {
bridge_.reset(new app_list::AppsGridDelegateBridge(self));
NSSize cellSize = NSMakeSize(kPreferredTileWidth, kPreferredTileHeight);
- dragManager_.reset(
- [[AppsCollectionViewDragManager alloc] initWithCellSize:cellSize
- rows:kFixedRows
- columns:kFixedColumns
- gridController:self]);
+ dragManager_.reset([[AppsCollectionViewDragManager alloc]
+ initWithCellSize:cellSize
+ rows:RowCount()
+ columns:kFixedColumns
+ gridController:self]);
pages_.reset([[NSMutableArray alloc] init]);
items_.reset([[NSMutableArray alloc] init]);
[self loadAndSetView];
@@ -357,7 +380,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
[[PageContainerView alloc] initWithFrame:NSZeroRect]);
NSRect scrollFrame = NSMakeRect(0, kGridTopPadding, kViewWidth,
- kViewHeight + kScrollerPadding);
+ ViewHeight() + kScrollerPadding);
base::scoped_nsobject<ScrollViewWithNoScrollbars> scrollView(
[[ScrollViewWithNoScrollbars alloc] initWithFrame:scrollFrame]);
[scrollView setBorderType:NSNoBorder];
@@ -403,9 +426,9 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
}
- (AppsGridViewItem*)itemAtIndex:(size_t)itemIndex {
- const size_t pageIndex = itemIndex / kItemsPerPage;
+ const size_t pageIndex = itemIndex / ItemsPerPage();
return [self itemAtPageIndex:pageIndex
- indexInPage:itemIndex - pageIndex * kItemsPerPage];
+ indexInPage:itemIndex - pageIndex * ItemsPerPage()];
}
- (NSUInteger)selectedItemIndex {
@@ -414,7 +437,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
if (indexOnPage == NSNotFound)
return NSNotFound;
- return indexOnPage + visiblePage_ * kItemsPerPage;
+ return indexOnPage + visiblePage_ * ItemsPerPage();
}
- (NSButton*)selectedButton {
@@ -437,7 +460,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
// Note there is always at least one page.
size_t targetPages = 1;
if ([items_ count] != 0)
- targetPages = ([items_ count] - 1) / kItemsPerPage + 1;
+ targetPages = ([items_ count] - 1) / ItemsPerPage() + 1;
const size_t currentPages = [self pageCount];
// First see if the number of pages have changed.
@@ -449,20 +472,19 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
} else {
// Pages need to be added.
for (size_t i = currentPages; i < targetPages; ++i) {
- NSRect pageFrame = NSMakeRect(
- kLeftRightPadding + kViewWidth * i, 0,
- kViewWidth, kViewHeight);
+ NSRect pageFrame = NSMakeRect(kLeftRightPadding + kViewWidth * i, 0,
+ kViewWidth, ViewHeight());
[pages_ addObject:[dragManager_ makePageWithFrame:pageFrame]];
}
}
[[self pagesContainerView] setSubviews:pages_];
- NSSize pagesSize = NSMakeSize(kViewWidth * targetPages, kViewHeight);
+ NSSize pagesSize = NSMakeSize(kViewWidth * targetPages, ViewHeight());
[[self pagesContainerView] setFrameSize:pagesSize];
[paginationObserver_ totalPagesChanged];
}
- const size_t startPage = startItemIndex / kItemsPerPage;
+ const size_t startPage = startItemIndex / ItemsPerPage();
// All pages on or after |startPage| may need items added or removed.
for (size_t pageIndex = startPage; pageIndex < targetPages; ++pageIndex) {
[self updatePageContent:pageIndex
@@ -484,7 +506,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
}
NSRange inPageRange = NSIntersectionRange(
- NSMakeRange(pageIndex * kItemsPerPage, kItemsPerPage),
+ NSMakeRange(pageIndex * ItemsPerPage(), ItemsPerPage()),
NSMakeRange(0, [items_ count]));
NSArray* pageContent = [items_ subarrayWithRange:inPageRange];
[pageView setContent:pageContent];
@@ -507,8 +529,8 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
[items_ insertObject:item
atIndex:toIndex];
- size_t fromPageIndex = fromIndex / kItemsPerPage;
- size_t toPageIndex = toIndex / kItemsPerPage;
+ size_t fromPageIndex = fromIndex / ItemsPerPage();
+ size_t toPageIndex = toIndex / ItemsPerPage();
if (fromPageIndex == toPageIndex) {
[self updatePageContent:fromPageIndex
resetModel:NO]; // Just reorder items.
@@ -603,7 +625,7 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
// If nothing is currently selected, select the first item on the page.
if (oldIndex == NSNotFound) {
- [self selectItemAtIndex:visiblePage_ * kItemsPerPage];
+ [self selectItemAtIndex:visiblePage_ * ItemsPerPage()];
return YES;
}
@@ -629,8 +651,8 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
if (index >= [items_ count])
return;
- if (index / kItemsPerPage != visiblePage_)
- [self scrollToPage:index / kItemsPerPage];
+ if (index / ItemsPerPage() != visiblePage_)
+ [self scrollToPage:index / ItemsPerPage()];
[[self itemAtIndex:index] setSelected:YES];
}
@@ -645,39 +667,41 @@ class AppsGridDelegateBridge : public AppListItemListObserver {
NSUInteger oldIndex = [self selectedItemIndex];
// If nothing is currently selected, select the first item on the page.
if (oldIndex == NSNotFound) {
- [self selectItemAtIndex:visiblePage_ * kItemsPerPage];
+ [self selectItemAtIndex:visiblePage_ * ItemsPerPage()];
return YES;
}
if (command == @selector(moveLeft:)) {
- return oldIndex % kFixedColumns == 0 ?
- [self moveSelectionByDelta:-kItemsPerPage + kFixedColumns - 1] :
- [self moveSelectionByDelta:-1];
+ return oldIndex % kFixedColumns == 0
+ ? [self moveSelectionByDelta:-ItemsPerPage() + kFixedColumns - 1]
+ : [self moveSelectionByDelta:-1];
}
if (command == @selector(moveRight:)) {
- return oldIndex % kFixedColumns == kFixedColumns - 1 ?
- [self moveSelectionByDelta:+kItemsPerPage - kFixedColumns + 1] :
- [self moveSelectionByDelta:1];
+ return oldIndex % kFixedColumns == kFixedColumns - 1
+ ? [self moveSelectionByDelta:+ItemsPerPage() - kFixedColumns + 1]
+ : [self moveSelectionByDelta:1];
}
if (command == @selector(moveUp:)) {
- return oldIndex / kFixedColumns % kFixedRows == 0 ?
- NO : [self moveSelectionByDelta:-kFixedColumns];
+ return oldIndex / kFixedColumns % RowCount() == 0
+ ? NO
+ : [self moveSelectionByDelta:-kFixedColumns];
}
if (command == @selector(moveDown:)) {
- return oldIndex / kFixedColumns % kFixedRows == kFixedRows - 1 ?
- NO : [self moveSelectionByDelta:kFixedColumns];
+ return oldIndex / kFixedColumns % RowCount() == RowCount() - 1
+ ? NO
+ : [self moveSelectionByDelta:kFixedColumns];
}
if (command == @selector(pageUp:) ||
command == @selector(scrollPageUp:))
- return [self moveSelectionByDelta:-kItemsPerPage];
+ return [self moveSelectionByDelta:-ItemsPerPage()];
if (command == @selector(pageDown:) ||
command == @selector(scrollPageDown:))
- return [self moveSelectionByDelta:kItemsPerPage];
+ return [self moveSelectionByDelta:ItemsPerPage()];
return NO;
}

Powered by Google App Engine
This is Rietveld 408576698