| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 #include "base/stringprintf.h" | 5 #include "base/stringprintf.h" |
| 6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
| 7 #include "chrome/browser/sessions/session_service.h" | 7 #include "chrome/browser/sessions/session_service.h" |
| 8 #include "chrome/browser/sessions/session_service_factory.h" | 8 #include "chrome/browser/sessions/session_service_factory.h" |
| 9 #include "chrome/browser/sessions/session_types.h" | 9 #include "chrome/browser/sessions/session_types.h" |
| 10 #include "chrome/browser/sessions/session_types_test_helper.h" | 10 #include "chrome/browser/sessions/session_types_test_helper.h" |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 EXPECT_EQ(tab_timestamp.ToInternalValue(), | 562 EXPECT_EQ(tab_timestamp.ToInternalValue(), |
| 563 restored_tab->timestamp.ToInternalValue()); | 563 restored_tab->timestamp.ToInternalValue()); |
| 564 ASSERT_EQ(old_navigations.size(), restored_tab->navigations.size()); | 564 ASSERT_EQ(old_navigations.size(), restored_tab->navigations.size()); |
| 565 for (size_t i = 0; i < restored_tab->navigations.size(); ++i) { | 565 for (size_t i = 0; i < restored_tab->navigations.size(); ++i) { |
| 566 EXPECT_EQ( | 566 EXPECT_EQ( |
| 567 SessionTypesTestHelper::GetTimestamp(old_navigations[i]), | 567 SessionTypesTestHelper::GetTimestamp(old_navigations[i]), |
| 568 SessionTypesTestHelper::GetTimestamp(restored_tab->navigations[i])); | 568 SessionTypesTestHelper::GetTimestamp(restored_tab->navigations[i])); |
| 569 } | 569 } |
| 570 } | 570 } |
| 571 | 571 |
| 572 // Makes sure we restore status codes correctly. |
| 573 TEST_F(TabRestoreServiceTest, StatusCodesSurviveRestore) { |
| 574 AddThreeNavigations(); |
| 575 |
| 576 // Have the service record the tab. |
| 577 service_->CreateHistoricalTab(contents(), -1); |
| 578 |
| 579 // Make sure an entry was created. |
| 580 ASSERT_EQ(1U, service_->entries().size()); |
| 581 |
| 582 // Make sure the entry matches. |
| 583 std::vector<TabNavigation> old_navigations; |
| 584 { |
| 585 // |entry|/|tab| doesn't survive after RecreateService(). |
| 586 TabRestoreService::Entry* entry = service_->entries().front(); |
| 587 ASSERT_EQ(TabRestoreService::TAB, entry->type); |
| 588 Tab* tab = static_cast<Tab*>(entry); |
| 589 old_navigations = tab->navigations; |
| 590 } |
| 591 |
| 592 EXPECT_EQ(3U, old_navigations.size()); |
| 593 for (size_t i = 0; i < old_navigations.size(); ++i) { |
| 594 EXPECT_EQ(200, |
| 595 SessionTypesTestHelper::GetHttpStatusCode(old_navigations[i])); |
| 596 } |
| 597 |
| 598 // Set this, otherwise previous session won't be loaded. |
| 599 profile()->set_last_session_exited_cleanly(false); |
| 600 |
| 601 RecreateService(); |
| 602 |
| 603 // One entry should be created. |
| 604 ASSERT_EQ(1U, service_->entries().size()); |
| 605 |
| 606 // And verify the entry. |
| 607 TabRestoreService::Entry* restored_entry = service_->entries().front(); |
| 608 ASSERT_EQ(TabRestoreService::TAB, restored_entry->type); |
| 609 Tab* restored_tab = |
| 610 static_cast<Tab*>(restored_entry); |
| 611 ASSERT_EQ(old_navigations.size(), restored_tab->navigations.size()); |
| 612 for (size_t i = 0; i < restored_tab->navigations.size(); ++i) { |
| 613 EXPECT_EQ(200, |
| 614 SessionTypesTestHelper::GetHttpStatusCode( |
| 615 restored_tab->navigations[i])); |
| 616 } |
| 617 } |
| 618 |
| 572 TEST_F(TabRestoreServiceTest, PruneEntries) { | 619 TEST_F(TabRestoreServiceTest, PruneEntries) { |
| 573 service_->ClearEntries(); | 620 service_->ClearEntries(); |
| 574 ASSERT_TRUE(service_->entries().empty()); | 621 ASSERT_TRUE(service_->entries().empty()); |
| 575 | 622 |
| 576 const size_t max_entries = TabRestoreService::kMaxEntries; | 623 const size_t max_entries = TabRestoreService::kMaxEntries; |
| 577 for (size_t i = 0; i < max_entries + 5; i++) { | 624 for (size_t i = 0; i < max_entries + 5; i++) { |
| 578 TabNavigation navigation = | 625 TabNavigation navigation = |
| 579 SessionTypesTestHelper::CreateNavigation( | 626 SessionTypesTestHelper::CreateNavigation( |
| 580 StringPrintf("http://%d", static_cast<int>(i)), | 627 StringPrintf("http://%d", static_cast<int>(i)), |
| 581 StringPrintf("%d", static_cast<int>(i))); | 628 StringPrintf("%d", static_cast<int>(i))); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 for (size_t i = 0; i < max_entries + 5; i++) { | 717 for (size_t i = 0; i < max_entries + 5; i++) { |
| 671 NavigateAndCommit(GURL(StringPrintf("http://%d", static_cast<int>(i)))); | 718 NavigateAndCommit(GURL(StringPrintf("http://%d", static_cast<int>(i)))); |
| 672 service_->CreateHistoricalTab(contents(), -1); | 719 service_->CreateHistoricalTab(contents(), -1); |
| 673 } | 720 } |
| 674 | 721 |
| 675 EXPECT_EQ(max_entries, service_->entries_.size()); | 722 EXPECT_EQ(max_entries, service_->entries_.size()); |
| 676 // This should not crash. | 723 // This should not crash. |
| 677 service_->LoadTabsFromLastSession(); | 724 service_->LoadTabsFromLastSession(); |
| 678 EXPECT_EQ(max_entries, service_->entries_.size()); | 725 EXPECT_EQ(max_entries, service_->entries_.size()); |
| 679 } | 726 } |
| OLD | NEW |