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 |