OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/tabs/tab_strip_model.h" | 5 #include "chrome/browser/tabs/tab_strip_model.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 #include "content/public/browser/navigation_entry.h" | 34 #include "content/public/browser/navigation_entry.h" |
35 #include "content/public/browser/notification_details.h" | 35 #include "content/public/browser/notification_details.h" |
36 #include "content/public/browser/notification_registrar.h" | 36 #include "content/public/browser/notification_registrar.h" |
37 #include "content/public/browser/notification_source.h" | 37 #include "content/public/browser/notification_source.h" |
38 #include "content/public/browser/notification_types.h" | 38 #include "content/public/browser/notification_types.h" |
39 #include "content/test/notification_observer_mock.h" | 39 #include "content/test/notification_observer_mock.h" |
40 #include "content/test/test_browser_thread.h" | 40 #include "content/test/test_browser_thread.h" |
41 #include "testing/gtest/include/gtest/gtest.h" | 41 #include "testing/gtest/include/gtest/gtest.h" |
42 | 42 |
43 using content::BrowserThread; | 43 using content::BrowserThread; |
| 44 using content::NavigationController; |
44 using content::WebContents; | 45 using content::WebContents; |
45 using testing::_; | 46 using testing::_; |
46 | 47 |
47 namespace { | 48 namespace { |
48 | 49 |
49 // Class used to delete a TabContents when another TabContents is destroyed. | 50 // Class used to delete a TabContents when another TabContents is destroyed. |
50 class DeleteTabContentsOnDestroyedObserver | 51 class DeleteTabContentsOnDestroyedObserver |
51 : public content::NotificationObserver { | 52 : public content::NotificationObserver { |
52 public: | 53 public: |
53 DeleteTabContentsOnDestroyedObserver(TabContentsWrapper* source, | 54 DeleteTabContentsOnDestroyedObserver(TabContentsWrapper* source, |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 TEST_F(TabStripModelTest, TestBasicOpenerAPI) { | 634 TEST_F(TabStripModelTest, TestBasicOpenerAPI) { |
634 TabStripDummyDelegate delegate(NULL); | 635 TabStripDummyDelegate delegate(NULL); |
635 TabStripModel tabstrip(&delegate, profile()); | 636 TabStripModel tabstrip(&delegate, profile()); |
636 EXPECT_TRUE(tabstrip.empty()); | 637 EXPECT_TRUE(tabstrip.empty()); |
637 | 638 |
638 // This is a basic test of opener functionality. opener_contents is created | 639 // This is a basic test of opener functionality. opener_contents is created |
639 // as the first tab in the strip and then we create 5 other tabs in the | 640 // as the first tab in the strip and then we create 5 other tabs in the |
640 // background with opener_contents set as their opener. | 641 // background with opener_contents set as their opener. |
641 | 642 |
642 TabContentsWrapper* opener_contents = CreateTabContents(); | 643 TabContentsWrapper* opener_contents = CreateTabContents(); |
643 content::NavigationController* opener = | 644 NavigationController* opener = |
644 &opener_contents->tab_contents()->GetController(); | 645 &opener_contents->tab_contents()->GetController(); |
645 tabstrip.AppendTabContents(opener_contents, true); | 646 tabstrip.AppendTabContents(opener_contents, true); |
646 TabContentsWrapper* contents1 = CreateTabContents(); | 647 TabContentsWrapper* contents1 = CreateTabContents(); |
647 TabContentsWrapper* contents2 = CreateTabContents(); | 648 TabContentsWrapper* contents2 = CreateTabContents(); |
648 TabContentsWrapper* contents3 = CreateTabContents(); | 649 TabContentsWrapper* contents3 = CreateTabContents(); |
649 TabContentsWrapper* contents4 = CreateTabContents(); | 650 TabContentsWrapper* contents4 = CreateTabContents(); |
650 TabContentsWrapper* contents5 = CreateTabContents(); | 651 TabContentsWrapper* contents5 = CreateTabContents(); |
651 | 652 |
652 // We use |InsertTabContentsAt| here instead of AppendTabContents so that | 653 // We use |InsertTabContentsAt| here instead of AppendTabContents so that |
653 // openership relationships are preserved. | 654 // openership relationships are preserved. |
(...skipping 18 matching lines...) Expand all Loading... |
672 // group should be selected. | 673 // group should be selected. |
673 EXPECT_EQ(4, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 5, false)); | 674 EXPECT_EQ(4, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 5, false)); |
674 | 675 |
675 // Tests the method that finds the last tab opened by the same opener in the | 676 // Tests the method that finds the last tab opened by the same opener in the |
676 // strip (this is the insertion index for the next background tab for the | 677 // strip (this is the insertion index for the next background tab for the |
677 // specified opener). | 678 // specified opener). |
678 EXPECT_EQ(5, tabstrip.GetIndexOfLastTabContentsOpenedBy(opener, 1)); | 679 EXPECT_EQ(5, tabstrip.GetIndexOfLastTabContentsOpenedBy(opener, 1)); |
679 | 680 |
680 // For a tab that has opened no other tabs, the return value should always be | 681 // For a tab that has opened no other tabs, the return value should always be |
681 // -1... | 682 // -1... |
682 content::NavigationController* o1 = | 683 NavigationController* o1 = &contents1->tab_contents()->GetController(); |
683 &contents1->tab_contents()->GetController(); | |
684 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(o1, 3, false)); | 684 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(o1, 3, false)); |
685 EXPECT_EQ(-1, tabstrip.GetIndexOfLastTabContentsOpenedBy(o1, 3)); | 685 EXPECT_EQ(-1, tabstrip.GetIndexOfLastTabContentsOpenedBy(o1, 3)); |
686 | 686 |
687 // ForgetAllOpeners should destroy all opener relationships. | 687 // ForgetAllOpeners should destroy all opener relationships. |
688 tabstrip.ForgetAllOpeners(); | 688 tabstrip.ForgetAllOpeners(); |
689 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 1, false)); | 689 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 1, false)); |
690 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 5, false)); | 690 EXPECT_EQ(-1, tabstrip.GetIndexOfNextTabContentsOpenedBy(opener, 5, false)); |
691 EXPECT_EQ(-1, tabstrip.GetIndexOfLastTabContentsOpenedBy(opener, 1)); | 691 EXPECT_EQ(-1, tabstrip.GetIndexOfLastTabContentsOpenedBy(opener, 1)); |
692 | 692 |
693 tabstrip.CloseAllTabs(); | 693 tabstrip.CloseAllTabs(); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 // a new tab from the first tab in the foreground via a link click, verifies | 786 // a new tab from the first tab in the foreground via a link click, verifies |
787 // that this tab is opened adjacent to the opener, then closes it. | 787 // that this tab is opened adjacent to the opener, then closes it. |
788 // Finally it tests that a tab opened for some non-link purpose openes at the | 788 // Finally it tests that a tab opened for some non-link purpose openes at the |
789 // end of the strip, not bundled to any existing context. | 789 // end of the strip, not bundled to any existing context. |
790 TEST_F(TabStripModelTest, TestInsertionIndexDetermination) { | 790 TEST_F(TabStripModelTest, TestInsertionIndexDetermination) { |
791 TabStripDummyDelegate delegate(NULL); | 791 TabStripDummyDelegate delegate(NULL); |
792 TabStripModel tabstrip(&delegate, profile()); | 792 TabStripModel tabstrip(&delegate, profile()); |
793 EXPECT_TRUE(tabstrip.empty()); | 793 EXPECT_TRUE(tabstrip.empty()); |
794 | 794 |
795 TabContentsWrapper* opener_contents = CreateTabContents(); | 795 TabContentsWrapper* opener_contents = CreateTabContents(); |
796 content::NavigationController* opener = | 796 NavigationController* opener = |
797 &opener_contents->tab_contents()->GetController(); | 797 &opener_contents->tab_contents()->GetController(); |
798 tabstrip.AppendTabContents(opener_contents, true); | 798 tabstrip.AppendTabContents(opener_contents, true); |
799 | 799 |
800 // Open some other random unrelated tab in the background to monkey with our | 800 // Open some other random unrelated tab in the background to monkey with our |
801 // insertion index. | 801 // insertion index. |
802 TabContentsWrapper* other_contents = CreateTabContents(); | 802 TabContentsWrapper* other_contents = CreateTabContents(); |
803 tabstrip.AppendTabContents(other_contents, false); | 803 tabstrip.AppendTabContents(other_contents, false); |
804 | 804 |
805 TabContentsWrapper* contents1 = CreateTabContents(); | 805 TabContentsWrapper* contents1 = CreateTabContents(); |
806 TabContentsWrapper* contents2 = CreateTabContents(); | 806 TabContentsWrapper* contents2 = CreateTabContents(); |
(...skipping 1574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2381 ASSERT_EQ(1, observer.GetStateCount()); | 2381 ASSERT_EQ(1, observer.GetStateCount()); |
2382 MockTabStripModelObserver::State s( | 2382 MockTabStripModelObserver::State s( |
2383 contents2, 1, MockTabStripModelObserver::SELECT); | 2383 contents2, 1, MockTabStripModelObserver::SELECT); |
2384 s.src_contents = contents2; | 2384 s.src_contents = contents2; |
2385 s.src_index = 1; | 2385 s.src_index = 1; |
2386 s.user_gesture = false; | 2386 s.user_gesture = false; |
2387 EXPECT_TRUE(observer.StateEquals(0, s)); | 2387 EXPECT_TRUE(observer.StateEquals(0, s)); |
2388 strip.RemoveObserver(&observer); | 2388 strip.RemoveObserver(&observer); |
2389 strip.CloseAllTabs(); | 2389 strip.CloseAllTabs(); |
2390 } | 2390 } |
OLD | NEW |