| 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/printing/print_preview_tab_controller.h" | 5 #include "chrome/browser/printing/print_preview_tab_controller.h" |
| 6 #include "chrome/browser/tabs/tab_strip_model.h" | 6 #include "chrome/browser/tabs/tab_strip_model.h" |
| 7 #include "chrome/browser/ui/browser_list.h" | 7 #include "chrome/browser/ui/browser_list.h" |
| 8 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 8 #include "chrome/browser/ui/webui/print_preview_ui.h" | 9 #include "chrome/browser/ui/webui/print_preview_ui.h" |
| 9 #include "chrome/test/base/browser_with_test_window_test.h" | 10 #include "chrome/test/base/browser_with_test_window_test.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 11 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/browser/tab_contents/navigation_entry.h" | 12 #include "content/browser/tab_contents/navigation_entry.h" |
| 12 #include "content/browser/tab_contents/navigation_details.h" | 13 #include "content/browser/tab_contents/navigation_details.h" |
| 13 #include "content/browser/tab_contents/tab_contents.h" | 14 #include "content/browser/tab_contents/tab_contents.h" |
| 14 #include "content/common/notification_service.h" | 15 #include "content/common/notification_service.h" |
| 15 #include "content/common/url_constants.h" | 16 #include "content/common/url_constants.h" |
| 16 | 17 |
| 17 typedef BrowserWithTestWindowTest PrintPreviewTabControllerUnitTest; | 18 typedef BrowserWithTestWindowTest PrintPreviewTabControllerUnitTest; |
| 18 | 19 |
| 19 // Create/Get a preview tab for initiator tab. | 20 // Create/Get a preview tab for initiator tab. |
| 20 TEST_F(PrintPreviewTabControllerUnitTest, GetOrCreatePreviewTab) { | 21 TEST_F(PrintPreviewTabControllerUnitTest, GetOrCreatePreviewTab) { |
| 21 ASSERT_TRUE(browser()); | 22 ASSERT_TRUE(browser()); |
| 22 BrowserList::SetLastActive(browser()); | 23 BrowserList::SetLastActive(browser()); |
| 23 ASSERT_TRUE(BrowserList::GetLastActive()); | 24 ASSERT_TRUE(BrowserList::GetLastActive()); |
| 24 | 25 |
| 25 // Lets start with one window with one tab. | 26 // Lets start with one window with one tab. |
| 26 EXPECT_EQ(1u, BrowserList::size()); | 27 EXPECT_EQ(1u, BrowserList::size()); |
| 27 EXPECT_EQ(0, browser()->tab_count()); | 28 EXPECT_EQ(0, browser()->tab_count()); |
| 28 browser()->NewTab(); | 29 browser()->NewTab(); |
| 29 EXPECT_EQ(1, browser()->tab_count()); | 30 EXPECT_EQ(1, browser()->tab_count()); |
| 30 | 31 |
| 31 // Create a reference to initiator tab contents. | 32 // Create a reference to initiator tab contents. |
| 32 TabContents* initiator_tab = browser()->GetSelectedTabContents(); | 33 TabContentsWrapper* initiator_tab = |
| 34 browser()->GetSelectedTabContentsWrapper(); |
| 33 | 35 |
| 34 scoped_refptr<printing::PrintPreviewTabController> | 36 scoped_refptr<printing::PrintPreviewTabController> |
| 35 tab_controller(new printing::PrintPreviewTabController()); | 37 tab_controller(new printing::PrintPreviewTabController()); |
| 36 ASSERT_TRUE(tab_controller); | 38 ASSERT_TRUE(tab_controller); |
| 37 | 39 |
| 38 // Get the preview tab for initiator tab. | 40 // Get the preview tab for initiator tab. |
| 39 TabContents* preview_tab = | 41 TabContentsWrapper* preview_tab = |
| 40 tab_controller->GetOrCreatePreviewTab(initiator_tab); | 42 tab_controller->GetOrCreatePreviewTab(initiator_tab); |
| 41 | 43 |
| 42 // New print preview tab is created. Current focus is on preview tab. | 44 // New print preview tab is created. Current focus is on preview tab. |
| 43 EXPECT_EQ(2, browser()->tab_count()); | 45 EXPECT_EQ(2, browser()->tab_count()); |
| 44 EXPECT_NE(initiator_tab, preview_tab); | 46 EXPECT_NE(initiator_tab, preview_tab); |
| 45 | 47 |
| 46 // Get the print preview tab for initiator tab. | 48 // Get the print preview tab for initiator tab. |
| 47 TabContents* new_preview_tab = | 49 TabContentsWrapper* new_preview_tab = |
| 48 tab_controller->GetOrCreatePreviewTab(initiator_tab); | 50 tab_controller->GetOrCreatePreviewTab(initiator_tab); |
| 49 | 51 |
| 50 // Preview tab already exists. Tab count remains the same. | 52 // Preview tab already exists. Tab count remains the same. |
| 51 EXPECT_EQ(2, browser()->tab_count()); | 53 EXPECT_EQ(2, browser()->tab_count()); |
| 52 | 54 |
| 53 // 1:1 relationship between initiator and preview tab. | 55 // 1:1 relationship between initiator and preview tab. |
| 54 EXPECT_EQ(new_preview_tab, preview_tab); | 56 EXPECT_EQ(new_preview_tab, preview_tab); |
| 55 } | 57 } |
| 56 | 58 |
| 57 // Test to verify the initiator tab title is stored in |PrintPreviewUI| after | 59 // Test to verify the initiator tab title is stored in |PrintPreviewUI| after |
| 58 // preview tab reload. | 60 // preview tab reload. |
| 59 TEST_F(PrintPreviewTabControllerUnitTest, TitleAfterReload) { | 61 TEST_F(PrintPreviewTabControllerUnitTest, TitleAfterReload) { |
| 60 ASSERT_TRUE(browser()); | 62 ASSERT_TRUE(browser()); |
| 61 BrowserList::SetLastActive(browser()); | 63 BrowserList::SetLastActive(browser()); |
| 62 ASSERT_TRUE(BrowserList::GetLastActive()); | 64 ASSERT_TRUE(BrowserList::GetLastActive()); |
| 63 | 65 |
| 64 // Lets start with one window with one tab. | 66 // Lets start with one window with one tab. |
| 65 EXPECT_EQ(1u, BrowserList::size()); | 67 EXPECT_EQ(1u, BrowserList::size()); |
| 66 EXPECT_EQ(0, browser()->tab_count()); | 68 EXPECT_EQ(0, browser()->tab_count()); |
| 67 browser()->NewTab(); | 69 browser()->NewTab(); |
| 68 EXPECT_EQ(1, browser()->tab_count()); | 70 EXPECT_EQ(1, browser()->tab_count()); |
| 69 | 71 |
| 70 // Create a reference to initiator tab contents. | 72 // Create a reference to initiator tab contents. |
| 71 TabContents* initiator_tab = browser()->GetSelectedTabContents(); | 73 TabContentsWrapper* initiator_tab = |
| 74 browser()->GetSelectedTabContentsWrapper(); |
| 72 | 75 |
| 73 scoped_refptr<printing::PrintPreviewTabController> | 76 scoped_refptr<printing::PrintPreviewTabController> |
| 74 tab_controller(new printing::PrintPreviewTabController()); | 77 tab_controller(new printing::PrintPreviewTabController()); |
| 75 ASSERT_TRUE(tab_controller); | 78 ASSERT_TRUE(tab_controller); |
| 76 | 79 |
| 77 // Get the preview tab for initiator tab. | 80 // Get the preview tab for initiator tab. |
| 78 TabContents* preview_tab = | 81 TabContentsWrapper* preview_tab = |
| 79 tab_controller->GetOrCreatePreviewTab(initiator_tab); | 82 tab_controller->GetOrCreatePreviewTab(initiator_tab); |
| 80 | 83 |
| 81 // New print preview tab is created. Current focus is on preview tab. | 84 // New print preview tab is created. Current focus is on preview tab. |
| 82 EXPECT_EQ(2, browser()->tab_count()); | 85 EXPECT_EQ(2, browser()->tab_count()); |
| 83 EXPECT_NE(initiator_tab, preview_tab); | 86 EXPECT_NE(initiator_tab, preview_tab); |
| 84 | 87 |
| 85 // Set up a PrintPreviewUI for |preview_tab|. | 88 // Set up a PrintPreviewUI for |preview_tab|. |
| 86 PrintPreviewUI* preview_ui = new PrintPreviewUI(preview_tab); | 89 PrintPreviewUI* preview_ui = new PrintPreviewUI(preview_tab->tab_contents()); |
| 87 // RenderViewHostManager takes ownership of |preview_ui|. | 90 // RenderViewHostManager takes ownership of |preview_ui|. |
| 88 preview_tab->render_manager()->SetWebUIPostCommit(preview_ui); | 91 preview_tab->tab_contents()->render_manager()->SetWebUIPostCommit(preview_ui); |
| 89 | 92 |
| 90 // Simulate a reload event on |preview_tab|. | 93 // Simulate a reload event on |preview_tab|. |
| 91 scoped_ptr<NavigationEntry> entry; | 94 scoped_ptr<NavigationEntry> entry; |
| 92 entry.reset(new NavigationEntry()); | 95 entry.reset(new NavigationEntry()); |
| 93 entry->set_transition_type(PageTransition::RELOAD); | 96 entry->set_transition_type(PageTransition::RELOAD); |
| 94 content::LoadCommittedDetails details; | 97 content::LoadCommittedDetails details; |
| 95 details.type = NavigationType::SAME_PAGE; | 98 details.type = NavigationType::SAME_PAGE; |
| 96 details.entry = entry.get(); | 99 details.entry = entry.get(); |
| 97 NotificationService::current()->Notify( | 100 NotificationService::current()->Notify( |
| 98 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 101 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 99 Source<NavigationController>(&preview_tab->controller()), | 102 Source<NavigationController>(&preview_tab->controller()), |
| 100 Details<content::LoadCommittedDetails>(&details)); | 103 Details<content::LoadCommittedDetails>(&details)); |
| 101 EXPECT_EQ(initiator_tab->GetTitle(), preview_ui->initiator_tab_title_); | 104 EXPECT_EQ(initiator_tab->tab_contents()->GetTitle(), |
| 105 preview_ui->initiator_tab_title_); |
| 102 } | 106 } |
| 103 | 107 |
| 104 // To show multiple print preview tabs exist in the same browser for | 108 // To show multiple print preview tabs exist in the same browser for |
| 105 // different initiator tabs. If preview tab already exists for an initiator, it | 109 // different initiator tabs. If preview tab already exists for an initiator, it |
| 106 // gets focused. | 110 // gets focused. |
| 107 TEST_F(PrintPreviewTabControllerUnitTest, MultiplePreviewTabs) { | 111 TEST_F(PrintPreviewTabControllerUnitTest, MultiplePreviewTabs) { |
| 108 ASSERT_TRUE(browser()); | 112 ASSERT_TRUE(browser()); |
| 109 BrowserList::SetLastActive(browser()); | 113 BrowserList::SetLastActive(browser()); |
| 110 ASSERT_TRUE(BrowserList::GetLastActive()); | 114 ASSERT_TRUE(BrowserList::GetLastActive()); |
| 111 | 115 |
| 112 // Lets start with one window and two tabs. | 116 // Lets start with one window and two tabs. |
| 113 EXPECT_EQ(1u, BrowserList::size()); | 117 EXPECT_EQ(1u, BrowserList::size()); |
| 114 EXPECT_EQ(0, browser()->tab_count()); | 118 EXPECT_EQ(0, browser()->tab_count()); |
| 115 | 119 |
| 116 browser()->NewTab(); | 120 browser()->NewTab(); |
| 117 TabContents* tab_contents_1 = browser()->GetSelectedTabContents(); | 121 TabContentsWrapper* tab_contents_1 = |
| 122 browser()->GetSelectedTabContentsWrapper(); |
| 118 ASSERT_TRUE(tab_contents_1); | 123 ASSERT_TRUE(tab_contents_1); |
| 119 | 124 |
| 120 browser()->NewTab(); | 125 browser()->NewTab(); |
| 121 TabContents* tab_contents_2 = browser()->GetSelectedTabContents(); | 126 TabContentsWrapper* tab_contents_2 = |
| 127 browser()->GetSelectedTabContentsWrapper(); |
| 122 ASSERT_TRUE(tab_contents_2); | 128 ASSERT_TRUE(tab_contents_2); |
| 123 EXPECT_EQ(2, browser()->tab_count()); | 129 EXPECT_EQ(2, browser()->tab_count()); |
| 124 | 130 |
| 125 scoped_refptr<printing::PrintPreviewTabController> | 131 scoped_refptr<printing::PrintPreviewTabController> |
| 126 tab_controller(new printing::PrintPreviewTabController()); | 132 tab_controller(new printing::PrintPreviewTabController()); |
| 127 ASSERT_TRUE(tab_controller); | 133 ASSERT_TRUE(tab_controller); |
| 128 | 134 |
| 129 // Create preview tab for |tab_contents_1| | 135 // Create preview tab for |tab_contents_1| |
| 130 TabContents* preview_tab_1 = | 136 TabContentsWrapper* preview_tab_1 = |
| 131 tab_controller->GetOrCreatePreviewTab(tab_contents_1); | 137 tab_controller->GetOrCreatePreviewTab(tab_contents_1); |
| 132 | 138 |
| 133 EXPECT_NE(tab_contents_1, preview_tab_1); | 139 EXPECT_NE(tab_contents_1, preview_tab_1); |
| 134 EXPECT_EQ(3, browser()->tab_count()); | 140 EXPECT_EQ(3, browser()->tab_count()); |
| 135 | 141 |
| 136 // Create preview tab for |tab_contents_2| | 142 // Create preview tab for |tab_contents_2| |
| 137 TabContents* preview_tab_2 = | 143 TabContentsWrapper* preview_tab_2 = |
| 138 tab_controller->GetOrCreatePreviewTab(tab_contents_2); | 144 tab_controller->GetOrCreatePreviewTab(tab_contents_2); |
| 139 | 145 |
| 140 EXPECT_NE(tab_contents_2, preview_tab_2); | 146 EXPECT_NE(tab_contents_2, preview_tab_2); |
| 141 // 2 initiator tab and 2 preview tabs exist in the same browser. | 147 // 2 initiator tab and 2 preview tabs exist in the same browser. |
| 142 EXPECT_EQ(4, browser()->tab_count()); | 148 EXPECT_EQ(4, browser()->tab_count()); |
| 143 | 149 |
| 144 TabStripModel* model = browser()->tabstrip_model(); | 150 TabStripModel* model = browser()->tabstrip_model(); |
| 145 ASSERT_TRUE(model); | 151 ASSERT_TRUE(model); |
| 146 | 152 |
| 147 int preview_tab_1_index = model->GetWrapperIndex(preview_tab_1); | 153 int preview_tab_1_index = model->GetIndexOfTabContents(preview_tab_1); |
| 148 int preview_tab_2_index = model->GetWrapperIndex(preview_tab_2); | 154 int preview_tab_2_index = model->GetIndexOfTabContents(preview_tab_2); |
| 149 | 155 |
| 150 EXPECT_NE(-1, preview_tab_1_index); | 156 EXPECT_NE(-1, preview_tab_1_index); |
| 151 EXPECT_NE(-1, preview_tab_2_index); | 157 EXPECT_NE(-1, preview_tab_2_index); |
| 152 // Current tab is |preview_tab_2|. | 158 // Current tab is |preview_tab_2|. |
| 153 EXPECT_EQ(preview_tab_2_index, browser()->active_index()); | 159 EXPECT_EQ(preview_tab_2_index, browser()->active_index()); |
| 154 | 160 |
| 155 // When we get the preview tab for |tab_contents_1|, | 161 // When we get the preview tab for |tab_contents_1|, |
| 156 // |preview_tab_1| is activated and focused. | 162 // |preview_tab_1| is activated and focused. |
| 157 tab_controller->GetOrCreatePreviewTab(tab_contents_1); | 163 tab_controller->GetOrCreatePreviewTab(tab_contents_1); |
| 158 EXPECT_EQ(preview_tab_1_index, browser()->active_index()); | 164 EXPECT_EQ(preview_tab_1_index, browser()->active_index()); |
| 159 } | 165 } |
| 160 | 166 |
| 161 // Clear the initiator tab details associated with preview tab. | 167 // Clear the initiator tab details associated with preview tab. |
| 162 TEST_F(PrintPreviewTabControllerUnitTest, ClearInitiatorTabDetails) { | 168 TEST_F(PrintPreviewTabControllerUnitTest, ClearInitiatorTabDetails) { |
| 163 ASSERT_TRUE(browser()); | 169 ASSERT_TRUE(browser()); |
| 164 BrowserList::SetLastActive(browser()); | 170 BrowserList::SetLastActive(browser()); |
| 165 ASSERT_TRUE(BrowserList::GetLastActive()); | 171 ASSERT_TRUE(BrowserList::GetLastActive()); |
| 166 | 172 |
| 167 // Lets start with one window with one tab. | 173 // Lets start with one window with one tab. |
| 168 EXPECT_EQ(1u, BrowserList::size()); | 174 EXPECT_EQ(1u, BrowserList::size()); |
| 169 EXPECT_EQ(0, browser()->tab_count()); | 175 EXPECT_EQ(0, browser()->tab_count()); |
| 170 browser()->NewTab(); | 176 browser()->NewTab(); |
| 171 EXPECT_EQ(1, browser()->tab_count()); | 177 EXPECT_EQ(1, browser()->tab_count()); |
| 172 | 178 |
| 173 // Create a reference to initiator tab contents. | 179 // Create a reference to initiator tab contents. |
| 174 TabContents* initiator_tab = browser()->GetSelectedTabContents(); | 180 TabContentsWrapper* initiator_tab = |
| 181 browser()->GetSelectedTabContentsWrapper(); |
| 175 | 182 |
| 176 scoped_refptr<printing::PrintPreviewTabController> | 183 scoped_refptr<printing::PrintPreviewTabController> |
| 177 tab_controller(new printing::PrintPreviewTabController()); | 184 tab_controller(new printing::PrintPreviewTabController()); |
| 178 ASSERT_TRUE(tab_controller); | 185 ASSERT_TRUE(tab_controller); |
| 179 | 186 |
| 180 // Get the preview tab for initiator tab. | 187 // Get the preview tab for initiator tab. |
| 181 TabContents* preview_tab = | 188 TabContentsWrapper* preview_tab = |
| 182 tab_controller->GetOrCreatePreviewTab(initiator_tab); | 189 tab_controller->GetOrCreatePreviewTab(initiator_tab); |
| 183 | 190 |
| 184 // New print preview tab is created. Current focus is on preview tab. | 191 // New print preview tab is created. Current focus is on preview tab. |
| 185 EXPECT_EQ(2, browser()->tab_count()); | 192 EXPECT_EQ(2, browser()->tab_count()); |
| 186 EXPECT_NE(initiator_tab, preview_tab); | 193 EXPECT_NE(initiator_tab, preview_tab); |
| 187 | 194 |
| 188 // Clear the initiator tab details associated with the preview tab. | 195 // Clear the initiator tab details associated with the preview tab. |
| 189 tab_controller->EraseInitiatorTabInfo(preview_tab); | 196 tab_controller->EraseInitiatorTabInfo(preview_tab); |
| 190 | 197 |
| 191 // Get the print preview tab for initiator tab. | 198 // Get the print preview tab for initiator tab. |
| 192 TabContents* new_preview_tab = | 199 TabContentsWrapper* new_preview_tab = |
| 193 tab_controller->GetOrCreatePreviewTab(initiator_tab); | 200 tab_controller->GetOrCreatePreviewTab(initiator_tab); |
| 194 | 201 |
| 195 // New preview tab is created. | 202 // New preview tab is created. |
| 196 EXPECT_EQ(3, browser()->tab_count()); | 203 EXPECT_EQ(3, browser()->tab_count()); |
| 197 EXPECT_NE(new_preview_tab, preview_tab); | 204 EXPECT_NE(new_preview_tab, preview_tab); |
| 198 } | 205 } |
| OLD | NEW |