Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Side by Side Diff: ios/shared/chrome/browser/tabs/web_state_list_unittest.mm

Issue 2766413004: [ios] Change API to inform WebStateList of opener-opened relationship. (Closed)
Patch Set: Address comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/shared/chrome/browser/tabs/web_state_list.h" 5 #import "ios/shared/chrome/browser/tabs/web_state_list.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/supports_user_data.h" 9 #include "base/supports_user_data.h"
10 #import "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h" 10 #import "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h"
11 #import "ios/shared/chrome/browser/tabs/web_state_list_observer.h" 11 #import "ios/shared/chrome/browser/tabs/web_state_list_observer.h"
12 #import "ios/shared/chrome/browser/tabs/web_state_opener.h"
12 #import "ios/web/public/test/fakes/test_navigation_manager.h" 13 #import "ios/web/public/test/fakes/test_navigation_manager.h"
13 #import "ios/web/public/test/fakes/test_web_state.h" 14 #import "ios/web/public/test/fakes/test_web_state.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "testing/platform_test.h" 16 #include "testing/platform_test.h"
16 17
17 #if !defined(__has_feature) || !__has_feature(objc_arc) 18 #if !defined(__has_feature) || !__has_feature(objc_arc)
18 #error "This file requires ARC support." 19 #error "This file requires ARC support."
19 #endif 20 #endif
20 21
21 namespace { 22 namespace {
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 } 168 }
168 169
169 private: 170 private:
170 DISALLOW_COPY_AND_ASSIGN(WebStateListTest); 171 DISALLOW_COPY_AND_ASSIGN(WebStateListTest);
171 }; 172 };
172 173
173 TEST_F(WebStateListTest, IsEmpty) { 174 TEST_F(WebStateListTest, IsEmpty) {
174 EXPECT_EQ(0, web_state_list_.count()); 175 EXPECT_EQ(0, web_state_list_.count());
175 EXPECT_TRUE(web_state_list_.empty()); 176 EXPECT_TRUE(web_state_list_.empty());
176 177
177 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 178 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
178 179
179 EXPECT_TRUE(observer_.web_state_inserted_called()); 180 EXPECT_TRUE(observer_.web_state_inserted_called());
180 EXPECT_EQ(1, web_state_list_.count()); 181 EXPECT_EQ(1, web_state_list_.count());
181 EXPECT_FALSE(web_state_list_.empty()); 182 EXPECT_FALSE(web_state_list_.empty());
182 } 183 }
183 184
184 TEST_F(WebStateListTest, InsertUrlSingle) { 185 TEST_F(WebStateListTest, InsertUrlSingle) {
185 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 186 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
186 187
187 EXPECT_TRUE(observer_.web_state_inserted_called()); 188 EXPECT_TRUE(observer_.web_state_inserted_called());
188 EXPECT_EQ(1, web_state_list_.count()); 189 EXPECT_EQ(1, web_state_list_.count());
189 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 190 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
190 } 191 }
191 192
192 TEST_F(WebStateListTest, InsertUrlMultiple) { 193 TEST_F(WebStateListTest, InsertUrlMultiple) {
193 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 194 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
194 web_state_list_.InsertWebState(0, CreateWebState(kURL1), nullptr); 195 web_state_list_.InsertWebState(0, CreateWebState(kURL1));
195 web_state_list_.InsertWebState(1, CreateWebState(kURL2), nullptr); 196 web_state_list_.InsertWebState(1, CreateWebState(kURL2));
196 197
197 EXPECT_TRUE(observer_.web_state_inserted_called()); 198 EXPECT_TRUE(observer_.web_state_inserted_called());
198 EXPECT_EQ(3, web_state_list_.count()); 199 EXPECT_EQ(3, web_state_list_.count());
199 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 200 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
200 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 201 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
201 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 202 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
202 } 203 }
203 204
204 TEST_F(WebStateListTest, MoveWebStateAtRightByOne) { 205 TEST_F(WebStateListTest, MoveWebStateAtRightByOne) {
205 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 206 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
206 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 207 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
207 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 208 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
208 209
209 // Sanity check before closing WebState. 210 // Sanity check before closing WebState.
210 EXPECT_EQ(3, web_state_list_.count()); 211 EXPECT_EQ(3, web_state_list_.count());
211 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 212 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
212 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 213 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
213 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 214 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
214 215
215 observer_.ResetStatistics(); 216 observer_.ResetStatistics();
216 web_state_list_.MoveWebStateAt(0, 1); 217 web_state_list_.MoveWebStateAt(0, 1);
217 218
218 EXPECT_TRUE(observer_.web_state_moved_called()); 219 EXPECT_TRUE(observer_.web_state_moved_called());
219 EXPECT_EQ(3, web_state_list_.count()); 220 EXPECT_EQ(3, web_state_list_.count());
220 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 221 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
221 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 222 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
222 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 223 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
223 } 224 }
224 225
225 TEST_F(WebStateListTest, MoveWebStateAtRightByMoreThanOne) { 226 TEST_F(WebStateListTest, MoveWebStateAtRightByMoreThanOne) {
226 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 227 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
227 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 228 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
228 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 229 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
229 230
230 // Sanity check before closing WebState. 231 // Sanity check before closing WebState.
231 EXPECT_EQ(3, web_state_list_.count()); 232 EXPECT_EQ(3, web_state_list_.count());
232 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 233 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
233 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 234 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
234 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 235 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
235 236
236 observer_.ResetStatistics(); 237 observer_.ResetStatistics();
237 web_state_list_.MoveWebStateAt(0, 2); 238 web_state_list_.MoveWebStateAt(0, 2);
238 239
239 EXPECT_TRUE(observer_.web_state_moved_called()); 240 EXPECT_TRUE(observer_.web_state_moved_called());
240 EXPECT_EQ(3, web_state_list_.count()); 241 EXPECT_EQ(3, web_state_list_.count());
241 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 242 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
242 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 243 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
243 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 244 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
244 } 245 }
245 246
246 TEST_F(WebStateListTest, MoveWebStateAtLeftByOne) { 247 TEST_F(WebStateListTest, MoveWebStateAtLeftByOne) {
247 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 248 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
248 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 249 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
249 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 250 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
250 251
251 // Sanity check before closing WebState. 252 // Sanity check before closing WebState.
252 EXPECT_EQ(3, web_state_list_.count()); 253 EXPECT_EQ(3, web_state_list_.count());
253 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 254 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
254 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 255 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
255 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 256 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
256 257
257 observer_.ResetStatistics(); 258 observer_.ResetStatistics();
258 web_state_list_.MoveWebStateAt(2, 1); 259 web_state_list_.MoveWebStateAt(2, 1);
259 260
260 EXPECT_TRUE(observer_.web_state_moved_called()); 261 EXPECT_TRUE(observer_.web_state_moved_called());
261 EXPECT_EQ(3, web_state_list_.count()); 262 EXPECT_EQ(3, web_state_list_.count());
262 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 263 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
263 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 264 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
264 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 265 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
265 } 266 }
266 267
267 TEST_F(WebStateListTest, MoveWebStateAtLeftByMoreThanOne) { 268 TEST_F(WebStateListTest, MoveWebStateAtLeftByMoreThanOne) {
268 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 269 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
269 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 270 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
270 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 271 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
271 272
272 // Sanity check before closing WebState. 273 // Sanity check before closing WebState.
273 EXPECT_EQ(3, web_state_list_.count()); 274 EXPECT_EQ(3, web_state_list_.count());
274 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 275 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
275 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 276 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
276 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 277 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
277 278
278 observer_.ResetStatistics(); 279 observer_.ResetStatistics();
279 web_state_list_.MoveWebStateAt(2, 0); 280 web_state_list_.MoveWebStateAt(2, 0);
280 281
281 EXPECT_TRUE(observer_.web_state_moved_called()); 282 EXPECT_TRUE(observer_.web_state_moved_called());
282 EXPECT_EQ(3, web_state_list_.count()); 283 EXPECT_EQ(3, web_state_list_.count());
283 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 284 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
284 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 285 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
285 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 286 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
286 } 287 }
287 288
288 TEST_F(WebStateListTest, MoveWebStateAtSameIndex) { 289 TEST_F(WebStateListTest, MoveWebStateAtSameIndex) {
289 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 290 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
290 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 291 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
291 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 292 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
292 293
293 // Sanity check before closing WebState. 294 // Sanity check before closing WebState.
294 EXPECT_EQ(3, web_state_list_.count()); 295 EXPECT_EQ(3, web_state_list_.count());
295 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 296 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
296 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 297 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
297 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 298 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
298 299
299 observer_.ResetStatistics(); 300 observer_.ResetStatistics();
300 web_state_list_.MoveWebStateAt(2, 2); 301 web_state_list_.MoveWebStateAt(2, 2);
301 302
302 EXPECT_FALSE(observer_.web_state_moved_called()); 303 EXPECT_FALSE(observer_.web_state_moved_called());
303 EXPECT_EQ(3, web_state_list_.count()); 304 EXPECT_EQ(3, web_state_list_.count());
304 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 305 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
305 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 306 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
306 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 307 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
307 } 308 }
308 309
309 TEST_F(WebStateListTest, ReplaceWebStateAt) { 310 TEST_F(WebStateListTest, ReplaceWebStateAt) {
310 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 311 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
311 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 312 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
312 313
313 // Sanity check before replacing WebState. 314 // Sanity check before replacing WebState.
314 EXPECT_EQ(2, web_state_list_.count()); 315 EXPECT_EQ(2, web_state_list_.count());
315 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 316 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
316 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 317 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
317 318
318 observer_.ResetStatistics(); 319 observer_.ResetStatistics();
319 std::unique_ptr<web::WebState> old_web_state( 320 std::unique_ptr<web::WebState> old_web_state(
320 web_state_list_.ReplaceWebStateAt(1, CreateWebState(kURL2), nullptr)); 321 web_state_list_.ReplaceWebStateAt(1, CreateWebState(kURL2)));
321 322
322 EXPECT_TRUE(observer_.web_state_replaced_called()); 323 EXPECT_TRUE(observer_.web_state_replaced_called());
323 EXPECT_EQ(2, web_state_list_.count()); 324 EXPECT_EQ(2, web_state_list_.count());
324 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 325 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
325 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 326 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
326 EXPECT_EQ(kURL1, old_web_state->GetVisibleURL().spec()); 327 EXPECT_EQ(kURL1, old_web_state->GetVisibleURL().spec());
327 } 328 }
328 329
329 TEST_F(WebStateListTest, DetachWebStateAtIndexBegining) { 330 TEST_F(WebStateListTest, DetachWebStateAtIndexBegining) {
330 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 331 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
331 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 332 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
332 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 333 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
333 334
334 // Sanity check before closing WebState. 335 // Sanity check before closing WebState.
335 EXPECT_EQ(3, web_state_list_.count()); 336 EXPECT_EQ(3, web_state_list_.count());
336 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 337 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
337 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 338 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
338 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 339 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
339 340
340 observer_.ResetStatistics(); 341 observer_.ResetStatistics();
341 std::unique_ptr<web::WebState> old_web_state( 342 std::unique_ptr<web::WebState> old_web_state(
342 web_state_list_.DetachWebStateAt(0)); 343 web_state_list_.DetachWebStateAt(0));
343 344
344 EXPECT_TRUE(observer_.web_state_detached_called()); 345 EXPECT_TRUE(observer_.web_state_detached_called());
345 EXPECT_EQ(2, web_state_list_.count()); 346 EXPECT_EQ(2, web_state_list_.count());
346 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 347 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
347 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 348 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
348 } 349 }
349 350
350 TEST_F(WebStateListTest, DetachWebStateAtIndexMiddle) { 351 TEST_F(WebStateListTest, DetachWebStateAtIndexMiddle) {
351 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 352 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
352 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 353 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
353 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 354 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
354 355
355 // Sanity check before closing WebState. 356 // Sanity check before closing WebState.
356 EXPECT_EQ(3, web_state_list_.count()); 357 EXPECT_EQ(3, web_state_list_.count());
357 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 358 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
358 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 359 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
359 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 360 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
360 361
361 observer_.ResetStatistics(); 362 observer_.ResetStatistics();
362 std::unique_ptr<web::WebState> old_web_state( 363 std::unique_ptr<web::WebState> old_web_state(
363 web_state_list_.DetachWebStateAt(1)); 364 web_state_list_.DetachWebStateAt(1));
364 365
365 EXPECT_TRUE(observer_.web_state_detached_called()); 366 EXPECT_TRUE(observer_.web_state_detached_called());
366 EXPECT_EQ(2, web_state_list_.count()); 367 EXPECT_EQ(2, web_state_list_.count());
367 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 368 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
368 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 369 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
369 } 370 }
370 371
371 TEST_F(WebStateListTest, DetachWebStateAtIndexLast) { 372 TEST_F(WebStateListTest, DetachWebStateAtIndexLast) {
372 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 373 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
373 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 374 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
374 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 375 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
375 376
376 // Sanity check before closing WebState. 377 // Sanity check before closing WebState.
377 EXPECT_EQ(3, web_state_list_.count()); 378 EXPECT_EQ(3, web_state_list_.count());
378 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 379 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
379 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 380 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
380 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec()); 381 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
381 382
382 observer_.ResetStatistics(); 383 observer_.ResetStatistics();
383 std::unique_ptr<web::WebState> old_web_state( 384 std::unique_ptr<web::WebState> old_web_state(
384 web_state_list_.DetachWebStateAt(2)); 385 web_state_list_.DetachWebStateAt(2));
385 386
386 EXPECT_TRUE(observer_.web_state_detached_called()); 387 EXPECT_TRUE(observer_.web_state_detached_called());
387 EXPECT_EQ(2, web_state_list_.count()); 388 EXPECT_EQ(2, web_state_list_.count());
388 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec()); 389 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
389 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec()); 390 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
390 } 391 }
391 392
392 TEST_F(WebStateListTest, OwnershipBorrowed) { 393 TEST_F(WebStateListTest, OwnershipBorrowed) {
393 bool web_state_was_killed = false; 394 bool web_state_was_killed = false;
394 auto test_web_state = base::MakeUnique<web::TestWebState>(); 395 auto test_web_state = base::MakeUnique<web::TestWebState>();
395 test_web_state->SetUserData( 396 test_web_state->SetUserData(
396 &kSupportsUserDataDeathGuardKey, 397 &kSupportsUserDataDeathGuardKey,
397 base::MakeUnique<SupportsUserDataDeathGuard>(&web_state_was_killed)); 398 base::MakeUnique<SupportsUserDataDeathGuard>(&web_state_was_killed));
398 399
399 FakeWebStateListDelegate web_state_list_delegate; 400 FakeWebStateListDelegate web_state_list_delegate;
400 auto web_state_list = base::MakeUnique<WebStateList>( 401 auto web_state_list = base::MakeUnique<WebStateList>(
401 &web_state_list_delegate, WebStateList::WebStateBorrowed); 402 &web_state_list_delegate, WebStateList::WebStateBorrowed);
402 web_state_list->InsertWebState(0, test_web_state.get(), nullptr); 403 web_state_list->InsertWebState(0, test_web_state.get());
403 EXPECT_FALSE(web_state_was_killed); 404 EXPECT_FALSE(web_state_was_killed);
404 405
405 web_state_list.reset(); 406 web_state_list.reset();
406 EXPECT_FALSE(web_state_was_killed); 407 EXPECT_FALSE(web_state_was_killed);
407 } 408 }
408 409
409 TEST_F(WebStateListTest, OwnershipOwned) { 410 TEST_F(WebStateListTest, OwnershipOwned) {
410 bool web_state_was_killed = false; 411 bool web_state_was_killed = false;
411 auto test_web_state = base::MakeUnique<web::TestWebState>(); 412 auto test_web_state = base::MakeUnique<web::TestWebState>();
412 test_web_state->SetUserData( 413 test_web_state->SetUserData(
413 &kSupportsUserDataDeathGuardKey, 414 &kSupportsUserDataDeathGuardKey,
414 base::MakeUnique<SupportsUserDataDeathGuard>(&web_state_was_killed)); 415 base::MakeUnique<SupportsUserDataDeathGuard>(&web_state_was_killed));
415 416
416 FakeWebStateListDelegate web_state_list_delegate; 417 FakeWebStateListDelegate web_state_list_delegate;
417 auto web_state_list = base::MakeUnique<WebStateList>( 418 auto web_state_list = base::MakeUnique<WebStateList>(
418 &web_state_list_delegate, WebStateList::WebStateOwned); 419 &web_state_list_delegate, WebStateList::WebStateOwned);
419 web_state_list->InsertWebState(0, test_web_state.release(), nullptr); 420 web_state_list->InsertWebState(0, test_web_state.release());
420 EXPECT_FALSE(web_state_was_killed); 421 EXPECT_FALSE(web_state_was_killed);
421 422
422 web_state_list.reset(); 423 web_state_list.reset();
423 EXPECT_TRUE(web_state_was_killed); 424 EXPECT_TRUE(web_state_was_killed);
424 } 425 }
425 426
426 TEST_F(WebStateListTest, OpenersEmptyList) { 427 TEST_F(WebStateListTest, OpenersEmptyList) {
427 EXPECT_TRUE(web_state_list_.empty()); 428 EXPECT_TRUE(web_state_list_.empty());
428 429
429 EXPECT_EQ(WebStateList::kInvalidIndex, 430 EXPECT_EQ(WebStateList::kInvalidIndex,
430 web_state_list_.GetIndexOfNextWebStateOpenedBy( 431 web_state_list_.GetIndexOfNextWebStateOpenedBy(
431 nullptr, WebStateList::kInvalidIndex, false)); 432 nullptr, WebStateList::kInvalidIndex, false));
432 EXPECT_EQ(WebStateList::kInvalidIndex, 433 EXPECT_EQ(WebStateList::kInvalidIndex,
433 web_state_list_.GetIndexOfLastWebStateOpenedBy( 434 web_state_list_.GetIndexOfLastWebStateOpenedBy(
434 nullptr, WebStateList::kInvalidIndex, false)); 435 nullptr, WebStateList::kInvalidIndex, false));
435 436
436 EXPECT_EQ(WebStateList::kInvalidIndex, 437 EXPECT_EQ(WebStateList::kInvalidIndex,
437 web_state_list_.GetIndexOfNextWebStateOpenedBy( 438 web_state_list_.GetIndexOfNextWebStateOpenedBy(
438 nullptr, WebStateList::kInvalidIndex, true)); 439 nullptr, WebStateList::kInvalidIndex, true));
439 EXPECT_EQ(WebStateList::kInvalidIndex, 440 EXPECT_EQ(WebStateList::kInvalidIndex,
440 web_state_list_.GetIndexOfLastWebStateOpenedBy( 441 web_state_list_.GetIndexOfLastWebStateOpenedBy(
441 nullptr, WebStateList::kInvalidIndex, true)); 442 nullptr, WebStateList::kInvalidIndex, true));
442 } 443 }
443 444
444 TEST_F(WebStateListTest, OpenersNothingOpened) { 445 TEST_F(WebStateListTest, OpenersNothingOpened) {
445 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 446 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
446 web_state_list_.InsertWebState(1, CreateWebState(kURL1), nullptr); 447 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
447 web_state_list_.InsertWebState(2, CreateWebState(kURL2), nullptr); 448 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
448 449
449 for (int index = 0; index < web_state_list_.count(); ++index) { 450 for (int index = 0; index < web_state_list_.count(); ++index) {
450 web::WebState* opener = web_state_list_.GetWebStateAt(index); 451 web::WebState* opener = web_state_list_.GetWebStateAt(index);
451 EXPECT_EQ( 452 EXPECT_EQ(
452 WebStateList::kInvalidIndex, 453 WebStateList::kInvalidIndex,
453 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, false)); 454 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, false));
454 EXPECT_EQ( 455 EXPECT_EQ(
455 WebStateList::kInvalidIndex, 456 WebStateList::kInvalidIndex,
456 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, false)); 457 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, false));
457 458
458 EXPECT_EQ( 459 EXPECT_EQ(
459 WebStateList::kInvalidIndex, 460 WebStateList::kInvalidIndex,
460 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, true)); 461 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, true));
461 EXPECT_EQ( 462 EXPECT_EQ(
462 WebStateList::kInvalidIndex, 463 WebStateList::kInvalidIndex,
463 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, true)); 464 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, true));
464 } 465 }
465 } 466 }
466 467
467 TEST_F(WebStateListTest, OpenersChildsAfterOpener) { 468 TEST_F(WebStateListTest, OpenersChildsAfterOpener) {
468 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 469 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
469 web::WebState* opener = web_state_list_.GetWebStateAt(0); 470 web::WebState* opener = web_state_list_.GetWebStateAt(0);
470 471
471 web_state_list_.InsertWebState(1, CreateWebState(kURL1), opener); 472 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
472 web_state_list_.InsertWebState(2, CreateWebState(kURL2), opener); 473 web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
474
475 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
476 web_state_list_.SetOpenerOfWebStateAt(2, WebStateOpener(opener));
473 477
474 const int start_index = web_state_list_.GetIndexOfWebState(opener); 478 const int start_index = web_state_list_.GetIndexOfWebState(opener);
475 EXPECT_EQ(1, 479 EXPECT_EQ(1,
476 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 480 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
477 false)); 481 false));
478 EXPECT_EQ(2, 482 EXPECT_EQ(2,
479 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 483 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
480 false)); 484 false));
481 485
482 EXPECT_EQ(1, 486 EXPECT_EQ(1,
(...skipping 17 matching lines...) Expand all
500 EXPECT_EQ(WebStateList::kInvalidIndex, 504 EXPECT_EQ(WebStateList::kInvalidIndex,
501 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 505 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
502 true)); 506 true));
503 EXPECT_EQ(WebStateList::kInvalidIndex, 507 EXPECT_EQ(WebStateList::kInvalidIndex,
504 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 508 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
505 true)); 509 true));
506 510
507 // Add a new WebState with the same opener. It should be considered the next 511 // Add a new WebState with the same opener. It should be considered the next
508 // WebState if groups are considered and the last independently on whether 512 // WebState if groups are considered and the last independently on whether
509 // groups are used or not. 513 // groups are used or not.
510 web_state_list_.InsertWebState(3, CreateWebState(kURL2), opener); 514 web_state_list_.InsertWebState(3, CreateWebState(kURL2));
515 web_state_list_.SetOpenerOfWebStateAt(3, WebStateOpener(opener));
511 516
512 EXPECT_EQ(1, 517 EXPECT_EQ(1,
513 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 518 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
514 false)); 519 false));
515 EXPECT_EQ(3, 520 EXPECT_EQ(3,
516 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 521 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
517 false)); 522 false));
518 523
519 EXPECT_EQ(3, 524 EXPECT_EQ(3,
520 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 525 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
521 true)); 526 true));
522 EXPECT_EQ(3, 527 EXPECT_EQ(3,
523 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 528 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
524 true)); 529 true));
525 } 530 }
526 531
527 TEST_F(WebStateListTest, OpenersChildsBeforeOpener) { 532 TEST_F(WebStateListTest, OpenersChildsBeforeOpener) {
528 web_state_list_.InsertWebState(0, CreateWebState(kURL0), nullptr); 533 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
529 web::WebState* opener = web_state_list_.GetWebStateAt(0); 534 web::WebState* opener = web_state_list_.GetWebStateAt(0);
530 535
531 web_state_list_.InsertWebState(0, CreateWebState(kURL1), opener); 536 web_state_list_.InsertWebState(0, CreateWebState(kURL1));
532 web_state_list_.InsertWebState(1, CreateWebState(kURL2), opener); 537 web_state_list_.SetOpenerOfWebStateAt(0, WebStateOpener(opener));
538
539 web_state_list_.InsertWebState(1, CreateWebState(kURL2));
540 web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
533 541
534 const int start_index = web_state_list_.GetIndexOfWebState(opener); 542 const int start_index = web_state_list_.GetIndexOfWebState(opener);
535 EXPECT_EQ(WebStateList::kInvalidIndex, 543 EXPECT_EQ(WebStateList::kInvalidIndex,
536 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 544 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
537 false)); 545 false));
538 EXPECT_EQ(WebStateList::kInvalidIndex, 546 EXPECT_EQ(WebStateList::kInvalidIndex,
539 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 547 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
540 false)); 548 false));
541 549
542 EXPECT_EQ(WebStateList::kInvalidIndex, 550 EXPECT_EQ(WebStateList::kInvalidIndex,
543 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index, 551 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
544 true)); 552 true));
545 EXPECT_EQ(WebStateList::kInvalidIndex, 553 EXPECT_EQ(WebStateList::kInvalidIndex,
546 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index, 554 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
547 true)); 555 true));
548 } 556 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698