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

Unified Diff: ios/chrome/browser/ui/history/tab_history_popup_controller.mm

Issue 2706403009: Revert of Updated tab history classes to use NavigationItemLists. (Closed)
Patch Set: Created 3 years, 10 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: ios/chrome/browser/ui/history/tab_history_popup_controller.mm
diff --git a/ios/chrome/browser/ui/history/tab_history_popup_controller.mm b/ios/chrome/browser/ui/history/tab_history_popup_controller.mm
index 5c6c1245fd216fbdc3c5739f0f059bd111684ab9..832de03afada7c2b7e8a4fcdb927d90f924e01d3 100644
--- a/ios/chrome/browser/ui/history/tab_history_popup_controller.mm
+++ b/ios/chrome/browser/ui/history/tab_history_popup_controller.mm
@@ -15,22 +15,20 @@
#include "ios/chrome/browser/ui/ui_util.h"
#import "ios/chrome/common/material_timing.h"
#import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoFontLoader.h"
+#import "ios/web/navigation/crw_session_entry.h"
#include "ios/web/public/navigation_item.h"
#import "ui/gfx/ios/NSString+CrStringDrawing.h"
#include "ui/gfx/ios/uikit_util.h"
-#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace {
-const CGFloat kTabHistoryMinWidth = 250.0;
-const CGFloat kTabHistoryMaxWidthLandscapePhone = 350.0;
+static const CGFloat kTabHistoryMinWidth = 250.0;
+static const CGFloat kTabHistoryMaxWidthLandscapePhone = 350.0;
// x coordinate for the textLabel in a default table cell with an image.
-const CGFloat kCellTextXCoordinate = 60.0;
-// The corner radius for the popover container view.
-const CGFloat kPopoverCornerRadius = 2.0;
+static const CGFloat kCellTextXCoordinate = 60.0;
// Inset for the shadows of the contained views.
NS_INLINE UIEdgeInsets TabHistoryPopupMenuInsets() {
return UIEdgeInsetsMakeDirected(9, 11, 12, 11);
@@ -43,90 +41,91 @@
static const CGFloat kHeightPercentage = 0.85;
} // anonymous namespace
-@interface TabHistoryPopupController ()
+@interface TabHistoryPopupController () {
+ // TableViewController for the table displaying tab history entries.
+ TabHistoryViewController* tabHistoryTableViewController_;
-// The UITableViewController displaying Tab history items.
+ // Container view of the history entries table.
+ UIView* tabHistoryTableViewContainer_;
+}
+
+// Determines the width for the popup depending on the device, orientation, and
+// CRWSessionEntrys to display.
+- (CGFloat)calculatePopupWidth:(NSArray*)entries;
+
@property(nonatomic, strong)
TabHistoryViewController* tabHistoryTableViewController;
-// The container view that displays |tabHistoryTableViewController|.
@property(nonatomic, strong) UIView* tabHistoryTableViewContainer;
-
-// Determines the width for the popup depending on the device, orientation, and
-// number of NavigationItems to display.
-+ (CGFloat)popupWidthForItems:(const web::NavigationItemList)items;
@end
@implementation TabHistoryPopupController
-@synthesize tabHistoryTableViewController = _tabHistoryTableViewController;
-@synthesize tabHistoryTableViewContainer = _tabHistoryTableViewContainer;
+@synthesize tabHistoryTableViewController = tabHistoryTableViewController_;
+@synthesize tabHistoryTableViewContainer = tabHistoryTableViewContainer_;
- (id)initWithOrigin:(CGPoint)origin
parentView:(UIView*)parent
- items:(const web::NavigationItemList&)items {
+ entries:(NSArray*)entries {
DCHECK(parent);
- if ((self = [super initWithParentView:parent])) {
- // Create the table view controller.
- _tabHistoryTableViewController =
- [[TabHistoryViewController alloc] initWithItems:items];
+ self = [super initWithParentView:parent];
+ if (self) {
+ tabHistoryTableViewController_ = [[TabHistoryViewController alloc] init];
+ [tabHistoryTableViewController_ setSessionEntries:entries];
- // Set up the container view.
- _tabHistoryTableViewContainer = [[UIView alloc] initWithFrame:CGRectZero];
- _tabHistoryTableViewContainer.layer.cornerRadius = kPopoverCornerRadius;
- _tabHistoryTableViewContainer.layer.masksToBounds = YES;
- [_tabHistoryTableViewContainer
- addSubview:_tabHistoryTableViewController.view];
+ UICollectionView* collectionView =
+ [tabHistoryTableViewController_ collectionView];
+ [collectionView setAccessibilityIdentifier:@"Tab History"];
- // Calculate the optimal popup size.
+ tabHistoryTableViewContainer_ = [[UIView alloc] initWithFrame:CGRectZero];
+ [tabHistoryTableViewContainer_ layer].cornerRadius = 2;
+ [tabHistoryTableViewContainer_ layer].masksToBounds = YES;
+ [tabHistoryTableViewContainer_ addSubview:collectionView];
+
LayoutOffset originOffset =
kHistoryPopupLeadingOffset - TabHistoryPopupMenuInsets().left;
CGPoint newOrigin = CGPointLayoutOffset(origin, originOffset);
newOrigin.y += kHistoryPopupYOffset;
+
CGFloat availableHeight =
(CGRectGetHeight([parent bounds]) - origin.y) * kHeightPercentage;
CGFloat optimalHeight =
- [_tabHistoryTableViewController optimalHeight:availableHeight];
- CGFloat popupWidth = [[self class] popupWidthForItems:items];
+ [tabHistoryTableViewController_ optimalHeight:availableHeight];
+ CGFloat popupWidth = [self calculatePopupWidth:entries];
[self setOptimalSize:CGSizeMake(popupWidth, optimalHeight)
atOrigin:newOrigin];
+
+ CGRect bounds = [[self popupContainer] bounds];
+ CGRect frame = UIEdgeInsetsInsetRect(bounds, TabHistoryPopupMenuInsets());
+
+ [tabHistoryTableViewContainer_ setFrame:frame];
+ [collectionView setFrame:[tabHistoryTableViewContainer_ bounds]];
+
+ [[self popupContainer] addSubview:tabHistoryTableViewContainer_];
+ CGRect containerFrame = [[self popupContainer] frame];
+ CGPoint destination = CGPointMake(CGRectGetLeadingEdge(containerFrame),
+ CGRectGetMinY(containerFrame));
+ [self fadeInPopupFromSource:origin toDestination:destination];
}
return self;
}
-- (void)dealloc {
- [_tabHistoryTableViewContainer removeFromSuperview];
-}
-
-#pragma mark - PopupMenuController
-
- (void)fadeInPopupFromSource:(CGPoint)source
toDestination:(CGPoint)destination {
- // Add the container view to the popup view and resize.
- if (!_tabHistoryTableViewContainer.superview)
- [self.popupContainer addSubview:_tabHistoryTableViewContainer];
- _tabHistoryTableViewContainer.frame = UIEdgeInsetsInsetRect(
- self.popupContainer.bounds, TabHistoryPopupMenuInsets());
- _tabHistoryTableViewController.view.frame =
- _tabHistoryTableViewContainer.bounds;
-
- // Set up the animation.
- [_tabHistoryTableViewContainer setAlpha:0];
+ [tabHistoryTableViewContainer_ setAlpha:0];
[UIView animateWithDuration:ios::material::kDuration1
animations:^{
- [_tabHistoryTableViewContainer setAlpha:1];
+ [tabHistoryTableViewContainer_ setAlpha:1];
}];
[super fadeInPopupFromSource:source toDestination:destination];
}
- (void)dismissAnimatedWithCompletion:(void (^)(void))completion {
- [_tabHistoryTableViewContainer setAlpha:0];
+ [tabHistoryTableViewContainer_ setAlpha:0];
[super dismissAnimatedWithCompletion:completion];
}
-#pragma mark -
-
-+ (CGFloat)popupWidthForItems:(const web::NavigationItemList)items {
+- (CGFloat)calculatePopupWidth:(NSArray*)entries {
CGFloat maxWidth;
// Determine the maximum width for the device and orientation.
@@ -146,7 +145,8 @@
// Increase the width to fit the text to display but don't exceed maxWidth.
CGFloat cellWidth = kTabHistoryMinWidth;
UIFont* font = [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16];
- for (web::NavigationItem* item : items) {
+ for (CRWSessionEntry* sessionEntry in entries) {
+ web::NavigationItem* item = sessionEntry.navigationItem;
// TODO(rohitrao): Can this be replaced with GetTitleForDisplay()?
NSString* cellText = item->GetTitle().empty()
? base::SysUTF8ToNSString(item->GetURL().spec())
@@ -155,7 +155,7 @@
kCellTextXCoordinate;
// If contentWidth is larger than maxWidth, return maxWidth instead of
- // checking the rest of the items.
+ // checking the rest of the entries.
if (contentWidth > maxWidth)
return maxWidth;
if (contentWidth > cellWidth)
@@ -164,4 +164,8 @@
return cellWidth;
}
+- (void)dealloc {
+ [tabHistoryTableViewContainer_ removeFromSuperview];
+}
+
@end

Powered by Google App Engine
This is Rietveld 408576698