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

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

Issue 8564044: Revert 110056 - Print Preview: Make print preview tab modal. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month 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 "base/command_line.h"
6 #include "chrome/browser/printing/print_preview_tab_controller.h" 5 #include "chrome/browser/printing/print_preview_tab_controller.h"
7 #include "chrome/browser/ui/browser.h" 6 #include "chrome/browser/ui/browser.h"
8 #include "chrome/browser/ui/browser_list.h" 7 #include "chrome/browser/ui/browser_list.h"
9 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 8 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/url_constants.h" 9 #include "chrome/common/url_constants.h"
12 #include "chrome/test/base/in_process_browser_test.h" 10 #include "chrome/test/base/in_process_browser_test.h"
13 #include "chrome/test/base/ui_test_utils.h" 11 #include "chrome/test/base/ui_test_utils.h"
14 #include "content/browser/tab_contents/tab_contents.h" 12 #include "content/browser/tab_contents/tab_contents.h"
15 #include "content/browser/tab_contents/tab_contents_observer.h"
16 #include "content/public/browser/notification_service.h"
17 #include "content/public/browser/notification_types.h"
18 #include "googleurl/src/gurl.h" 13 #include "googleurl/src/gurl.h"
19 14
20 namespace { 15 namespace {
21 16
22 class PrintPreviewTabControllerBrowserTest : public InProcessBrowserTest { 17 typedef InProcessBrowserTest PrintPreviewTabControllerBrowserTest;
23 public:
24 PrintPreviewTabControllerBrowserTest() {}
25 virtual ~PrintPreviewTabControllerBrowserTest() {}
26 18
27 virtual void SetUpCommandLine(CommandLine* command_line) { 19 // Test to verify that when a preview tab navigates, we can create a new print
28 command_line->AppendSwitch(switches::kEnablePrintPreview); 20 // preview tab for both initiator tab and new preview tab contents.
29 } 21 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest,
30 }; 22 NavigateFromPrintPreviewTab) {
23 ASSERT_TRUE(browser());
24 BrowserList::SetLastActive(browser());
25 ASSERT_TRUE(BrowserList::GetLastActive());
31 26
32 class TabDestroyedObserver : public TabContentsObserver { 27 // Lets start with one window with one tab.
33 public: 28 EXPECT_EQ(1u, BrowserList::size());
34 explicit TabDestroyedObserver(TabContents* contents) 29 EXPECT_EQ(1, browser()->tab_count());
35 : TabContentsObserver(contents),
36 tab_destroyed_(false) {
37 }
38 virtual ~TabDestroyedObserver() {}
39 30
40 bool tab_destroyed() { return tab_destroyed_; } 31 // Create a reference to initiator tab contents.
32 TabContentsWrapper* initiator_tab =
33 browser()->GetSelectedTabContentsWrapper();
34 ASSERT_TRUE(initiator_tab);
41 35
42 private: 36 scoped_refptr<printing::PrintPreviewTabController>
43 virtual void TabContentsDestroyed(TabContents* tab) { 37 tab_controller(new printing::PrintPreviewTabController());
44 tab_destroyed_ = true; 38 ASSERT_TRUE(tab_controller);
45 }
46 39
47 bool tab_destroyed_; 40 // Get the preview tab for initiator tab.
48 }; 41 TabContentsWrapper* preview_tab =
42 tab_controller->GetOrCreatePreviewTab(initiator_tab);
43
44 // New print preview tab is created. Current focus is on preview tab.
45 EXPECT_EQ(2, browser()->tab_count());
46 EXPECT_NE(initiator_tab, preview_tab);
47
48 GURL url(chrome::kAboutBlankURL);
49 ui_test_utils::NavigateToURL(browser(), url);
50 EXPECT_EQ(url, preview_tab->tab_contents()->GetURL());
51
52 // Get the print preview tab for initiator tab.
53 TabContentsWrapper* new_preview_tab =
54 tab_controller->GetOrCreatePreviewTab(initiator_tab);
55
56 // New preview tab is created.
57 EXPECT_EQ(3, browser()->tab_count());
58 EXPECT_NE(new_preview_tab, preview_tab);
59
60 // Get the print preview tab for old preview tab.
61 TabContentsWrapper* newest_preview_tab =
62 tab_controller->GetOrCreatePreviewTab(preview_tab);
63
64 // Newest preview tab is created and the previously created preview tab is not
65 // merely activated.
66 EXPECT_EQ(4, browser()->tab_count());
67 EXPECT_NE(newest_preview_tab, new_preview_tab);
68 }
49 69
50 // Test to verify that when a initiator tab navigates, we can create a new 70 // Test to verify that when a initiator tab navigates, we can create a new
51 // preview tab for the new tab contents. 71 // preview tab for the new tab contents. But we cannot create a preview tab for
72 // the old preview tab.
52 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest, 73 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest,
53 NavigateFromInitiatorTab) { 74 NavigateFromInitiatorTab) {
54 ASSERT_TRUE(browser()); 75 ASSERT_TRUE(browser());
55 BrowserList::SetLastActive(browser()); 76 BrowserList::SetLastActive(browser());
56 ASSERT_TRUE(BrowserList::GetLastActive()); 77 ASSERT_TRUE(BrowserList::GetLastActive());
57 78
58 // Lets start with one window with one tab. 79 // Lets start with one window with one tab.
59 EXPECT_EQ(1u, BrowserList::size()); 80 EXPECT_EQ(1u, BrowserList::size());
60 EXPECT_EQ(1, browser()->tab_count()); 81 EXPECT_EQ(1, browser()->tab_count());
61 82
62 // Create a reference to initiator tab contents. 83 // Create a reference to initiator tab contents.
63 TabContentsWrapper* initiator_tab = 84 TabContentsWrapper* initiator_tab =
64 browser()->GetSelectedTabContentsWrapper(); 85 browser()->GetSelectedTabContentsWrapper();
65 ASSERT_TRUE(initiator_tab); 86 ASSERT_TRUE(initiator_tab);
66 87
67 printing::PrintPreviewTabController* tab_controller = 88 scoped_refptr<printing::PrintPreviewTabController>
68 printing::PrintPreviewTabController::GetInstance(); 89 tab_controller(new printing::PrintPreviewTabController());
69 ASSERT_TRUE(tab_controller); 90 ASSERT_TRUE(tab_controller);
70 91
71 // Get the preview tab for initiator tab. 92 // Get the preview tab for initiator tab.
72 TabContentsWrapper* preview_tab = 93 TabContentsWrapper* preview_tab =
73 tab_controller->GetOrCreatePreviewTab(initiator_tab); 94 tab_controller->GetOrCreatePreviewTab(initiator_tab);
74 95
75 // New print preview tab is created. 96 // New print preview tab is created. Current focus is on preview tab.
76 EXPECT_EQ(1, browser()->tab_count()); 97 EXPECT_EQ(2, browser()->tab_count());
77 ASSERT_TRUE(preview_tab); 98 EXPECT_NE(initiator_tab, preview_tab);
78 ASSERT_NE(initiator_tab, preview_tab);
79 TabDestroyedObserver observer(preview_tab->tab_contents());
80 99
81 // Navigate in the initiator tab. 100 // Activate initiator tab.
101 browser()->ActivateTabAt(0, true);
82 GURL url(chrome::kChromeUINewTabURL); 102 GURL url(chrome::kChromeUINewTabURL);
83 ui_test_utils::NavigateToURL(browser(), url); 103 ui_test_utils::NavigateToURL(browser(), url);
84 104
85 ASSERT_TRUE(observer.tab_destroyed());
86
87 // Get the print preview tab for initiator tab. 105 // Get the print preview tab for initiator tab.
88 TabContentsWrapper* new_preview_tab = 106 TabContentsWrapper* new_preview_tab =
89 tab_controller->GetOrCreatePreviewTab(initiator_tab); 107 tab_controller->GetOrCreatePreviewTab(initiator_tab);
90 108
91 // New preview tab is created. 109 // New preview tab is created.
92 EXPECT_EQ(1, browser()->tab_count()); 110 EXPECT_EQ(3, browser()->tab_count());
93 EXPECT_TRUE(new_preview_tab); 111 EXPECT_NE(new_preview_tab, preview_tab);
112
113 // Get the print preview tab for old preview tab.
114 TabContentsWrapper* newest_preview_tab =
115 tab_controller->GetOrCreatePreviewTab(preview_tab);
116
117 // Make sure preview tab is not created for |preview_tab|.
118 EXPECT_EQ(3, browser()->tab_count());
119 EXPECT_EQ(newest_preview_tab, preview_tab);
94 } 120 }
95 121
96 // Test to verify that after reloading the initiator tab, it creates a new 122 // Test to verify that even after reloading initiator tab and preview tab,
97 // print preview tab. 123 // their association exists.
98 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest, 124 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest,
99 ReloadInitiatorTab) { 125 ReloadInitiatorTabAndPreviewTab) {
100 ASSERT_TRUE(browser()); 126 ASSERT_TRUE(browser());
101 BrowserList::SetLastActive(browser()); 127 BrowserList::SetLastActive(browser());
102 ASSERT_TRUE(BrowserList::GetLastActive()); 128 ASSERT_TRUE(BrowserList::GetLastActive());
103 129
104 // Lets start with one window with one tab. 130 // Lets start with one window with one tab.
105 EXPECT_EQ(1u, BrowserList::size()); 131 EXPECT_EQ(1u, BrowserList::size());
106 EXPECT_EQ(1, browser()->tab_count()); 132 EXPECT_EQ(1, browser()->tab_count());
107 133
108 // Create a reference to initiator tab contents. 134 // Create a reference to initiator tab contents.
109 TabContentsWrapper* initiator_tab = 135 TabContentsWrapper* initiator_tab =
110 browser()->GetSelectedTabContentsWrapper(); 136 browser()->GetSelectedTabContentsWrapper();
111 ASSERT_TRUE(initiator_tab); 137 ASSERT_TRUE(initiator_tab);
112 138
113 printing::PrintPreviewTabController* tab_controller = 139 scoped_refptr<printing::PrintPreviewTabController>
114 printing::PrintPreviewTabController::GetInstance(); 140 tab_controller(new printing::PrintPreviewTabController());
115 ASSERT_TRUE(tab_controller); 141 ASSERT_TRUE(tab_controller);
116 142
117 // Get the preview tab for initiator tab. 143 // Get the preview tab for initiator tab.
118 TabContentsWrapper* preview_tab = 144 TabContentsWrapper* preview_tab =
119 tab_controller->GetOrCreatePreviewTab(initiator_tab); 145 tab_controller->GetOrCreatePreviewTab(initiator_tab);
120 146
121 // New print preview tab is created. 147 // New print preview tab is created. Current focus is on preview tab.
122 EXPECT_EQ(1, browser()->tab_count()); 148 EXPECT_EQ(2, browser()->tab_count());
123 ASSERT_TRUE(preview_tab); 149 EXPECT_NE(initiator_tab, preview_tab);
124 ASSERT_NE(initiator_tab, preview_tab);
125 TabDestroyedObserver tab_destroyed_observer(preview_tab->tab_contents());
126 150
127 // Reload the initiator tab. 151 // Activate initiator tab and reload.
128 ui_test_utils::WindowedNotificationObserver notification_observer( 152 browser()->ActivateTabAt(0, true);
129 content::NOTIFICATION_LOAD_STOP,
130 content::NotificationService::AllSources());
131 browser()->Reload(CURRENT_TAB); 153 browser()->Reload(CURRENT_TAB);
132 notification_observer.Wait();
133
134 ASSERT_TRUE(tab_destroyed_observer.tab_destroyed());
135 154
136 // Get the print preview tab for initiator tab. 155 // Get the print preview tab for initiator tab.
137 TabContentsWrapper* new_preview_tab = 156 TabContentsWrapper* new_preview_tab =
138 tab_controller->GetOrCreatePreviewTab(initiator_tab); 157 tab_controller->GetOrCreatePreviewTab(initiator_tab);
139 158
140 EXPECT_EQ(1, browser()->tab_count()); 159 // Old preview tab is activated.
141 EXPECT_TRUE(new_preview_tab); 160 EXPECT_EQ(2, browser()->tab_count());
161 EXPECT_EQ(new_preview_tab, preview_tab);
162
163 // Reload preview tab.
164 browser()->Reload(CURRENT_TAB);
165 // Get the print preview tab for old preview tab.
166 TabContentsWrapper* newest_preview_tab =
167 tab_controller->GetOrCreatePreviewTab(preview_tab);
168
169 // Make sure new preview tab is not created for |preview_tab|.
170 EXPECT_EQ(2, browser()->tab_count());
171 EXPECT_EQ(newest_preview_tab, preview_tab);
172 }
173
174 // Test that print preview tabs are placed correctly.
175 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest,
176 OpenPreviewTabInCorrectPosition) {
177 const int kTabCount = 4;
178 // Create kTabCount - 1 tabs since we start with 1 tab already.
179 for (int i = 0; i < kTabCount - 1; ++i) {
180 browser::NavigateParams p(browser(), GURL(), content::PAGE_TRANSITION_LINK);
181 p.disposition = NEW_FOREGROUND_TAB;
182 browser::Navigate(&p);
183 }
184 EXPECT_EQ(kTabCount, browser()->tab_count());
185
186 // Create a print preview tab.
187 scoped_refptr<printing::PrintPreviewTabController>
188 tab_controller(new printing::PrintPreviewTabController());
189 ASSERT_TRUE(tab_controller);
190
191 const int kInitiatorTabIndex = 1;
192 TabContentsWrapper* initiator_tab =
193 browser()->GetTabContentsWrapperAt(kInitiatorTabIndex);
194 ASSERT_TRUE(initiator_tab);
195 TabContentsWrapper* preview_tab =
196 tab_controller->GetOrCreatePreviewTab(initiator_tab);
197 EXPECT_TRUE(preview_tab);
198
199 // Check the preview tab's location.
200 EXPECT_EQ(preview_tab,
201 browser()->GetTabContentsWrapperAt(kInitiatorTabIndex + 1));
202 EXPECT_EQ(preview_tab, browser()->GetSelectedTabContentsWrapper());
203 }
204
205 // Test that print preview tabs created by pop-up windows are placed correctly.
206 IN_PROC_BROWSER_TEST_F(PrintPreviewTabControllerBrowserTest,
207 OpenPreviewTabFromPopupInCorrectPosition) {
208 const int kTabCount = 4;
209 // Create kTabCount - 1 tabs since we start with 1 tab already.
210 for (int i = 0; i < kTabCount - 1; ++i) {
211 browser::NavigateParams p(browser(), GURL(), content::PAGE_TRANSITION_LINK);
212 p.disposition = NEW_FOREGROUND_TAB;
213 browser::Navigate(&p);
214 }
215 EXPECT_EQ(kTabCount, browser()->tab_count());
216
217 // Create a popup
218 browser::NavigateParams p(browser(), GURL(), content::PAGE_TRANSITION_LINK);
219 p.disposition = NEW_POPUP;
220 ui_test_utils::NavigateToURL(&p);
221
222
223 #if defined(OS_CHROMEOS)
224 // Navigate() should have opened a new tab on CrOS.
225 EXPECT_EQ(browser(), p.browser);
226 EXPECT_EQ(Browser::TYPE_TABBED, p.browser->type());
227 #else
228 // Navigate() should have opened a new popup window.
229 EXPECT_NE(browser(), p.browser);
230 EXPECT_EQ(Browser::TYPE_POPUP, p.browser->type());
231 #endif
232 ASSERT_TRUE(p.target_contents);
233
234 // Create a print preview tab.
235 scoped_refptr<printing::PrintPreviewTabController>
236 tab_controller(new printing::PrintPreviewTabController());
237 ASSERT_TRUE(tab_controller);
238
239 TabContentsWrapper* preview_tab =
240 tab_controller->GetOrCreatePreviewTab(p.target_contents);
241 EXPECT_TRUE(preview_tab);
242
243 int tab_position = kTabCount;
244 #if defined(OS_CHROMEOS)
245 // Increment position since CrOS opened a new tab instead of a popup.
246 tab_position++;
247 #endif
248
249 // Check the preview tab's location.
250 EXPECT_EQ(preview_tab, browser()->GetTabContentsWrapperAt(tab_position));
251 EXPECT_EQ(preview_tab, browser()->GetSelectedTabContentsWrapper());
142 } 252 }
143 253
144 } // namespace 254 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698