| 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/web/web_state/ui/crw_wk_navigation_states.h" | 5 #import "ios/web/web_state/ui/crw_wk_navigation_states.h" |
| 6 | 6 |
| 7 #import <WebKit/WebKit.h> | 7 #import <WebKit/WebKit.h> |
| 8 | 8 |
| 9 #import "ios/web/web_state/navigation_context_impl.h" | 9 #import "ios/web/web_state/navigation_context_impl.h" |
| 10 #include "net/http/http_response_headers.h" | 10 #include "net/http/http_response_headers.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 WKNavigation* navigation1_; | 36 WKNavigation* navigation1_; |
| 37 WKNavigation* navigation2_; | 37 WKNavigation* navigation2_; |
| 38 WKNavigation* navigation3_; | 38 WKNavigation* navigation3_; |
| 39 CRWWKNavigationStates* states_; | 39 CRWWKNavigationStates* states_; |
| 40 }; | 40 }; |
| 41 | 41 |
| 42 // Tests |removeNavigation:| method. | 42 // Tests |removeNavigation:| method. |
| 43 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) { | 43 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) { |
| 44 // navigation_1 is the only navigation and it is the latest. | 44 // navigation_1 is the only navigation and it is the latest. |
| 45 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; | 45 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; |
| 46 ASSERT_EQ(WKNavigationState::REQUESTED, |
| 47 [states_ stateForNavigation:navigation1_]); |
| 46 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); | 48 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); |
| 47 [states_ removeNavigation:navigation1_]; | 49 [states_ removeNavigation:navigation1_]; |
| 48 ASSERT_FALSE([states_ lastAddedNavigation]); | 50 EXPECT_FALSE([states_ lastAddedNavigation]); |
| 51 EXPECT_EQ(WKNavigationState::NONE, [states_ stateForNavigation:navigation1_]); |
| 49 } | 52 } |
| 50 | 53 |
| 51 // Tests |lastAddedNavigation| method. | 54 // Tests |lastAddedNavigation| method. |
| 52 TEST_F(CRWWKNavigationStatesTest, LastAddedNavigation) { | 55 TEST_F(CRWWKNavigationStatesTest, LastAddedNavigation) { |
| 53 // navigation_1 is the only navigation and it is the latest. | 56 // navigation_1 is the only navigation and it is the latest. |
| 54 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; | 57 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; |
| 58 EXPECT_EQ(WKNavigationState::REQUESTED, |
| 59 [states_ stateForNavigation:navigation1_]); |
| 55 EXPECT_EQ(navigation1_, [states_ lastAddedNavigation]); | 60 EXPECT_EQ(navigation1_, [states_ lastAddedNavigation]); |
| 56 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); | 61 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); |
| 57 | 62 |
| 58 // navigation_2 is added later and hence the latest. | 63 // navigation_2 is added later and hence the latest. |
| 59 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation2_]; | 64 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation2_]; |
| 65 EXPECT_EQ(WKNavigationState::REQUESTED, |
| 66 [states_ stateForNavigation:navigation2_]); |
| 60 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); | 67 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); |
| 61 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); | 68 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); |
| 62 | 69 |
| 63 // Updating state for existing navigation does not make it the latest. | 70 // Updating state for existing navigation does not make it the latest. |
| 64 [states_ setState:WKNavigationState::STARTED forNavigation:navigation1_]; | 71 [states_ setState:WKNavigationState::STARTED forNavigation:navigation1_]; |
| 72 EXPECT_EQ(WKNavigationState::STARTED, |
| 73 [states_ stateForNavigation:navigation1_]); |
| 65 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); | 74 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); |
| 66 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); | 75 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); |
| 67 | 76 |
| 68 // navigation_2 is still the latest. | 77 // navigation_2 is still the latest. |
| 69 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_]; | 78 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_]; |
| 79 EXPECT_EQ(WKNavigationState::STARTED, |
| 80 [states_ stateForNavigation:navigation2_]); |
| 70 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); | 81 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); |
| 71 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]); | 82 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]); |
| 72 | 83 |
| 73 // navigation_3 is added later and hence the latest. | 84 // navigation_3 is added later and hence the latest. |
| 74 std::unique_ptr<web::NavigationContextImpl> context = | 85 std::unique_ptr<web::NavigationContextImpl> context = |
| 75 NavigationContextImpl::CreateNavigationContext( | 86 NavigationContextImpl::CreateNavigationContext( |
| 76 nullptr /*web_state*/, GURL(kTestUrl1), | 87 nullptr /*web_state*/, GURL(kTestUrl1), |
| 77 ui::PageTransition::PAGE_TRANSITION_SERVER_REDIRECT); | 88 ui::PageTransition::PAGE_TRANSITION_SERVER_REDIRECT); |
| 78 [states_ setContext:std::move(context) forNavigation:navigation3_]; | 89 [states_ setContext:std::move(context) forNavigation:navigation3_]; |
| 79 EXPECT_EQ(navigation3_, [states_ lastAddedNavigation]); | 90 EXPECT_EQ(navigation3_, [states_ lastAddedNavigation]); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 EXPECT_EQ(GURL(kTestUrl2), | 126 EXPECT_EQ(GURL(kTestUrl2), |
| 116 [states_ contextForNavigation:navigation1_]->GetUrl()); | 127 [states_ contextForNavigation:navigation1_]->GetUrl()); |
| 117 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument()); | 128 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument()); |
| 118 EXPECT_EQ(error, [states_ contextForNavigation:navigation1_]->GetError()); | 129 EXPECT_EQ(error, [states_ contextForNavigation:navigation1_]->GetError()); |
| 119 } | 130 } |
| 120 | 131 |
| 121 // Tests null WKNavigation object. | 132 // Tests null WKNavigation object. |
| 122 TEST_F(CRWWKNavigationStatesTest, NullNavigation) { | 133 TEST_F(CRWWKNavigationStatesTest, NullNavigation) { |
| 123 // navigation_1 is the only navigation and it is the latest. | 134 // navigation_1 is the only navigation and it is the latest. |
| 124 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; | 135 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; |
| 136 EXPECT_EQ(WKNavigationState::REQUESTED, |
| 137 [states_ stateForNavigation:navigation1_]); |
| 125 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); | 138 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); |
| 126 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); | 139 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); |
| 127 | 140 |
| 128 // null navigation is added later and hence the latest. | 141 // null navigation is added later and hence the latest. |
| 129 [states_ setState:WKNavigationState::STARTED forNavigation:nil]; | 142 [states_ setState:WKNavigationState::STARTED forNavigation:nil]; |
| 143 EXPECT_EQ(WKNavigationState::STARTED, [states_ stateForNavigation:nil]); |
| 130 EXPECT_FALSE([states_ lastAddedNavigation]); | 144 EXPECT_FALSE([states_ lastAddedNavigation]); |
| 131 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]); | 145 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]); |
| 132 | 146 |
| 133 // navigation_1 is the latest again after removing null navigation. | 147 // navigation_1 is the latest again after removing null navigation. |
| 134 [states_ removeNavigation:nil]; | 148 [states_ removeNavigation:nil]; |
| 135 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); | 149 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); |
| 136 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); | 150 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); |
| 137 } | 151 } |
| 138 | 152 |
| 139 // Tests -[CRWWKNavigationStates pendingNavigations]. | 153 // Tests -[CRWWKNavigationStates pendingNavigations]. |
| 140 TEST_F(CRWWKNavigationStatesTest, PendingNavigations) { | 154 TEST_F(CRWWKNavigationStatesTest, PendingNavigations) { |
| 141 ASSERT_EQ(0U, [states_ pendingNavigations].count); | 155 ASSERT_EQ(0U, [states_ pendingNavigations].count); |
| 142 | 156 |
| 143 // Add pending navigation_1. | 157 // Add pending navigation_1. |
| 144 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; | 158 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; |
| 159 ASSERT_EQ(WKNavigationState::REQUESTED, |
| 160 [states_ stateForNavigation:navigation1_]); |
| 145 ASSERT_EQ(1U, [states_ pendingNavigations].count); | 161 ASSERT_EQ(1U, [states_ pendingNavigations].count); |
| 146 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); | 162 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); |
| 147 | 163 |
| 148 // Add pending navigation_2. | 164 // Add pending navigation_2. |
| 149 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_]; | 165 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_]; |
| 166 ASSERT_EQ(WKNavigationState::STARTED, |
| 167 [states_ stateForNavigation:navigation2_]); |
| 150 ASSERT_EQ(2U, [states_ pendingNavigations].count); | 168 ASSERT_EQ(2U, [states_ pendingNavigations].count); |
| 151 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); | 169 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); |
| 152 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 170 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 153 | 171 |
| 154 // Add pending navigation_3. | 172 // Add pending navigation_3. |
| 155 [states_ setState:WKNavigationState::STARTED forNavigation:navigation3_]; | 173 [states_ setState:WKNavigationState::STARTED forNavigation:navigation3_]; |
| 174 ASSERT_EQ(WKNavigationState::STARTED, |
| 175 [states_ stateForNavigation:navigation3_]); |
| 156 ASSERT_EQ(3U, [states_ pendingNavigations].count); | 176 ASSERT_EQ(3U, [states_ pendingNavigations].count); |
| 157 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); | 177 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); |
| 158 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 178 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 159 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 179 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 160 | 180 |
| 161 // Add pending null navigation. | 181 // Add pending null navigation. |
| 162 [states_ setState:WKNavigationState::STARTED forNavigation:nil]; | 182 [states_ setState:WKNavigationState::STARTED forNavigation:nil]; |
| 183 ASSERT_EQ(WKNavigationState::STARTED, [states_ stateForNavigation:nil]); |
| 163 ASSERT_EQ(4U, [states_ pendingNavigations].count); | 184 ASSERT_EQ(4U, [states_ pendingNavigations].count); |
| 164 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); | 185 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation1_]); |
| 165 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 186 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 166 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 187 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 167 EXPECT_TRUE([[states_ pendingNavigations] containsObject:[NSNull null]]); | 188 EXPECT_TRUE([[states_ pendingNavigations] containsObject:[NSNull null]]); |
| 168 | 189 |
| 169 // Provisionally fail null navigation. | 190 // Provisionally fail null navigation. |
| 170 [states_ setState:WKNavigationState::PROVISIONALY_FAILED forNavigation:nil]; | 191 [states_ setState:WKNavigationState::PROVISIONALY_FAILED forNavigation:nil]; |
| 192 ASSERT_EQ(WKNavigationState::PROVISIONALY_FAILED, |
| 193 [states_ stateForNavigation:nil]); |
| 171 ASSERT_EQ(3U, [states_ pendingNavigations].count); | 194 ASSERT_EQ(3U, [states_ pendingNavigations].count); |
| 172 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 195 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 173 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 196 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 174 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 197 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 175 | 198 |
| 176 // Commit navigation_1. | 199 // Commit navigation_1. |
| 177 [states_ setState:WKNavigationState::COMMITTED forNavigation:navigation1_]; | 200 [states_ setState:WKNavigationState::COMMITTED forNavigation:navigation1_]; |
| 201 ASSERT_EQ(WKNavigationState::COMMITTED, |
| 202 [states_ stateForNavigation:navigation1_]); |
| 178 ASSERT_EQ(2U, [states_ pendingNavigations].count); | 203 ASSERT_EQ(2U, [states_ pendingNavigations].count); |
| 179 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 204 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 180 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 205 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 181 | 206 |
| 182 // Finish navigation_1. | 207 // Finish navigation_1. |
| 183 [states_ setState:WKNavigationState::FINISHED forNavigation:navigation1_]; | 208 [states_ setState:WKNavigationState::FINISHED forNavigation:navigation1_]; |
| 209 ASSERT_EQ(WKNavigationState::FINISHED, |
| 210 [states_ stateForNavigation:navigation1_]); |
| 184 ASSERT_EQ(2U, [states_ pendingNavigations].count); | 211 ASSERT_EQ(2U, [states_ pendingNavigations].count); |
| 185 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); | 212 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation2_]); |
| 186 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 213 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 187 | 214 |
| 188 // Remove navigation_2. | 215 // Remove navigation_2. |
| 189 [states_ removeNavigation:navigation2_]; | 216 [states_ removeNavigation:navigation2_]; |
| 190 ASSERT_EQ(1U, [states_ pendingNavigations].count); | 217 ASSERT_EQ(1U, [states_ pendingNavigations].count); |
| 191 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 218 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
| 192 | 219 |
| 193 // Fail navigation_3. | 220 // Fail navigation_3. |
| 194 [states_ setState:WKNavigationState::FAILED forNavigation:navigation3_]; | 221 [states_ setState:WKNavigationState::FAILED forNavigation:navigation3_]; |
| 222 ASSERT_EQ(WKNavigationState::FAILED, |
| 223 [states_ stateForNavigation:navigation3_]); |
| 195 ASSERT_EQ(0U, [states_ pendingNavigations].count); | 224 ASSERT_EQ(0U, [states_ pendingNavigations].count); |
| 196 } | 225 } |
| 197 | 226 |
| 198 } // namespace web | 227 } // namespace web |
| OLD | NEW |