| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/chrome/browser/ui/ntp/recent_tabs/recent_tabs_panel_view_controller
.h" | 5 #import "ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_panel_view_controller
.h" |
| 6 | 6 |
| 7 #import "base/mac/scoped_nsobject.h" | 7 #include "base/logging.h" |
| 8 #import "ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_panel_controller.h" | 8 #import "ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_panel_controller.h" |
| 9 #import "ios/chrome/browser/ui/ntp/recent_tabs/views/panel_bar_view.h" | 9 #import "ios/chrome/browser/ui/ntp/recent_tabs/views/panel_bar_view.h" |
| 10 #import "ios/chrome/browser/ui/uikit_ui_util.h" | 10 #import "ios/chrome/browser/ui/uikit_ui_util.h" |
| 11 #include "ios/chrome/grit/ios_theme_resources.h" | 11 #include "ios/chrome/grit/ios_theme_resources.h" |
| 12 #include "ui/base/l10n/l10n_util.h" | 12 #include "ui/base/l10n/l10n_util.h" |
| 13 #include "ui/base/l10n/l10n_util_mac.h" | 13 #include "ui/base/l10n/l10n_util_mac.h" |
| 14 | 14 |
| 15 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 16 #error "This file requires ARC support." |
| 17 #endif |
| 18 |
| 15 // A UIViewController that forces the status bar to be visible. | 19 // A UIViewController that forces the status bar to be visible. |
| 16 @interface RecentTabsWrapperViewController : UIViewController | 20 @interface RecentTabsWrapperViewController : UIViewController |
| 17 @end | 21 @end |
| 18 | 22 |
| 19 @implementation RecentTabsWrapperViewController | 23 @implementation RecentTabsWrapperViewController |
| 20 | 24 |
| 21 - (BOOL)prefersStatusBarHidden { | 25 - (BOOL)prefersStatusBarHidden { |
| 22 return NO; | 26 return NO; |
| 23 } | 27 } |
| 24 | 28 |
| 25 @end | 29 @end |
| 26 | 30 |
| 27 @implementation RecentTabsPanelViewController { | 31 @implementation RecentTabsPanelViewController { |
| 28 base::scoped_nsobject<RecentTabsPanelController> _recentTabsController; | 32 RecentTabsPanelController* _recentTabsController; |
| 29 base::scoped_nsobject<PanelBarView> _panelBarView; | 33 PanelBarView* _panelBarView; |
| 30 } | 34 } |
| 31 | 35 |
| 32 + (UIViewController*)controllerToPresentForBrowserState: | 36 + (UIViewController*)controllerToPresentForBrowserState: |
| 33 (ios::ChromeBrowserState*)browserState | 37 (ios::ChromeBrowserState*)browserState |
| 34 loader:(id<UrlLoader>)loader { | 38 loader:(id<UrlLoader>)loader { |
| 35 UIViewController* controller = | 39 UIViewController* controller = [[RecentTabsWrapperViewController alloc] init]; |
| 36 [[[RecentTabsWrapperViewController alloc] init] autorelease]; | 40 RecentTabsPanelViewController* rtpvc = |
| 37 RecentTabsPanelViewController* rtpvc = [[[RecentTabsPanelViewController alloc] | 41 [[RecentTabsPanelViewController alloc] initWithLoader:loader |
| 38 initWithLoader:loader | 42 browserState:browserState]; |
| 39 browserState:browserState] autorelease]; | |
| 40 [controller addChildViewController:rtpvc]; | 43 [controller addChildViewController:rtpvc]; |
| 41 | 44 |
| 42 PanelBarView* panelBarView = [[[PanelBarView alloc] init] autorelease]; | 45 PanelBarView* panelBarView = [[PanelBarView alloc] init]; |
| 43 rtpvc->_panelBarView.reset([panelBarView retain]); | 46 rtpvc->_panelBarView = panelBarView; |
| 44 [panelBarView setCloseTarget:rtpvc action:@selector(didFinish)]; | 47 [panelBarView setCloseTarget:rtpvc action:@selector(didFinish)]; |
| 45 base::scoped_nsobject<UIImageView> shadow( | 48 UIImageView* shadow = |
| 46 [[UIImageView alloc] initWithImage:NativeImage(IDR_IOS_TOOLBAR_SHADOW)]); | 49 [[UIImageView alloc] initWithImage:NativeImage(IDR_IOS_TOOLBAR_SHADOW)]; |
| 47 | 50 |
| 48 [panelBarView setTranslatesAutoresizingMaskIntoConstraints:NO]; | 51 [panelBarView setTranslatesAutoresizingMaskIntoConstraints:NO]; |
| 49 [rtpvc.view setTranslatesAutoresizingMaskIntoConstraints:NO]; | 52 [rtpvc.view setTranslatesAutoresizingMaskIntoConstraints:NO]; |
| 50 [shadow setTranslatesAutoresizingMaskIntoConstraints:NO]; | 53 [shadow setTranslatesAutoresizingMaskIntoConstraints:NO]; |
| 51 | 54 |
| 52 [controller.view addSubview:panelBarView]; | 55 [controller.view addSubview:panelBarView]; |
| 53 [controller.view addSubview:rtpvc.view]; | 56 [controller.view addSubview:rtpvc.view]; |
| 54 [controller.view addSubview:shadow]; | 57 [controller.view addSubview:shadow]; |
| 55 | 58 |
| 56 NSDictionary* viewsDictionary = | 59 NSDictionary* viewsDictionary = |
| 57 @{ @"bar" : panelBarView, | 60 @{ @"bar" : panelBarView, |
| 58 @"table" : rtpvc.view, | 61 @"table" : rtpvc.view, |
| 59 @"shadow" : shadow }; | 62 @"shadow" : shadow }; |
| 60 // clang-format off | 63 // clang-format off |
| 61 NSArray* constraints = @[ | 64 NSArray* constraints = @[ |
| 62 @"V:|-0-[bar]-0-[table]-0-|", | 65 @"V:|-0-[bar]-0-[table]-0-|", |
| 63 @"V:[bar]-0-[shadow]", | 66 @"V:[bar]-0-[shadow]", |
| 64 @"H:|-0-[bar]-0-|", | 67 @"H:|-0-[bar]-0-|", |
| 65 @"H:|-0-[table]-0-|", | 68 @"H:|-0-[table]-0-|", |
| 66 @"H:|-0-[shadow]-0-|" | 69 @"H:|-0-[shadow]-0-|" |
| 67 ]; | 70 ]; |
| 68 // clang-format on | 71 // clang-format on |
| 69 ApplyVisualConstraints(constraints, viewsDictionary, controller.view); | 72 ApplyVisualConstraints(constraints, viewsDictionary, controller.view); |
| 70 return controller; | 73 return controller; |
| 71 } | 74 } |
| 72 | 75 |
| 73 - (void)dealloc { | 76 - (void)dealloc { |
| 74 [_recentTabsController dismissKeyboard]; | 77 [_recentTabsController dismissKeyboard]; |
| 75 [_recentTabsController dismissModals]; | 78 [_recentTabsController dismissModals]; |
| 76 [super dealloc]; | |
| 77 } | 79 } |
| 78 | 80 |
| 79 - (instancetype)initWithLoader:(id<UrlLoader>)loader | 81 - (instancetype)initWithLoader:(id<UrlLoader>)loader |
| 80 browserState:(ios::ChromeBrowserState*)browserState { | 82 browserState:(ios::ChromeBrowserState*)browserState { |
| 81 self = [super initWithNibName:nil bundle:nil]; | 83 self = [super initWithNibName:nil bundle:nil]; |
| 82 if (self) { | 84 if (self) { |
| 83 _recentTabsController.reset([[RecentTabsPanelController alloc] | 85 _recentTabsController = |
| 84 initWithLoader:loader | 86 [[RecentTabsPanelController alloc] initWithLoader:loader |
| 85 browserState:browserState]); | 87 browserState:browserState]; |
| 86 if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) | 88 if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) |
| 87 self.edgesForExtendedLayout = UIRectEdgeNone; | 89 self.edgesForExtendedLayout = UIRectEdgeNone; |
| 88 } | 90 } |
| 89 return self; | 91 return self; |
| 90 } | 92 } |
| 91 | 93 |
| 92 - (instancetype)initWithNibName:(NSString*)nibNameOrNil | 94 - (instancetype)initWithNibName:(NSString*)nibNameOrNil |
| 93 bundle:(NSBundle*)nibBundleOrNil { | 95 bundle:(NSBundle*)nibBundleOrNil { |
| 94 NOTREACHED(); | 96 NOTREACHED(); |
| 95 return nil; | 97 return nil; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 | 129 |
| 128 #pragma mark Actions | 130 #pragma mark Actions |
| 129 | 131 |
| 130 - (void)didFinish { | 132 - (void)didFinish { |
| 131 [self dismissViewControllerAnimated:YES | 133 [self dismissViewControllerAnimated:YES |
| 132 completion:^{ | 134 completion:^{ |
| 133 }]; | 135 }]; |
| 134 } | 136 } |
| 135 | 137 |
| 136 @end | 138 @end |
| OLD | NEW |