| 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 |