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

Side by Side Diff: chrome/browser/printing/print_preview_tab_controller_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698