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 |