OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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" | 5 #include "base/command_line.h" |
6 #include "base/file_path.h" | 6 #include "base/file_path.h" |
7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "chrome/app/chrome_dll_resource.h" | 9 #include "chrome/app/chrome_dll_resource.h" |
10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 UITest::TearDown(); | 33 UITest::TearDown(); |
34 | 34 |
35 clear_profile_ = false; | 35 clear_profile_ = false; |
36 | 36 |
37 launch_arguments_.AppendSwitchWithValue(switches::kRestoreLastSession, | 37 launch_arguments_.AppendSwitchWithValue(switches::kRestoreLastSession, |
38 IntToWString(expected_tab_count)); | 38 IntToWString(expected_tab_count)); |
39 UITest::SetUp(); | 39 UITest::SetUp(); |
40 } | 40 } |
41 | 41 |
42 void CloseWindow(int window_index, int initial_count) { | 42 void CloseWindow(int window_index, int initial_count) { |
43 scoped_ptr<BrowserProxy> browser_proxy( | 43 scoped_refptr<BrowserProxy> browser_proxy( |
44 automation()->GetBrowserWindow(window_index)); | 44 automation()->GetBrowserWindow(window_index)); |
45 ASSERT_TRUE(browser_proxy.get()); | 45 ASSERT_TRUE(browser_proxy.get()); |
46 ASSERT_TRUE(browser_proxy->RunCommand(IDC_CLOSE_WINDOW)); | 46 ASSERT_TRUE(browser_proxy->RunCommand(IDC_CLOSE_WINDOW)); |
47 int window_count; | 47 int window_count; |
48 automation()->GetBrowserWindowCount(&window_count); | 48 automation()->GetBrowserWindowCount(&window_count); |
49 ASSERT_EQ(initial_count - 1, window_count); | 49 ASSERT_EQ(initial_count - 1, window_count); |
50 browser_proxy.reset(); | |
51 } | 50 } |
52 | 51 |
53 void AssertOneWindowWithOneTab() { | 52 void AssertOneWindowWithOneTab() { |
54 int window_count; | 53 int window_count; |
55 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); | 54 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); |
56 ASSERT_EQ(1, window_count); | 55 ASSERT_EQ(1, window_count); |
57 GURL url; | 56 GURL url; |
58 AssertWindowHasOneTab(0, &url); | 57 AssertWindowHasOneTab(0, &url); |
59 } | 58 } |
60 | 59 |
61 void AssertWindowHasOneTab(int window_index, GURL* url) { | 60 void AssertWindowHasOneTab(int window_index, GURL* url) { |
62 scoped_ptr<BrowserProxy> browser_proxy( | 61 scoped_refptr<BrowserProxy> browser_proxy( |
63 automation()->GetBrowserWindow(window_index)); | 62 automation()->GetBrowserWindow(window_index)); |
64 ASSERT_TRUE(browser_proxy.get()); | 63 ASSERT_TRUE(browser_proxy.get()); |
65 | 64 |
66 int tab_count; | 65 int tab_count; |
67 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); | 66 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); |
68 ASSERT_EQ(1, tab_count); | 67 ASSERT_EQ(1, tab_count); |
69 | 68 |
70 int active_tab_index; | 69 int active_tab_index; |
71 ASSERT_TRUE(browser_proxy->GetActiveTabIndex(&active_tab_index)); | 70 ASSERT_TRUE(browser_proxy->GetActiveTabIndex(&active_tab_index)); |
72 ASSERT_EQ(0, active_tab_index); | 71 ASSERT_EQ(0, active_tab_index); |
73 | 72 |
74 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetActiveTab()); | 73 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetActiveTab()); |
75 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 74 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
76 | 75 |
77 ASSERT_TRUE(tab_proxy->GetCurrentURL(url)); | 76 ASSERT_TRUE(tab_proxy->GetCurrentURL(url)); |
78 } | 77 } |
79 | 78 |
80 GURL url1_; | 79 GURL url1_; |
81 GURL url2_; | 80 GURL url2_; |
82 GURL url3_; | 81 GURL url3_; |
83 | 82 |
84 private: | 83 private: |
85 DISALLOW_COPY_AND_ASSIGN(SessionRestoreUITest); | 84 DISALLOW_COPY_AND_ASSIGN(SessionRestoreUITest); |
86 }; | 85 }; |
87 | 86 |
88 } // namespace | 87 } // namespace |
89 | 88 |
90 TEST_F(SessionRestoreUITest, Basic) { | 89 TEST_F(SessionRestoreUITest, Basic) { |
91 NavigateToURL(url1_); | 90 NavigateToURL(url1_); |
92 NavigateToURL(url2_); | 91 NavigateToURL(url2_); |
93 | 92 |
94 QuitBrowserAndRestore(1); | 93 QuitBrowserAndRestore(1); |
95 | 94 |
96 // NOTE: Don't use GetActiveWindow here, when run with the screen locked | 95 // NOTE: Don't use GetActiveWindow here, when run with the screen locked |
97 // active windows returns NULL. | 96 // active windows returns NULL. |
98 int window_count; | 97 int window_count; |
99 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 98 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
100 window_count == 1); | 99 window_count == 1); |
101 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 100 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
102 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 101 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
103 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 102 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
104 | 103 |
105 ASSERT_EQ(url2_, GetActiveTabURL()); | 104 ASSERT_EQ(url2_, GetActiveTabURL()); |
106 tab_proxy->GoBack(); | 105 tab_proxy->GoBack(); |
107 ASSERT_EQ(url1_, GetActiveTabURL()); | 106 ASSERT_EQ(url1_, GetActiveTabURL()); |
108 } | 107 } |
109 | 108 |
110 TEST_F(SessionRestoreUITest, RestoresForwardAndBackwardNavs) { | 109 TEST_F(SessionRestoreUITest, RestoresForwardAndBackwardNavs) { |
111 NavigateToURL(url1_); | 110 NavigateToURL(url1_); |
112 NavigateToURL(url2_); | 111 NavigateToURL(url2_); |
113 NavigateToURL(url3_); | 112 NavigateToURL(url3_); |
114 | 113 |
115 scoped_ptr<TabProxy> active_tab(GetActiveTab()); | 114 scoped_refptr<TabProxy> active_tab(GetActiveTab()); |
116 ASSERT_TRUE(active_tab->GoBack()); | 115 ASSERT_TRUE(active_tab->GoBack()); |
117 | 116 |
118 QuitBrowserAndRestore(1); | 117 QuitBrowserAndRestore(1); |
119 | 118 |
120 // NOTE: Don't use GetActiveWindow here, when run with the screen locked | 119 // NOTE: Don't use GetActiveWindow here, when run with the screen locked |
121 // active windows returns NULL. | 120 // active windows returns NULL. |
122 int window_count; | 121 int window_count; |
123 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 122 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
124 window_count == 1); | 123 window_count == 1); |
125 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 124 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
126 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 125 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
127 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 126 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
128 | 127 |
129 ASSERT_TRUE(GetActiveTabURL() == url2_); | 128 ASSERT_TRUE(GetActiveTabURL() == url2_); |
130 ASSERT_TRUE(tab_proxy->GoForward()); | 129 ASSERT_TRUE(tab_proxy->GoForward()); |
131 ASSERT_TRUE(GetActiveTabURL() == url3_); | 130 ASSERT_TRUE(GetActiveTabURL() == url3_); |
132 ASSERT_TRUE(tab_proxy->GoBack()); | 131 ASSERT_TRUE(tab_proxy->GoBack()); |
133 ASSERT_TRUE(GetActiveTabURL() == url2_); | 132 ASSERT_TRUE(GetActiveTabURL() == url2_); |
134 ASSERT_TRUE(tab_proxy->GoBack()); | 133 ASSERT_TRUE(tab_proxy->GoBack()); |
135 ASSERT_TRUE(GetActiveTabURL() == url1_); | 134 ASSERT_TRUE(GetActiveTabURL() == url1_); |
136 } | 135 } |
137 | 136 |
138 // Tests that the SiteInstances used for entries in a restored tab's history | 137 // Tests that the SiteInstances used for entries in a restored tab's history |
139 // are given appropriate max page IDs, so that going back to a restored | 138 // are given appropriate max page IDs, so that going back to a restored |
140 // cross-site page and then forward again works. (Bug 1204135) | 139 // cross-site page and then forward again works. (Bug 1204135) |
141 TEST_F(SessionRestoreUITest, RestoresCrossSiteForwardAndBackwardNavs) { | 140 TEST_F(SessionRestoreUITest, RestoresCrossSiteForwardAndBackwardNavs) { |
142 const wchar_t kDocRoot[] = L"chrome/test/data"; | 141 const wchar_t kDocRoot[] = L"chrome/test/data"; |
143 scoped_refptr<HTTPTestServer> server = | 142 scoped_refptr<HTTPTestServer> server = |
144 HTTPTestServer::CreateServer(kDocRoot, NULL); | 143 HTTPTestServer::CreateServer(kDocRoot, NULL); |
145 ASSERT_TRUE(NULL != server.get()); | 144 ASSERT_TRUE(NULL != server.get()); |
146 GURL cross_site_url(server->TestServerPageW(L"files/title2.html")); | 145 GURL cross_site_url(server->TestServerPageW(L"files/title2.html")); |
147 | 146 |
148 // Visit URLs on different sites. | 147 // Visit URLs on different sites. |
149 NavigateToURL(url1_); | 148 NavigateToURL(url1_); |
150 NavigateToURL(cross_site_url); | 149 NavigateToURL(cross_site_url); |
151 NavigateToURL(url2_); | 150 NavigateToURL(url2_); |
152 | 151 |
153 scoped_ptr<TabProxy> active_tab(GetActiveTab()); | 152 scoped_refptr<TabProxy> active_tab(GetActiveTab()); |
154 ASSERT_TRUE(active_tab->GoBack()); | 153 ASSERT_TRUE(active_tab->GoBack()); |
155 | 154 |
156 QuitBrowserAndRestore(1); | 155 QuitBrowserAndRestore(1); |
157 | 156 |
158 // NOTE: Don't use GetActiveWindow here, when run with the screen locked | 157 // NOTE: Don't use GetActiveWindow here, when run with the screen locked |
159 // active windows returns NULL. | 158 // active windows returns NULL. |
160 int window_count; | 159 int window_count; |
161 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 160 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
162 window_count == 1); | 161 window_count == 1); |
163 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 162 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
164 int tab_count; | 163 int tab_count; |
165 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count) && tab_count == 1); | 164 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count) && tab_count == 1); |
166 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 165 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
167 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_max_timeout_ms())); | 166 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_max_timeout_ms())); |
168 | 167 |
169 // Check that back and forward work as expected. | 168 // Check that back and forward work as expected. |
170 GURL url; | 169 GURL url; |
171 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); | 170 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); |
172 ASSERT_EQ(cross_site_url, url); | 171 ASSERT_EQ(cross_site_url, url); |
173 | 172 |
174 ASSERT_TRUE(tab_proxy->GoBack()); | 173 ASSERT_TRUE(tab_proxy->GoBack()); |
175 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); | 174 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); |
176 ASSERT_EQ(url1_, url); | 175 ASSERT_EQ(url1_, url); |
177 | 176 |
178 ASSERT_TRUE(tab_proxy->GoForward()); | 177 ASSERT_TRUE(tab_proxy->GoForward()); |
179 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); | 178 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); |
180 ASSERT_EQ(cross_site_url, url); | 179 ASSERT_EQ(cross_site_url, url); |
181 | 180 |
182 ASSERT_TRUE(tab_proxy->GoForward()); | 181 ASSERT_TRUE(tab_proxy->GoForward()); |
183 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); | 182 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); |
184 ASSERT_EQ(url2_, url); | 183 ASSERT_EQ(url2_, url); |
185 } | 184 } |
186 | 185 |
187 TEST_F(SessionRestoreUITest, TwoTabsSecondSelected) { | 186 TEST_F(SessionRestoreUITest, TwoTabsSecondSelected) { |
188 NavigateToURL(url1_); | 187 NavigateToURL(url1_); |
189 | 188 |
190 // NOTE: Don't use GetActiveWindow here, when run with the screen locked | 189 // NOTE: Don't use GetActiveWindow here, when run with the screen locked |
191 // active windows returns NULL. | 190 // active windows returns NULL. |
192 int window_count; | 191 int window_count; |
193 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 192 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
194 window_count == 1); | 193 window_count == 1); |
195 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 194 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
196 | 195 |
197 ASSERT_TRUE(browser_proxy->AppendTab(url2_)); | 196 ASSERT_TRUE(browser_proxy->AppendTab(url2_)); |
198 | 197 |
199 QuitBrowserAndRestore(2); | 198 QuitBrowserAndRestore(2); |
200 browser_proxy.reset(); | 199 browser_proxy = NULL; |
201 | 200 |
202 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 201 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
203 window_count == 1); | 202 window_count == 1); |
204 browser_proxy.reset(automation()->GetBrowserWindow(0)); | 203 browser_proxy = automation()->GetBrowserWindow(0); |
205 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 204 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
206 | 205 |
207 int tab_count; | 206 int tab_count; |
208 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); | 207 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); |
209 ASSERT_EQ(2, tab_count); | 208 ASSERT_EQ(2, tab_count); |
210 | 209 |
211 int active_tab_index; | 210 int active_tab_index; |
212 ASSERT_TRUE(browser_proxy->GetActiveTabIndex(&active_tab_index)); | 211 ASSERT_TRUE(browser_proxy->GetActiveTabIndex(&active_tab_index)); |
213 ASSERT_EQ(1, active_tab_index); | 212 ASSERT_EQ(1, active_tab_index); |
214 | 213 |
215 tab_proxy.reset(browser_proxy->GetActiveTab()); | 214 tab_proxy = browser_proxy->GetActiveTab(); |
216 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 215 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
217 | 216 |
218 ASSERT_TRUE(GetActiveTabURL() == url2_); | 217 ASSERT_TRUE(GetActiveTabURL() == url2_); |
219 | 218 |
220 ASSERT_TRUE(browser_proxy->ActivateTab(0)); | 219 ASSERT_TRUE(browser_proxy->ActivateTab(0)); |
221 tab_proxy.reset(browser_proxy->GetActiveTab()); | 220 tab_proxy = browser_proxy->GetActiveTab(); |
222 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 221 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
223 | 222 |
224 ASSERT_TRUE(GetActiveTabURL() == url1_); | 223 ASSERT_TRUE(GetActiveTabURL() == url1_); |
225 } | 224 } |
226 | 225 |
227 // Creates two tabs, closes one, quits and makes sure only one tab is restored. | 226 // Creates two tabs, closes one, quits and makes sure only one tab is restored. |
228 TEST_F(SessionRestoreUITest, ClosedTabStaysClosed) { | 227 TEST_F(SessionRestoreUITest, ClosedTabStaysClosed) { |
229 NavigateToURL(url1_); | 228 NavigateToURL(url1_); |
230 | 229 |
231 // NOTE: Don't use GetActiveWindow here, when run with the screen locked | 230 // NOTE: Don't use GetActiveWindow here, when run with the screen locked |
232 // active windows returns NULL. | 231 // active windows returns NULL. |
233 int window_count; | 232 int window_count; |
234 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && | 233 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count) && |
235 window_count == 1); | 234 window_count == 1); |
236 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 235 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
237 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 236 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
238 | 237 |
239 browser_proxy->AppendTab(url2_); | 238 browser_proxy->AppendTab(url2_); |
240 | 239 |
241 scoped_ptr<TabProxy> active_tab(browser_proxy->GetActiveTab()); | 240 scoped_refptr<TabProxy> active_tab(browser_proxy->GetActiveTab()); |
242 active_tab->Close(true); | 241 active_tab->Close(true); |
243 | 242 |
244 QuitBrowserAndRestore(1); | 243 QuitBrowserAndRestore(1); |
245 browser_proxy.reset(); | 244 browser_proxy = NULL; |
246 tab_proxy.reset(); | 245 tab_proxy = NULL; |
247 | 246 |
248 AssertOneWindowWithOneTab(); | 247 AssertOneWindowWithOneTab(); |
249 | 248 |
250 ASSERT_TRUE(GetActiveTabURL() == url1_); | 249 ASSERT_TRUE(GetActiveTabURL() == url1_); |
251 } | 250 } |
252 | 251 |
253 #if defined(OS_WIN) | 252 #if defined(OS_WIN) |
254 // Creates a browser, goes incognito, closes browser, launches and make sure | 253 // Creates a browser, goes incognito, closes browser, launches and make sure |
255 // we don't restore. | 254 // we don't restore. |
256 TEST_F(SessionRestoreUITest, DontRestoreWhileIncognito) { | 255 TEST_F(SessionRestoreUITest, DontRestoreWhileIncognito) { |
257 NavigateToURL(url1_); | 256 NavigateToURL(url1_); |
258 | 257 |
259 // Make sure we have one window. | 258 // Make sure we have one window. |
260 int initial_window_count; | 259 int initial_window_count; |
261 ASSERT_TRUE(automation()->GetBrowserWindowCount(&initial_window_count) && | 260 ASSERT_TRUE(automation()->GetBrowserWindowCount(&initial_window_count) && |
262 initial_window_count == 1); | 261 initial_window_count == 1); |
263 | 262 |
264 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 263 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
265 | 264 |
266 // Create an off the record window. | 265 // Create an off the record window. |
267 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_INCOGNITO_WINDOW)); | 266 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_INCOGNITO_WINDOW)); |
268 int window_count; | 267 int window_count; |
269 automation()->GetBrowserWindowCount(&window_count); | 268 automation()->GetBrowserWindowCount(&window_count); |
270 ASSERT_EQ(2, window_count); | 269 ASSERT_EQ(2, window_count); |
271 | 270 |
272 // Close the first window. | 271 // Close the first window. |
273 CloseWindow(0, 2); | 272 CloseWindow(0, 2); |
274 browser_proxy.reset(); | 273 browser_proxy = NULL; |
275 | 274 |
276 // Launch the browser again. Note, this doesn't spawn a new process, instead | 275 // Launch the browser again. Note, this doesn't spawn a new process, instead |
277 // it attaches to the current process. | 276 // it attaches to the current process. |
278 include_testing_id_ = false; | 277 include_testing_id_ = false; |
279 use_existing_browser_ = true; | 278 use_existing_browser_ = true; |
280 clear_profile_ = false; | 279 clear_profile_ = false; |
281 launch_arguments_.AppendSwitch(switches::kRestoreLastSession); | 280 launch_arguments_.AppendSwitch(switches::kRestoreLastSession); |
282 LaunchBrowser(launch_arguments_, false); | 281 LaunchBrowser(launch_arguments_, false); |
283 | 282 |
284 // A new window should appear; | 283 // A new window should appear; |
285 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, action_timeout_ms())); | 284 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, action_timeout_ms())); |
286 | 285 |
287 // And it shouldn't have url1_ in it. | 286 // And it shouldn't have url1_ in it. |
288 browser_proxy.reset(automation()->GetBrowserWindow(1)); | 287 browser_proxy = automation()->GetBrowserWindow(1); |
289 ASSERT_TRUE(browser_proxy.get()); | 288 ASSERT_TRUE(browser_proxy.get()); |
290 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); | 289 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(0)); |
291 ASSERT_TRUE(tab_proxy.get()); | 290 ASSERT_TRUE(tab_proxy.get()); |
292 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 291 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
293 GURL url; | 292 GURL url; |
294 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); | 293 ASSERT_TRUE(tab_proxy->GetCurrentURL(&url)); |
295 ASSERT_TRUE(url != url1_); | 294 ASSERT_TRUE(url != url1_); |
296 } | 295 } |
297 | 296 |
298 // Creates two windows, closes one, restores, make sure only one window open. | 297 // Creates two windows, closes one, restores, make sure only one window open. |
299 TEST_F(SessionRestoreUITest, TwoWindowsCloseOneRestoreOnlyOne) { | 298 TEST_F(SessionRestoreUITest, TwoWindowsCloseOneRestoreOnlyOne) { |
300 NavigateToURL(url1_); | 299 NavigateToURL(url1_); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 // we should have two new tabs running. (This test will pass in both | 359 // we should have two new tabs running. (This test will pass in both |
361 // process-per-site and process-per-site-instance, because we treat the new tab | 360 // process-per-site and process-per-site-instance, because we treat the new tab |
362 // as a special case in process-per-site-instance so that it only ever uses one | 361 // as a special case in process-per-site-instance so that it only ever uses one |
363 // process.) | 362 // process.) |
364 TEST_F(SessionRestoreUITest, ShareProcessesOnRestore) { | 363 TEST_F(SessionRestoreUITest, ShareProcessesOnRestore) { |
365 if (in_process_renderer()) { | 364 if (in_process_renderer()) { |
366 // No point in running this test in single process mode. | 365 // No point in running this test in single process mode. |
367 return; | 366 return; |
368 } | 367 } |
369 | 368 |
370 scoped_ptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); | 369 scoped_refptr<BrowserProxy> browser_proxy(automation()->GetBrowserWindow(0)); |
371 ASSERT_TRUE(browser_proxy.get() != NULL); | 370 ASSERT_TRUE(browser_proxy.get() != NULL); |
372 int tab_count; | 371 int tab_count; |
373 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); | 372 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); |
374 | 373 |
375 // Create two new tabs. | 374 // Create two new tabs. |
376 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_TAB)); | 375 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_TAB)); |
377 int new_tab_count; | 376 int new_tab_count; |
378 ASSERT_TRUE(browser_proxy->GetTabCount(&new_tab_count)); | 377 ASSERT_TRUE(browser_proxy->GetTabCount(&new_tab_count)); |
379 ASSERT_EQ(++tab_count, new_tab_count); | 378 ASSERT_EQ(++tab_count, new_tab_count); |
380 scoped_ptr<TabProxy> last_tab(browser_proxy->GetTab(tab_count - 1)); | 379 scoped_refptr<TabProxy> last_tab(browser_proxy->GetTab(tab_count - 1)); |
381 ASSERT_TRUE(last_tab.get() != NULL); | 380 ASSERT_TRUE(last_tab.get() != NULL); |
382 // Do a reload to ensure new tab page has loaded. | 381 // Do a reload to ensure new tab page has loaded. |
383 ASSERT_TRUE(last_tab->Reload()); | 382 ASSERT_TRUE(last_tab->Reload()); |
384 | 383 |
385 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_TAB)); | 384 ASSERT_TRUE(browser_proxy->RunCommand(IDC_NEW_TAB)); |
386 ASSERT_TRUE(browser_proxy->GetTabCount(&new_tab_count)); | 385 ASSERT_TRUE(browser_proxy->GetTabCount(&new_tab_count)); |
387 ASSERT_EQ(++tab_count, new_tab_count); | 386 ASSERT_EQ(++tab_count, new_tab_count); |
388 last_tab.reset(browser_proxy->GetTab(tab_count - 1)); | 387 last_tab = browser_proxy->GetTab(tab_count - 1); |
389 ASSERT_TRUE(last_tab.get() != NULL); | 388 ASSERT_TRUE(last_tab.get() != NULL); |
390 // Do a reload to ensure new tab page has loaded. | 389 // Do a reload to ensure new tab page has loaded. |
391 ASSERT_TRUE(last_tab->Reload()); | 390 ASSERT_TRUE(last_tab->Reload()); |
392 | 391 |
393 int expected_process_count = GetBrowserProcessCount(); | 392 int expected_process_count = GetBrowserProcessCount(); |
394 int expected_tab_count = tab_count; | 393 int expected_tab_count = tab_count; |
395 | 394 |
396 // Restart. | 395 // Restart. |
397 browser_proxy.reset(); | 396 browser_proxy = NULL; |
398 last_tab.reset(); | 397 last_tab = NULL; |
399 QuitBrowserAndRestore(3); | 398 QuitBrowserAndRestore(3); |
400 | 399 |
401 // Wait for each tab to finish being restored, then make sure the process | 400 // Wait for each tab to finish being restored, then make sure the process |
402 // count matches. | 401 // count matches. |
403 browser_proxy.reset(automation()->GetBrowserWindow(0)); | 402 browser_proxy = automation()->GetBrowserWindow(0); |
404 ASSERT_TRUE(browser_proxy.get() != NULL); | 403 ASSERT_TRUE(browser_proxy.get() != NULL); |
405 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); | 404 ASSERT_TRUE(browser_proxy->GetTabCount(&tab_count)); |
406 ASSERT_EQ(expected_tab_count, tab_count); | 405 ASSERT_EQ(expected_tab_count, tab_count); |
407 | 406 |
408 scoped_ptr<TabProxy> tab_proxy(browser_proxy->GetTab(tab_count - 2)); | 407 scoped_refptr<TabProxy> tab_proxy(browser_proxy->GetTab(tab_count - 2)); |
409 ASSERT_TRUE(tab_proxy.get() != NULL); | 408 ASSERT_TRUE(tab_proxy.get() != NULL); |
410 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 409 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
411 tab_proxy.reset(browser_proxy->GetTab(tab_count - 1)); | 410 tab_proxy = browser_proxy->GetTab(tab_count - 1); |
412 ASSERT_TRUE(tab_proxy.get() != NULL); | 411 ASSERT_TRUE(tab_proxy.get() != NULL); |
413 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); | 412 ASSERT_TRUE(tab_proxy->WaitForTabToBeRestored(action_timeout_ms())); |
414 | 413 |
415 ASSERT_EQ(expected_process_count, GetBrowserProcessCount()); | 414 ASSERT_EQ(expected_process_count, GetBrowserProcessCount()); |
416 } | 415 } |
417 #endif | 416 #endif |
OLD | NEW |