OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/elements/activity_overlay_coordinator.h" | 5 #import "ios/chrome/browser/ui/elements/activity_overlay_coordinator.h" |
6 | 6 |
7 #import "base/mac/objc_property_releaser.h" | |
8 #import "ios/chrome/browser/ui/elements/activity_overlay_view_controller.h" | 7 #import "ios/chrome/browser/ui/elements/activity_overlay_view_controller.h" |
9 #import "ios/chrome/browser/ui/uikit_ui_util.h" | 8 #import "ios/chrome/browser/ui/uikit_ui_util.h" |
10 | 9 |
11 @interface ActivityOverlayCoordinator () { | 10 #if !defined(__has_feature) || !__has_feature(objc_arc) |
12 base::mac::ObjCPropertyReleaser _propertyReleaser_ActivityOverlayCoordinator; | 11 #error "This file requires ARC support." |
13 } | 12 #endif |
14 | 13 |
| 14 @interface ActivityOverlayCoordinator () |
15 // View controller that displays an activity indicator. | 15 // View controller that displays an activity indicator. |
16 @property(nonatomic, retain) UIViewController* activityOverlayViewController; | 16 @property(nonatomic, strong) UIViewController* activityOverlayViewController; |
17 @end | 17 @end |
18 | 18 |
19 @implementation ActivityOverlayCoordinator | 19 @implementation ActivityOverlayCoordinator |
20 | 20 |
21 @synthesize activityOverlayViewController = _activityOverlayViewController; | 21 @synthesize activityOverlayViewController = _activityOverlayViewController; |
22 | 22 |
23 - (nullable instancetype)initWithBaseViewController: | |
24 (UIViewController*)viewController { | |
25 self = [super initWithBaseViewController:viewController]; | |
26 if (self) { | |
27 _propertyReleaser_ActivityOverlayCoordinator.Init( | |
28 self, [ActivityOverlayCoordinator class]); | |
29 } | |
30 return self; | |
31 } | |
32 | |
33 - (void)start { | 23 - (void)start { |
34 if (self.activityOverlayViewController) | 24 if (self.activityOverlayViewController) |
35 return; | 25 return; |
36 self.activityOverlayViewController = | 26 self.activityOverlayViewController = |
37 [[[ActivityOverlayViewController alloc] initWithNibName:nil bundle:nil] | 27 [[ActivityOverlayViewController alloc] initWithNibName:nil bundle:nil]; |
38 autorelease]; | |
39 [self.baseViewController | 28 [self.baseViewController |
40 addChildViewController:self.activityOverlayViewController]; | 29 addChildViewController:self.activityOverlayViewController]; |
41 [self.baseViewController.view | 30 [self.baseViewController.view |
42 addSubview:self.activityOverlayViewController.view]; | 31 addSubview:self.activityOverlayViewController.view]; |
43 [self.activityOverlayViewController | 32 [self.activityOverlayViewController |
44 didMoveToParentViewController:self.baseViewController]; | 33 didMoveToParentViewController:self.baseViewController]; |
45 AddSameConstraints(self.baseViewController.view, | 34 AddSameConstraints(self.baseViewController.view, |
46 self.activityOverlayViewController.view); | 35 self.activityOverlayViewController.view); |
47 } | 36 } |
48 | 37 |
49 - (void)stop { | 38 - (void)stop { |
50 if (!self.activityOverlayViewController) | 39 if (!self.activityOverlayViewController) |
51 return; | 40 return; |
52 [self.activityOverlayViewController willMoveToParentViewController:nil]; | 41 [self.activityOverlayViewController willMoveToParentViewController:nil]; |
53 [self.activityOverlayViewController.view removeFromSuperview]; | 42 [self.activityOverlayViewController.view removeFromSuperview]; |
54 [self.activityOverlayViewController removeFromParentViewController]; | 43 [self.activityOverlayViewController removeFromParentViewController]; |
55 self.activityOverlayViewController = nil; | 44 self.activityOverlayViewController = nil; |
56 } | 45 } |
57 | 46 |
58 @end | 47 @end |
OLD | NEW |