| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 <objc/runtime.h> | 5 #import <objc/runtime.h> |
| 6 | 6 |
| 7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "base/mac/scoped_nsautorelease_pool.h" | 8 #include "base/mac/scoped_nsautorelease_pool.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 449 |
| 450 TEST_F(TabModelTest, OpenerOfTabEmptyModel) { | 450 TEST_F(TabModelTest, OpenerOfTabEmptyModel) { |
| 451 EXPECT_FALSE([tab_model_ openerOfTab:nil]); | 451 EXPECT_FALSE([tab_model_ openerOfTab:nil]); |
| 452 } | 452 } |
| 453 | 453 |
| 454 TEST_F(TabModelTest, OpenersEmptyModel) { | 454 TEST_F(TabModelTest, OpenersEmptyModel) { |
| 455 // Empty model. | 455 // Empty model. |
| 456 EXPECT_TRUE([tab_model_ isEmpty]); | 456 EXPECT_TRUE([tab_model_ isEmpty]); |
| 457 EXPECT_FALSE([tab_model_ nextTabWithOpener:nil afterTab:nil]); | 457 EXPECT_FALSE([tab_model_ nextTabWithOpener:nil afterTab:nil]); |
| 458 EXPECT_FALSE([tab_model_ lastTabWithOpener:nil]); | 458 EXPECT_FALSE([tab_model_ lastTabWithOpener:nil]); |
| 459 EXPECT_FALSE([tab_model_ firstTabWithOpener:nil]); | |
| 460 } | 459 } |
| 461 | 460 |
| 462 TEST_F(TabModelTest, OpenersNothingOpenedGeneral) { | 461 TEST_F(TabModelTest, OpenersNothingOpenedGeneral) { |
| 463 // Start with a few tabs. | 462 // Start with a few tabs. |
| 464 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 463 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 465 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 464 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 466 | 465 |
| 467 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") | 466 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") |
| 468 atIndex:[tab_model_ count]]; | 467 atIndex:[tab_model_ count]]; |
| 469 | 468 |
| 470 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 469 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 471 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 470 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 472 | 471 |
| 473 // All should fail since this hasn't opened anything else. | 472 // All should fail since this hasn't opened anything else. |
| 474 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); | 473 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); |
| 475 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); | 474 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); |
| 476 EXPECT_FALSE([tab_model_ firstTabWithOpener:tab]); | |
| 477 | 475 |
| 478 // Add more items to the tab, expect the same results. | 476 // Add more items to the tab, expect the same results. |
| 479 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 477 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 480 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 478 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 481 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); | 479 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); |
| 482 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); | 480 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); |
| 483 EXPECT_FALSE([tab_model_ firstTabWithOpener:tab]); | |
| 484 } | 481 } |
| 485 | 482 |
| 486 TEST_F(TabModelTest, OpenersNothingOpenedFirst) { | 483 TEST_F(TabModelTest, OpenersNothingOpenedFirst) { |
| 487 // Our tab is first. | 484 // Our tab is first. |
| 488 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") | 485 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") |
| 489 atIndex:[tab_model_ count]]; | 486 atIndex:[tab_model_ count]]; |
| 490 | 487 |
| 491 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 488 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 492 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 489 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 493 | 490 |
| 494 // All should fail since this hasn't opened anything else. | 491 // All should fail since this hasn't opened anything else. |
| 495 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); | 492 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); |
| 496 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); | 493 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); |
| 497 EXPECT_FALSE([tab_model_ firstTabWithOpener:tab]); | |
| 498 } | 494 } |
| 499 | 495 |
| 500 TEST_F(TabModelTest, OpenersNothingOpenedLast) { | 496 TEST_F(TabModelTest, OpenersNothingOpenedLast) { |
| 501 // Our tab is last. | 497 // Our tab is last. |
| 502 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 498 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 503 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 499 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 504 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") | 500 Tab* tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") |
| 505 atIndex:[tab_model_ count]]; | 501 atIndex:[tab_model_ count]]; |
| 506 | 502 |
| 507 // All should fail since this hasn't opened anything else. | 503 // All should fail since this hasn't opened anything else. |
| 508 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); | 504 EXPECT_FALSE([tab_model_ nextTabWithOpener:tab afterTab:nil]); |
| 509 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); | 505 EXPECT_FALSE([tab_model_ lastTabWithOpener:tab]); |
| 510 EXPECT_FALSE([tab_model_ firstTabWithOpener:tab]); | |
| 511 } | 506 } |
| 512 | 507 |
| 513 TEST_F(TabModelTest, OpenersChildTabBeforeOpener) { | 508 TEST_F(TabModelTest, OpenersChildTabBeforeOpener) { |
| 514 Tab* parent_tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") | 509 Tab* parent_tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") |
| 515 atIndex:[tab_model_ count]]; | 510 atIndex:[tab_model_ count]]; |
| 516 // Insert child at start | 511 // Insert child at start |
| 517 Tab* child_tab = | 512 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) atIndex:0]; |
| 518 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) | |
| 519 atIndex:0]; | |
| 520 | 513 |
| 521 // Insert a few more between them. | 514 // Insert a few more between them. |
| 522 [tab_model_ insertTabWithWebState:CreateWebState(@"window") atIndex:1]; | 515 [tab_model_ insertTabWithWebState:CreateWebState(@"window") atIndex:1]; |
| 523 [tab_model_ insertTabWithWebState:CreateWebState(@"window") atIndex:1]; | 516 [tab_model_ insertTabWithWebState:CreateWebState(@"window") atIndex:1]; |
| 524 | 517 |
| 525 EXPECT_FALSE([tab_model_ nextTabWithOpener:parent_tab afterTab:nil]); | 518 EXPECT_FALSE([tab_model_ nextTabWithOpener:parent_tab afterTab:nil]); |
| 526 EXPECT_FALSE([tab_model_ lastTabWithOpener:parent_tab]); | 519 EXPECT_FALSE([tab_model_ lastTabWithOpener:parent_tab]); |
| 527 EXPECT_EQ([tab_model_ firstTabWithOpener:parent_tab], child_tab); | |
| 528 } | 520 } |
| 529 | 521 |
| 530 TEST_F(TabModelTest, OpenersChildTabAfterOpener) { | 522 TEST_F(TabModelTest, OpenersChildTabAfterOpener) { |
| 531 Tab* parent_tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") | 523 Tab* parent_tab = [tab_model_ insertTabWithWebState:CreateWebState(@"window") |
| 532 atIndex:[tab_model_ count]]; | 524 atIndex:[tab_model_ count]]; |
| 533 | 525 |
| 534 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 526 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 535 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 527 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 536 // Insert two children at end. | 528 // Insert two children at end. |
| 537 Tab* child_tab1 = | 529 Tab* child_tab1 = |
| 538 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) | 530 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) |
| 539 atIndex:[tab_model_ count]]; | 531 atIndex:[tab_model_ count]]; |
| 540 Tab* child_tab2 = | 532 Tab* child_tab2 = |
| 541 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) | 533 [tab_model_ insertTabWithWebState:CreateChildWebState(parent_tab) |
| 542 atIndex:[tab_model_ count]]; | 534 atIndex:[tab_model_ count]]; |
| 543 | 535 |
| 544 EXPECT_EQ([tab_model_ nextTabWithOpener:parent_tab afterTab:nil], child_tab1); | 536 EXPECT_EQ([tab_model_ nextTabWithOpener:parent_tab afterTab:nil], child_tab1); |
| 545 EXPECT_EQ([tab_model_ nextTabWithOpener:parent_tab afterTab:child_tab1], | 537 EXPECT_EQ([tab_model_ nextTabWithOpener:parent_tab afterTab:child_tab1], |
| 546 child_tab2); | 538 child_tab2); |
| 547 EXPECT_EQ([tab_model_ lastTabWithOpener:parent_tab], child_tab2); | 539 EXPECT_EQ([tab_model_ lastTabWithOpener:parent_tab], child_tab2); |
| 548 EXPECT_FALSE([tab_model_ firstTabWithOpener:parent_tab]); | |
| 549 } | 540 } |
| 550 | 541 |
| 551 TEST_F(TabModelTest, AddWithOrderController) { | 542 TEST_F(TabModelTest, AddWithOrderController) { |
| 552 // Create a few tabs with the controller at the front. | 543 // Create a few tabs with the controller at the front. |
| 553 Tab* parent = | 544 Tab* parent = |
| 554 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 545 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 555 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 546 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 556 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; | 547 [tab_model_ addTabWithURL:kURL referrer:kEmptyReferrer windowName:nil]; |
| 557 | 548 |
| 558 // Add a new tab, it should be added behind the parent. | 549 // Add a new tab, it should be added behind the parent. |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 // Restoring TabModel session sends asynchronous tasks to IO thread, wait | 873 // Restoring TabModel session sends asynchronous tasks to IO thread, wait |
| 883 // for them to complete after destroying the TabModel. | 874 // for them to complete after destroying the TabModel. |
| 884 base::RunLoop().RunUntilIdle(); | 875 base::RunLoop().RunUntilIdle(); |
| 885 | 876 |
| 886 // Clean up. | 877 // Clean up. |
| 887 EXPECT_TRUE([[NSFileManager defaultManager] removeItemAtPath:stashPath | 878 EXPECT_TRUE([[NSFileManager defaultManager] removeItemAtPath:stashPath |
| 888 error:nullptr]); | 879 error:nullptr]); |
| 889 } | 880 } |
| 890 | 881 |
| 891 } // anonymous namespace | 882 } // anonymous namespace |
| OLD | NEW |