| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/settings/settings_navigation_controller.h" | 5 #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 // When navigation stack has more than one view controller, | 86 // When navigation stack has more than one view controller, |
| 87 // -popViewControllerAnimated: successfully removes the top view controller. | 87 // -popViewControllerAnimated: successfully removes the top view controller. |
| 88 TEST_F(SettingsNavigationControllerTest, PopController) { | 88 TEST_F(SettingsNavigationControllerTest, PopController) { |
| 89 @autoreleasepool { | 89 @autoreleasepool { |
| 90 SettingsNavigationController* settingsController = | 90 SettingsNavigationController* settingsController = |
| 91 [SettingsNavigationController | 91 [SettingsNavigationController |
| 92 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ | 92 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ |
| 93 .get() | 93 .get() |
| 94 currentBrowserState:chrome_browser_state_ | |
| 95 .get() | |
| 96 delegate:nil]; | 94 delegate:nil]; |
| 97 UIViewController* viewController = | 95 UIViewController* viewController = |
| 98 [[UIViewController alloc] initWithNibName:nil bundle:nil]; | 96 [[UIViewController alloc] initWithNibName:nil bundle:nil]; |
| 99 [settingsController pushViewController:viewController animated:NO]; | 97 [settingsController pushViewController:viewController animated:NO]; |
| 100 EXPECT_EQ(2U, [[settingsController viewControllers] count]); | 98 EXPECT_EQ(2U, [[settingsController viewControllers] count]); |
| 101 | 99 |
| 102 UIViewController* poppedViewController = | 100 UIViewController* poppedViewController = |
| 103 [settingsController popViewControllerAnimated:NO]; | 101 [settingsController popViewControllerAnimated:NO]; |
| 104 EXPECT_NSEQ(viewController, poppedViewController); | 102 EXPECT_NSEQ(viewController, poppedViewController); |
| 105 EXPECT_EQ(1U, [[settingsController viewControllers] count]); | 103 EXPECT_EQ(1U, [[settingsController viewControllers] count]); |
| 106 } | 104 } |
| 107 } | 105 } |
| 108 | 106 |
| 109 // When the navigation stack has only one view controller, | 107 // When the navigation stack has only one view controller, |
| 110 // -popViewControllerAnimated: returns false. | 108 // -popViewControllerAnimated: returns false. |
| 111 TEST_F(SettingsNavigationControllerTest, DontPopRootController) { | 109 TEST_F(SettingsNavigationControllerTest, DontPopRootController) { |
| 112 @autoreleasepool { | 110 @autoreleasepool { |
| 113 SettingsNavigationController* settingsController = | 111 SettingsNavigationController* settingsController = |
| 114 [SettingsNavigationController | 112 [SettingsNavigationController |
| 115 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ | 113 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ |
| 116 .get() | 114 .get() |
| 117 currentBrowserState:chrome_browser_state_ | |
| 118 .get() | |
| 119 delegate:nil]; | 115 delegate:nil]; |
| 120 EXPECT_EQ(1U, [[settingsController viewControllers] count]); | 116 EXPECT_EQ(1U, [[settingsController viewControllers] count]); |
| 121 | 117 |
| 122 EXPECT_FALSE([settingsController popViewControllerAnimated:NO]); | 118 EXPECT_FALSE([settingsController popViewControllerAnimated:NO]); |
| 123 } | 119 } |
| 124 } | 120 } |
| 125 | 121 |
| 126 // When the settings navigation stack has more than one view controller, calling | 122 // When the settings navigation stack has more than one view controller, calling |
| 127 // -popViewControllerOrCloseSettingsAnimated: pops the top view controller to | 123 // -popViewControllerOrCloseSettingsAnimated: pops the top view controller to |
| 128 // reveal the view controller underneath. | 124 // reveal the view controller underneath. |
| 129 TEST_F(SettingsNavigationControllerTest, | 125 TEST_F(SettingsNavigationControllerTest, |
| 130 PopWhenNavigationStackSizeIsGreaterThanOne) { | 126 PopWhenNavigationStackSizeIsGreaterThanOne) { |
| 131 @autoreleasepool { | 127 @autoreleasepool { |
| 132 SettingsNavigationController* settingsController = | 128 SettingsNavigationController* settingsController = |
| 133 [SettingsNavigationController | 129 [SettingsNavigationController |
| 134 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ | 130 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ |
| 135 .get() | 131 .get() |
| 136 currentBrowserState:chrome_browser_state_ | |
| 137 .get() | |
| 138 delegate:mockDelegate_]; | 132 delegate:mockDelegate_]; |
| 139 UIViewController* viewController = | 133 UIViewController* viewController = |
| 140 [[UIViewController alloc] initWithNibName:nil bundle:nil]; | 134 [[UIViewController alloc] initWithNibName:nil bundle:nil]; |
| 141 [settingsController pushViewController:viewController animated:NO]; | 135 [settingsController pushViewController:viewController animated:NO]; |
| 142 EXPECT_EQ(2U, [[settingsController viewControllers] count]); | 136 EXPECT_EQ(2U, [[settingsController viewControllers] count]); |
| 143 [[mockDelegate_ reject] closeSettings]; | 137 [[mockDelegate_ reject] closeSettings]; |
| 144 [settingsController popViewControllerOrCloseSettingsAnimated:NO]; | 138 [settingsController popViewControllerOrCloseSettingsAnimated:NO]; |
| 145 EXPECT_EQ(1U, [[settingsController viewControllers] count]); | 139 EXPECT_EQ(1U, [[settingsController viewControllers] count]); |
| 146 EXPECT_OCMOCK_VERIFY(mockDelegate_); | 140 EXPECT_OCMOCK_VERIFY(mockDelegate_); |
| 147 } | 141 } |
| 148 } | 142 } |
| 149 | 143 |
| 150 // When the settings navigation stack only has one view controller, calling | 144 // When the settings navigation stack only has one view controller, calling |
| 151 // -popViewControllerOrCloseSettingsAnimated: calls -closeSettings on the | 145 // -popViewControllerOrCloseSettingsAnimated: calls -closeSettings on the |
| 152 // delegate. | 146 // delegate. |
| 153 TEST_F(SettingsNavigationControllerTest, | 147 TEST_F(SettingsNavigationControllerTest, |
| 154 CloseSettingsWhenNavigationStackSizeIsOne) { | 148 CloseSettingsWhenNavigationStackSizeIsOne) { |
| 155 @autoreleasepool { | 149 @autoreleasepool { |
| 156 SettingsNavigationController* settingsController = | 150 SettingsNavigationController* settingsController = |
| 157 [SettingsNavigationController | 151 [SettingsNavigationController |
| 158 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ | 152 newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ |
| 159 .get() | 153 .get() |
| 160 currentBrowserState:chrome_browser_state_ | |
| 161 .get() | |
| 162 delegate:mockDelegate_]; | 154 delegate:mockDelegate_]; |
| 163 EXPECT_EQ(1U, [[settingsController viewControllers] count]); | 155 EXPECT_EQ(1U, [[settingsController viewControllers] count]); |
| 164 [[mockDelegate_ expect] closeSettings]; | 156 [[mockDelegate_ expect] closeSettings]; |
| 165 [settingsController popViewControllerOrCloseSettingsAnimated:NO]; | 157 [settingsController popViewControllerOrCloseSettingsAnimated:NO]; |
| 166 EXPECT_OCMOCK_VERIFY(mockDelegate_); | 158 EXPECT_OCMOCK_VERIFY(mockDelegate_); |
| 167 } | 159 } |
| 168 } | 160 } |
| 169 | 161 |
| 170 } // namespace | 162 } // namespace |
| OLD | NEW |