| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/browser_navigator_browsertest.h" | 5 #include "chrome/browser/ui/browser_navigator_browsertest.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 11 #include "chrome/app/chrome_command_ids.h" | 11 #include "chrome/app/chrome_command_ids.h" |
| 12 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 12 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/browser_commands.h" | 15 #include "chrome/browser/ui/browser_commands.h" |
| 16 #include "chrome/browser/ui/browser_finder.h" | 16 #include "chrome/browser/ui/browser_finder.h" |
| 17 #include "chrome/browser/ui/browser_navigator.h" | 17 #include "chrome/browser/ui/browser_navigator.h" |
| 18 #include "chrome/browser/ui/browser_tabstrip.h" | 18 #include "chrome/browser/ui/browser_tabstrip.h" |
| 19 #include "chrome/browser/ui/browser_window.h" | 19 #include "chrome/browser/ui/browser_window.h" |
| 20 #include "chrome/browser/ui/chrome_pages.h" | 20 #include "chrome/browser/ui/chrome_pages.h" |
| 21 #include "chrome/browser/ui/location_bar/location_bar.h" |
| 22 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| 21 #include "chrome/browser/ui/singleton_tabs.h" | 23 #include "chrome/browser/ui/singleton_tabs.h" |
| 22 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 24 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 23 #include "chrome/common/chrome_switches.h" | 25 #include "chrome/common/chrome_switches.h" |
| 24 #include "chrome/common/pref_names.h" | 26 #include "chrome/common/pref_names.h" |
| 25 #include "chrome/common/url_constants.h" | 27 #include "chrome/common/url_constants.h" |
| 26 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
| 27 #include "content/public/browser/notification_service.h" | 29 #include "content/public/browser/notification_service.h" |
| 28 #include "content/public/browser/notification_types.h" | 30 #include "content/public/browser/notification_types.h" |
| 29 #include "content/public/browser/web_contents.h" | 31 #include "content/public/browser/web_contents.h" |
| 30 | 32 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 browser()->tab_strip_model()->GetActiveWebContents(); | 132 browser()->tab_strip_model()->GetActiveWebContents(); |
| 131 if (base_web_contents) { | 133 if (base_web_contents) { |
| 132 create_params.initial_size = | 134 create_params.initial_size = |
| 133 base_web_contents->GetContainerBounds().size(); | 135 base_web_contents->GetContainerBounds().size(); |
| 134 } | 136 } |
| 135 return WebContents::Create(create_params); | 137 return WebContents::Create(create_params); |
| 136 } | 138 } |
| 137 | 139 |
| 138 void BrowserNavigatorTest::RunSuppressTest(WindowOpenDisposition disposition) { | 140 void BrowserNavigatorTest::RunSuppressTest(WindowOpenDisposition disposition) { |
| 139 GURL old_url = browser()->tab_strip_model()->GetActiveWebContents()->GetURL(); | 141 GURL old_url = browser()->tab_strip_model()->GetActiveWebContents()->GetURL(); |
| 140 chrome::NavigateParams p(MakeNavigateParams()); | 142 chrome::NavigateParams params(MakeNavigateParams()); |
| 141 p.disposition = disposition; | 143 params.disposition = disposition; |
| 142 chrome::Navigate(&p); | 144 chrome::Navigate(¶ms); |
| 143 | 145 |
| 144 // Nothing should have happened as a result of Navigate(); | 146 // Nothing should have happened as a result of Navigate(); |
| 145 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 147 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 146 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 148 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 147 EXPECT_EQ(old_url, | 149 EXPECT_EQ(old_url, |
| 148 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 150 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 149 } | 151 } |
| 150 | 152 |
| 151 void BrowserNavigatorTest::RunUseNonIncognitoWindowTest(const GURL& url) { | 153 void BrowserNavigatorTest::RunUseNonIncognitoWindowTest(const GURL& url) { |
| 152 Browser* incognito_browser = CreateIncognitoBrowser(); | 154 Browser* incognito_browser = CreateIncognitoBrowser(); |
| 153 | 155 |
| 154 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 156 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 155 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 157 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 156 EXPECT_EQ(1, incognito_browser->tab_strip_model()->count()); | 158 EXPECT_EQ(1, incognito_browser->tab_strip_model()->count()); |
| 157 | 159 |
| 158 // Navigate to the page. | 160 // Navigate to the page. |
| 159 chrome::NavigateParams p(MakeNavigateParams(incognito_browser)); | 161 chrome::NavigateParams params(MakeNavigateParams(incognito_browser)); |
| 160 p.disposition = SINGLETON_TAB; | 162 params.disposition = SINGLETON_TAB; |
| 161 p.url = url; | 163 params.url = url; |
| 162 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 164 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 163 chrome::Navigate(&p); | 165 chrome::Navigate(¶ms); |
| 164 | 166 |
| 165 // This page should be opened in browser() window. | 167 // This page should be opened in browser() window. |
| 166 EXPECT_NE(incognito_browser, p.browser); | 168 EXPECT_NE(incognito_browser, params.browser); |
| 167 EXPECT_EQ(browser(), p.browser); | 169 EXPECT_EQ(browser(), params.browser); |
| 168 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 170 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 169 EXPECT_EQ(url, | 171 EXPECT_EQ(url, |
| 170 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 172 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 171 } | 173 } |
| 172 | 174 |
| 173 void BrowserNavigatorTest::RunDoNothingIfIncognitoIsForcedTest( | 175 void BrowserNavigatorTest::RunDoNothingIfIncognitoIsForcedTest( |
| 174 const GURL& url) { | 176 const GURL& url) { |
| 175 Browser* browser = CreateIncognitoBrowser(); | 177 Browser* browser = CreateIncognitoBrowser(); |
| 176 | 178 |
| 177 // Set kIncognitoModeAvailability to FORCED. | 179 // Set kIncognitoModeAvailability to FORCED. |
| 178 PrefService* prefs1 = browser->profile()->GetPrefs(); | 180 PrefService* prefs1 = browser->profile()->GetPrefs(); |
| 179 prefs1->SetInteger(prefs::kIncognitoModeAvailability, | 181 prefs1->SetInteger(prefs::kIncognitoModeAvailability, |
| 180 IncognitoModePrefs::FORCED); | 182 IncognitoModePrefs::FORCED); |
| 181 PrefService* prefs2 = browser->profile()->GetOriginalProfile()->GetPrefs(); | 183 PrefService* prefs2 = browser->profile()->GetOriginalProfile()->GetPrefs(); |
| 182 prefs2->SetInteger(prefs::kIncognitoModeAvailability, | 184 prefs2->SetInteger(prefs::kIncognitoModeAvailability, |
| 183 IncognitoModePrefs::FORCED); | 185 IncognitoModePrefs::FORCED); |
| 184 | 186 |
| 185 // Navigate to the page. | 187 // Navigate to the page. |
| 186 chrome::NavigateParams p(MakeNavigateParams(browser)); | 188 chrome::NavigateParams params(MakeNavigateParams(browser)); |
| 187 p.disposition = OFF_THE_RECORD; | 189 params.disposition = OFF_THE_RECORD; |
| 188 p.url = url; | 190 params.url = url; |
| 189 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 191 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 190 chrome::Navigate(&p); | 192 chrome::Navigate(¶ms); |
| 191 | 193 |
| 192 // The page should not be opened. | 194 // The page should not be opened. |
| 193 EXPECT_EQ(browser, p.browser); | 195 EXPECT_EQ(browser, params.browser); |
| 194 EXPECT_EQ(1, browser->tab_strip_model()->count()); | 196 EXPECT_EQ(1, browser->tab_strip_model()->count()); |
| 195 EXPECT_EQ(GURL(url::kAboutBlankURL), | 197 EXPECT_EQ(GURL(url::kAboutBlankURL), |
| 196 browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 198 browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 197 } | 199 } |
| 198 | 200 |
| 199 void BrowserNavigatorTest::SetUpCommandLine(base::CommandLine* command_line) { | 201 void BrowserNavigatorTest::SetUpCommandLine(base::CommandLine* command_line) { |
| 200 // Disable settings-in-a-window so that we can use the settings page and | 202 // Disable settings-in-a-window so that we can use the settings page and |
| 201 // sub-pages to test browser navigation. | 203 // sub-pages to test browser navigation. |
| 202 command_line->AppendSwitch(::switches::kDisableSettingsWindow); | 204 command_line->AppendSwitch(::switches::kDisableSettingsWindow); |
| 203 } | 205 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 ui::PAGE_TRANSITION_LINK); | 255 ui::PAGE_TRANSITION_LINK); |
| 254 | 256 |
| 255 // We should have one browser with 3 tabs, the 3rd selected. | 257 // We should have one browser with 3 tabs, the 3rd selected. |
| 256 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 258 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 257 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 259 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 258 | 260 |
| 259 unsigned int previous_tab_contents_count = | 261 unsigned int previous_tab_contents_count = |
| 260 created_tab_contents_count_ = 0; | 262 created_tab_contents_count_ = 0; |
| 261 | 263 |
| 262 // Navigate to singleton_url1. | 264 // Navigate to singleton_url1. |
| 263 chrome::NavigateParams p(MakeNavigateParams()); | 265 chrome::NavigateParams params(MakeNavigateParams()); |
| 264 p.disposition = SINGLETON_TAB; | 266 params.disposition = SINGLETON_TAB; |
| 265 p.url = singleton_url1; | 267 params.url = singleton_url1; |
| 266 chrome::Navigate(&p); | 268 chrome::Navigate(¶ms); |
| 267 | 269 |
| 268 // The middle tab should now be selected. | 270 // The middle tab should now be selected. |
| 269 EXPECT_EQ(browser(), p.browser); | 271 EXPECT_EQ(browser(), params.browser); |
| 270 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 272 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 271 | 273 |
| 272 // No tab contents should have been created | 274 // No tab contents should have been created |
| 273 EXPECT_EQ(previous_tab_contents_count, | 275 EXPECT_EQ(previous_tab_contents_count, |
| 274 created_tab_contents_count_); | 276 created_tab_contents_count_); |
| 275 } | 277 } |
| 276 | 278 |
| 277 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 279 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 278 Disposition_SingletonTabRespectingRef) { | 280 Disposition_SingletonTabRespectingRef) { |
| 279 GURL singleton_ref_url1("http://maps.google.com/#a"); | 281 GURL singleton_ref_url1("http://maps.google.com/#a"); |
| 280 GURL singleton_ref_url2("http://maps.google.com/#b"); | 282 GURL singleton_ref_url2("http://maps.google.com/#b"); |
| 281 GURL singleton_ref_url3("http://maps.google.com/"); | 283 GURL singleton_ref_url3("http://maps.google.com/"); |
| 282 | 284 |
| 283 chrome::AddSelectedTabWithURL(browser(), singleton_ref_url1, | 285 chrome::AddSelectedTabWithURL(browser(), singleton_ref_url1, |
| 284 ui::PAGE_TRANSITION_LINK); | 286 ui::PAGE_TRANSITION_LINK); |
| 285 | 287 |
| 286 // We should have one browser with 2 tabs, 2nd selected. | 288 // We should have one browser with 2 tabs, 2nd selected. |
| 287 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 289 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 288 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 290 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 289 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 291 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 290 | 292 |
| 291 // Navigate to singleton_url2. | 293 // Navigate to singleton_url2. |
| 292 chrome::NavigateParams p(MakeNavigateParams()); | 294 chrome::NavigateParams params(MakeNavigateParams()); |
| 293 p.disposition = SINGLETON_TAB; | 295 params.disposition = SINGLETON_TAB; |
| 294 p.url = singleton_ref_url2; | 296 params.url = singleton_ref_url2; |
| 295 chrome::Navigate(&p); | 297 chrome::Navigate(¶ms); |
| 296 | 298 |
| 297 // We should now have 2 tabs, the 2nd one selected. | 299 // We should now have 2 tabs, the 2nd one selected. |
| 298 EXPECT_EQ(browser(), p.browser); | 300 EXPECT_EQ(browser(), params.browser); |
| 299 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 301 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 300 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 302 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 301 | 303 |
| 302 // Navigate to singleton_url2, but with respect ref set. | 304 // Navigate to singleton_url2, but with respect ref set. |
| 303 p = MakeNavigateParams(); | 305 params = MakeNavigateParams(); |
| 304 p.disposition = SINGLETON_TAB; | 306 params.disposition = SINGLETON_TAB; |
| 305 p.url = singleton_ref_url2; | 307 params.url = singleton_ref_url2; |
| 306 p.ref_behavior = chrome::NavigateParams::RESPECT_REF; | 308 params.ref_behavior = chrome::NavigateParams::RESPECT_REF; |
| 307 chrome::Navigate(&p); | 309 chrome::Navigate(¶ms); |
| 308 | 310 |
| 309 // We should now have 3 tabs, the 3th one selected. | 311 // We should now have 3 tabs, the 3th one selected. |
| 310 EXPECT_EQ(browser(), p.browser); | 312 EXPECT_EQ(browser(), params.browser); |
| 311 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 313 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 312 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 314 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 313 | 315 |
| 314 // Navigate to singleton_url3. | 316 // Navigate to singleton_url3. |
| 315 p = MakeNavigateParams(); | 317 params = MakeNavigateParams(); |
| 316 p.disposition = SINGLETON_TAB; | 318 params.disposition = SINGLETON_TAB; |
| 317 p.url = singleton_ref_url3; | 319 params.url = singleton_ref_url3; |
| 318 p.ref_behavior = chrome::NavigateParams::RESPECT_REF; | 320 params.ref_behavior = chrome::NavigateParams::RESPECT_REF; |
| 319 chrome::Navigate(&p); | 321 chrome::Navigate(¶ms); |
| 320 | 322 |
| 321 // We should now have 4 tabs, the 4th one selected. | 323 // We should now have 4 tabs, the 4th one selected. |
| 322 EXPECT_EQ(browser(), p.browser); | 324 EXPECT_EQ(browser(), params.browser); |
| 323 EXPECT_EQ(4, browser()->tab_strip_model()->count()); | 325 EXPECT_EQ(4, browser()->tab_strip_model()->count()); |
| 324 EXPECT_EQ(3, browser()->tab_strip_model()->active_index()); | 326 EXPECT_EQ(3, browser()->tab_strip_model()->active_index()); |
| 325 } | 327 } |
| 326 | 328 |
| 327 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 329 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 328 Disposition_SingletonTabNoneExisting) { | 330 Disposition_SingletonTabNoneExisting) { |
| 329 GURL singleton_url1("http://maps.google.com/"); | 331 GURL singleton_url1("http://maps.google.com/"); |
| 330 | 332 |
| 331 // We should have one browser with 1 tab. | 333 // We should have one browser with 1 tab. |
| 332 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 334 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 333 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); | 335 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 334 | 336 |
| 335 // Navigate to singleton_url1. | 337 // Navigate to singleton_url1. |
| 336 chrome::NavigateParams p(MakeNavigateParams()); | 338 chrome::NavigateParams params(MakeNavigateParams()); |
| 337 p.disposition = SINGLETON_TAB; | 339 params.disposition = SINGLETON_TAB; |
| 338 p.url = singleton_url1; | 340 params.url = singleton_url1; |
| 339 chrome::Navigate(&p); | 341 chrome::Navigate(¶ms); |
| 340 | 342 |
| 341 // We should now have 2 tabs, the 2nd one selected. | 343 // We should now have 2 tabs, the 2nd one selected. |
| 342 EXPECT_EQ(browser(), p.browser); | 344 EXPECT_EQ(browser(), params.browser); |
| 343 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 345 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 344 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 346 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 345 } | 347 } |
| 346 | 348 |
| 347 // This test verifies that when a navigation results in a foreground tab, the | 349 // This test verifies that when a navigation results in a foreground tab, the |
| 348 // tab count of the Browser increases and the selected tab shifts to the new | 350 // tab count of the Browser increases and the selected tab shifts to the new |
| 349 // foreground tab. | 351 // foreground tab. |
| 350 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewForegroundTab) { | 352 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewForegroundTab) { |
| 351 WebContents* old_contents = | 353 WebContents* old_contents = |
| 352 browser()->tab_strip_model()->GetActiveWebContents(); | 354 browser()->tab_strip_model()->GetActiveWebContents(); |
| 353 chrome::NavigateParams p(MakeNavigateParams()); | 355 chrome::NavigateParams params(MakeNavigateParams()); |
| 354 p.disposition = NEW_FOREGROUND_TAB; | 356 params.disposition = NEW_FOREGROUND_TAB; |
| 355 chrome::Navigate(&p); | 357 chrome::Navigate(¶ms); |
| 356 EXPECT_NE(old_contents, | 358 EXPECT_NE(old_contents, |
| 357 browser()->tab_strip_model()->GetActiveWebContents()); | 359 browser()->tab_strip_model()->GetActiveWebContents()); |
| 358 EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(), | 360 EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(), |
| 359 p.target_contents); | 361 params.target_contents); |
| 360 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 362 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 361 } | 363 } |
| 362 | 364 |
| 363 // This test verifies that when a navigation results in a background tab, the | 365 // This test verifies that when a navigation results in a background tab, the |
| 364 // tab count of the Browser increases but the selected tab remains the same. | 366 // tab count of the Browser increases but the selected tab remains the same. |
| 365 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewBackgroundTab) { | 367 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewBackgroundTab) { |
| 366 WebContents* old_contents = | 368 WebContents* old_contents = |
| 367 browser()->tab_strip_model()->GetActiveWebContents(); | 369 browser()->tab_strip_model()->GetActiveWebContents(); |
| 368 chrome::NavigateParams p(MakeNavigateParams()); | 370 chrome::NavigateParams params(MakeNavigateParams()); |
| 369 p.disposition = NEW_BACKGROUND_TAB; | 371 params.disposition = NEW_BACKGROUND_TAB; |
| 370 chrome::Navigate(&p); | 372 chrome::Navigate(¶ms); |
| 371 WebContents* new_contents = | 373 WebContents* new_contents = |
| 372 browser()->tab_strip_model()->GetActiveWebContents(); | 374 browser()->tab_strip_model()->GetActiveWebContents(); |
| 373 // The selected tab should have remained unchanged, since the new tab was | 375 // The selected tab should have remained unchanged, since the new tab was |
| 374 // opened in the background. | 376 // opened in the background. |
| 375 EXPECT_EQ(old_contents, new_contents); | 377 EXPECT_EQ(old_contents, new_contents); |
| 376 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 378 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 377 } | 379 } |
| 378 | 380 |
| 379 // This test verifies that when a navigation requiring a new foreground tab | 381 // This test verifies that when a navigation requiring a new foreground tab |
| 380 // occurs in a Browser that cannot host multiple tabs, the new foreground tab | 382 // occurs in a Browser that cannot host multiple tabs, the new foreground tab |
| 381 // is created in an existing compatible Browser. | 383 // is created in an existing compatible Browser. |
| 382 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 384 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 383 Disposition_IncompatibleWindow_Existing) { | 385 Disposition_IncompatibleWindow_Existing) { |
| 384 // Open a foreground tab in a window that cannot open popups when there is an | 386 // Open a foreground tab in a window that cannot open popups when there is an |
| 385 // existing compatible window somewhere else that they can be opened within. | 387 // existing compatible window somewhere else that they can be opened within. |
| 386 Browser* popup = CreateEmptyBrowserForType(Browser::TYPE_POPUP, | 388 Browser* popup = CreateEmptyBrowserForType(Browser::TYPE_POPUP, |
| 387 browser()->profile()); | 389 browser()->profile()); |
| 388 chrome::NavigateParams p(MakeNavigateParams(popup)); | 390 chrome::NavigateParams params(MakeNavigateParams(popup)); |
| 389 p.disposition = NEW_FOREGROUND_TAB; | 391 params.disposition = NEW_FOREGROUND_TAB; |
| 390 chrome::Navigate(&p); | 392 chrome::Navigate(¶ms); |
| 391 | 393 |
| 392 // Navigate() should have opened the tab in a different browser since the | 394 // Navigate() should have opened the tab in a different browser since the |
| 393 // one we supplied didn't support additional tabs. | 395 // one we supplied didn't support additional tabs. |
| 394 EXPECT_NE(popup, p.browser); | 396 EXPECT_NE(popup, params.browser); |
| 395 | 397 |
| 396 // Since browser() is an existing compatible tabbed browser, it should have | 398 // Since browser() is an existing compatible tabbed browser, it should have |
| 397 // opened the tab there. | 399 // opened the tab there. |
| 398 EXPECT_EQ(browser(), p.browser); | 400 EXPECT_EQ(browser(), params.browser); |
| 399 | 401 |
| 400 // We should be left with 2 windows, the popup with one tab and the browser() | 402 // We should be left with 2 windows, the popup with one tab and the browser() |
| 401 // provided by the framework with two. | 403 // provided by the framework with two. |
| 402 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 404 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 403 EXPECT_EQ(1, popup->tab_strip_model()->count()); | 405 EXPECT_EQ(1, popup->tab_strip_model()->count()); |
| 404 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 406 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 405 } | 407 } |
| 406 | 408 |
| 407 // This test verifies that when a navigation requiring a new foreground tab | 409 // This test verifies that when a navigation requiring a new foreground tab |
| 408 // occurs in a Browser that cannot host multiple tabs and no compatible Browser | 410 // occurs in a Browser that cannot host multiple tabs and no compatible Browser |
| 409 // that can is open, a compatible Browser is created. | 411 // that can is open, a compatible Browser is created. |
| 410 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 412 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 411 Disposition_IncompatibleWindow_NoExisting) { | 413 Disposition_IncompatibleWindow_NoExisting) { |
| 412 // We want to simulate not being able to find an existing window compatible | 414 // We want to simulate not being able to find an existing window compatible |
| 413 // with our non-tabbed browser window so Navigate() is forced to create a | 415 // with our non-tabbed browser window so Navigate() is forced to create a |
| 414 // new compatible window. Because browser() supplied by the in-process | 416 // new compatible window. Because browser() supplied by the in-process |
| 415 // browser testing framework is compatible with browser()->profile(), we | 417 // browser testing framework is compatible with browser()->profile(), we |
| 416 // need a different profile, and creating a popup window with an incognito | 418 // need a different profile, and creating a popup window with an incognito |
| 417 // profile is a quick and dirty way of achieving this. | 419 // profile is a quick and dirty way of achieving this. |
| 418 Browser* popup = CreateEmptyBrowserForType( | 420 Browser* popup = CreateEmptyBrowserForType( |
| 419 Browser::TYPE_POPUP, | 421 Browser::TYPE_POPUP, |
| 420 browser()->profile()->GetOffTheRecordProfile()); | 422 browser()->profile()->GetOffTheRecordProfile()); |
| 421 chrome::NavigateParams p(MakeNavigateParams(popup)); | 423 chrome::NavigateParams params(MakeNavigateParams(popup)); |
| 422 p.disposition = NEW_FOREGROUND_TAB; | 424 params.disposition = NEW_FOREGROUND_TAB; |
| 423 chrome::Navigate(&p); | 425 chrome::Navigate(¶ms); |
| 424 | 426 |
| 425 // Navigate() should have opened the tab in a different browser since the | 427 // Navigate() should have opened the tab in a different browser since the |
| 426 // one we supplied didn't support additional tabs. | 428 // one we supplied didn't support additional tabs. |
| 427 EXPECT_NE(popup, p.browser); | 429 EXPECT_NE(popup, params.browser); |
| 428 | 430 |
| 429 // This time, browser() is _not_ compatible with popup since it is not an | 431 // This time, browser() is _not_ compatible with popup since it is not an |
| 430 // incognito window. | 432 // incognito window. |
| 431 EXPECT_NE(browser(), p.browser); | 433 EXPECT_NE(browser(), params.browser); |
| 432 | 434 |
| 433 // We should have three windows, each with one tab: | 435 // We should have three windows, each with one tab: |
| 434 // 1. the browser() provided by the framework (unchanged in this test) | 436 // 1. the browser() provided by the framework (unchanged in this test) |
| 435 // 2. the incognito popup we created originally | 437 // 2. the incognito popup we created originally |
| 436 // 3. the new incognito tabbed browser that was created by Navigate(). | 438 // 3. the new incognito tabbed browser that was created by Navigate(). |
| 437 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); | 439 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); |
| 438 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 440 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 439 EXPECT_EQ(1, popup->tab_strip_model()->count()); | 441 EXPECT_EQ(1, popup->tab_strip_model()->count()); |
| 440 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 442 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 441 EXPECT_TRUE(p.browser->is_type_tabbed()); | 443 EXPECT_TRUE(params.browser->is_type_tabbed()); |
| 442 } | 444 } |
| 443 | 445 |
| 444 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 446 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 445 // from a normal Browser results in a new Browser with TYPE_POPUP. | 447 // from a normal Browser results in a new Browser with TYPE_POPUP. |
| 446 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup) { | 448 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup) { |
| 447 chrome::NavigateParams p(MakeNavigateParams()); | 449 chrome::NavigateParams params(MakeNavigateParams()); |
| 448 p.disposition = NEW_POPUP; | 450 params.disposition = NEW_POPUP; |
| 449 p.window_bounds = gfx::Rect(0, 0, 200, 200); | 451 params.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 450 // Wait for new popup to to load and gain focus. | 452 // Wait for new popup to to load and gain focus. |
| 451 ui_test_utils::NavigateToURL(&p); | 453 ui_test_utils::NavigateToURL(¶ms); |
| 452 | 454 |
| 453 // Navigate() should have opened a new, focused popup window. | 455 // Navigate() should have opened a new, focused popup window. |
| 454 EXPECT_NE(browser(), p.browser); | 456 EXPECT_NE(browser(), params.browser); |
| 455 #if 0 | 457 #if 0 |
| 456 // TODO(stevenjb): Enable this test. See: crbug.com/79493 | 458 // TODO(stevenjb): Enable this test. See: crbug.com/79493 |
| 457 EXPECT_TRUE(p.browser->window()->IsActive()); | 459 EXPECT_TRUE(browser->window()->IsActive()); |
| 458 #endif | 460 #endif |
| 459 EXPECT_TRUE(p.browser->is_type_popup()); | 461 EXPECT_TRUE(params.browser->is_type_popup()); |
| 460 EXPECT_FALSE(p.browser->is_app()); | 462 EXPECT_FALSE(params.browser->is_app()); |
| 461 | 463 |
| 462 // We should have two windows, the browser() provided by the framework and the | 464 // We should have two windows, the browser() provided by the framework and the |
| 463 // new popup window. | 465 // new popup window. |
| 464 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 466 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 465 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 467 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 466 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 468 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 467 } | 469 } |
| 468 | 470 |
| 469 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 471 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 470 // from a normal Browser results in a new Browser with is_app() true. | 472 // from a normal Browser results in a new Browser with is_app() true. |
| 471 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup_ExtensionId) { | 473 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup_ExtensionId) { |
| 472 chrome::NavigateParams p(MakeNavigateParams()); | 474 chrome::NavigateParams params(MakeNavigateParams()); |
| 473 p.disposition = NEW_POPUP; | 475 params.disposition = NEW_POPUP; |
| 474 p.extension_app_id = "extensionappid"; | 476 params.extension_app_id = "extensionappid"; |
| 475 p.window_bounds = gfx::Rect(0, 0, 200, 200); | 477 params.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 476 // Wait for new popup to to load and gain focus. | 478 // Wait for new popup to to load and gain focus. |
| 477 ui_test_utils::NavigateToURL(&p); | 479 ui_test_utils::NavigateToURL(¶ms); |
| 478 | 480 |
| 479 // Navigate() should have opened a new, focused popup window. | 481 // Navigate() should have opened a new, focused popup window. |
| 480 EXPECT_NE(browser(), p.browser); | 482 EXPECT_NE(browser(), params.browser); |
| 481 EXPECT_TRUE(p.browser->is_type_popup()); | 483 EXPECT_TRUE(params.browser->is_type_popup()); |
| 482 EXPECT_TRUE(p.browser->is_app()); | 484 EXPECT_TRUE(params.browser->is_app()); |
| 483 | 485 |
| 484 // We should have two windows, the browser() provided by the framework and the | 486 // We should have two windows, the browser() provided by the framework and the |
| 485 // new popup window. | 487 // new popup window. |
| 486 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 488 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 487 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 489 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 488 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 490 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 489 } | 491 } |
| 490 | 492 |
| 491 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 493 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 492 // from a normal popup results in a new Browser with TYPE_POPUP. | 494 // from a normal popup results in a new Browser with TYPE_POPUP. |
| 493 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupFromPopup) { | 495 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupFromPopup) { |
| 494 // Open a popup. | 496 // Open a popup. |
| 495 chrome::NavigateParams p1(MakeNavigateParams()); | 497 chrome::NavigateParams params1(MakeNavigateParams()); |
| 496 p1.disposition = NEW_POPUP; | 498 params1.disposition = NEW_POPUP; |
| 497 p1.window_bounds = gfx::Rect(0, 0, 200, 200); | 499 params1.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 498 chrome::Navigate(&p1); | 500 chrome::Navigate(¶ms1); |
| 499 // Open another popup. | 501 // Open another popup. |
| 500 chrome::NavigateParams p2(MakeNavigateParams(p1.browser)); | 502 chrome::NavigateParams params2(MakeNavigateParams(params1.browser)); |
| 501 p2.disposition = NEW_POPUP; | 503 params2.disposition = NEW_POPUP; |
| 502 p2.window_bounds = gfx::Rect(0, 0, 200, 200); | 504 params2.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 503 chrome::Navigate(&p2); | 505 chrome::Navigate(¶ms2); |
| 504 | 506 |
| 505 // Navigate() should have opened a new normal popup window. | 507 // Navigate() should have opened a new normal popup window. |
| 506 EXPECT_NE(p1.browser, p2.browser); | 508 EXPECT_NE(params1.browser, params2.browser); |
| 507 EXPECT_TRUE(p2.browser->is_type_popup()); | 509 EXPECT_TRUE(params2.browser->is_type_popup()); |
| 508 EXPECT_FALSE(p2.browser->is_app()); | 510 EXPECT_FALSE(params2.browser->is_app()); |
| 509 | 511 |
| 510 // We should have three windows, the browser() provided by the framework, | 512 // We should have three windows, the browser() provided by the framework, |
| 511 // the first popup window, and the second popup window. | 513 // the first popup window, and the second popup window. |
| 512 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); | 514 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); |
| 513 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 515 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 514 EXPECT_EQ(1, p1.browser->tab_strip_model()->count()); | 516 EXPECT_EQ(1, params1.browser->tab_strip_model()->count()); |
| 515 EXPECT_EQ(1, p2.browser->tab_strip_model()->count()); | 517 EXPECT_EQ(1, params2.browser->tab_strip_model()->count()); |
| 516 } | 518 } |
| 517 | 519 |
| 518 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 520 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 519 // from an app frame results in a new Browser with TYPE_POPUP. | 521 // from an app frame results in a new Browser with TYPE_POPUP. |
| 520 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 522 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 521 Disposition_NewPopupFromAppWindow) { | 523 Disposition_NewPopupFromAppWindow) { |
| 522 Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile()); | 524 Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile()); |
| 523 chrome::NavigateParams p(MakeNavigateParams(app_browser)); | 525 chrome::NavigateParams params(MakeNavigateParams(app_browser)); |
| 524 p.disposition = NEW_POPUP; | 526 params.disposition = NEW_POPUP; |
| 525 p.window_bounds = gfx::Rect(0, 0, 200, 200); | 527 params.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 526 chrome::Navigate(&p); | 528 chrome::Navigate(¶ms); |
| 527 | 529 |
| 528 // Navigate() should have opened a new popup app window. | 530 // Navigate() should have opened a new popup app window. |
| 529 EXPECT_NE(app_browser, p.browser); | 531 EXPECT_NE(app_browser, params.browser); |
| 530 EXPECT_NE(browser(), p.browser); | 532 EXPECT_NE(browser(), params.browser); |
| 531 EXPECT_TRUE(p.browser->is_type_popup()); | 533 EXPECT_TRUE(params.browser->is_type_popup()); |
| 532 EXPECT_TRUE(p.browser->is_app()); | 534 EXPECT_TRUE(params.browser->is_app()); |
| 533 | 535 |
| 534 // We should now have three windows, the app window, the app popup it created, | 536 // We should now have three windows, the app window, the app popup it created, |
| 535 // and the original browser() provided by the framework. | 537 // and the original browser() provided by the framework. |
| 536 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); | 538 EXPECT_EQ(3u, chrome::GetTotalBrowserCount()); |
| 537 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 539 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 538 EXPECT_EQ(1, app_browser->tab_strip_model()->count()); | 540 EXPECT_EQ(1, app_browser->tab_strip_model()->count()); |
| 539 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 541 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 540 } | 542 } |
| 541 | 543 |
| 542 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 544 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 543 // from an app popup results in a new Browser also of TYPE_POPUP. | 545 // from an app popup results in a new Browser also of TYPE_POPUP. |
| 544 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 546 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 545 Disposition_NewPopupFromAppPopup) { | 547 Disposition_NewPopupFromAppPopup) { |
| 546 Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile()); | 548 Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile()); |
| 547 // Open an app popup. | 549 // Open an app popup. |
| 548 chrome::NavigateParams p1(MakeNavigateParams(app_browser)); | 550 chrome::NavigateParams params1(MakeNavigateParams(app_browser)); |
| 549 p1.disposition = NEW_POPUP; | 551 params1.disposition = NEW_POPUP; |
| 550 p1.window_bounds = gfx::Rect(0, 0, 200, 200); | 552 params1.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 551 chrome::Navigate(&p1); | 553 chrome::Navigate(¶ms1); |
| 552 // Now open another app popup. | 554 // Now open another app popup. |
| 553 chrome::NavigateParams p2(MakeNavigateParams(p1.browser)); | 555 chrome::NavigateParams params2(MakeNavigateParams(params1.browser)); |
| 554 p2.disposition = NEW_POPUP; | 556 params2.disposition = NEW_POPUP; |
| 555 p2.window_bounds = gfx::Rect(0, 0, 200, 200); | 557 params2.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 556 chrome::Navigate(&p2); | 558 chrome::Navigate(¶ms2); |
| 557 | 559 |
| 558 // Navigate() should have opened a new popup app window. | 560 // Navigate() should have opened a new popup app window. |
| 559 EXPECT_NE(browser(), p1.browser); | 561 EXPECT_NE(browser(), params1.browser); |
| 560 EXPECT_NE(p1.browser, p2.browser); | 562 EXPECT_NE(params1.browser, params2.browser); |
| 561 EXPECT_TRUE(p2.browser->is_type_popup()); | 563 EXPECT_TRUE(params2.browser->is_type_popup()); |
| 562 EXPECT_TRUE(p2.browser->is_app()); | 564 EXPECT_TRUE(params2.browser->is_app()); |
| 563 | 565 |
| 564 // We should now have four windows, the app window, the first app popup, | 566 // We should now have four windows, the app window, the first app popup, |
| 565 // the second app popup, and the original browser() provided by the framework. | 567 // the second app popup, and the original browser() provided by the framework. |
| 566 EXPECT_EQ(4u, chrome::GetTotalBrowserCount()); | 568 EXPECT_EQ(4u, chrome::GetTotalBrowserCount()); |
| 567 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 569 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 568 EXPECT_EQ(1, app_browser->tab_strip_model()->count()); | 570 EXPECT_EQ(1, app_browser->tab_strip_model()->count()); |
| 569 EXPECT_EQ(1, p1.browser->tab_strip_model()->count()); | 571 EXPECT_EQ(1, params1.browser->tab_strip_model()->count()); |
| 570 EXPECT_EQ(1, p2.browser->tab_strip_model()->count()); | 572 EXPECT_EQ(1, params2.browser->tab_strip_model()->count()); |
| 571 } | 573 } |
| 572 | 574 |
| 573 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 575 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 574 // from an extension app tab results in a new Browser with TYPE_APP_POPUP. | 576 // from an extension app tab results in a new Browser with TYPE_APP_POPUP. |
| 575 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 577 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 576 Disposition_NewPopupFromExtensionApp) { | 578 Disposition_NewPopupFromExtensionApp) { |
| 577 // TODO(beng): TBD. | 579 // TODO(beng): TBD. |
| 578 } | 580 } |
| 579 | 581 |
| 580 // This test verifies that navigating with window_action = SHOW_WINDOW_INACTIVE | 582 // This test verifies that navigating with window_action = SHOW_WINDOW_INACTIVE |
| 581 // does not focus a new new popup window. | 583 // does not focus a new new popup window. |
| 582 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupUnfocused) { | 584 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupUnfocused) { |
| 583 chrome::NavigateParams p(MakeNavigateParams()); | 585 chrome::NavigateParams params(MakeNavigateParams()); |
| 584 p.disposition = NEW_POPUP; | 586 params.disposition = NEW_POPUP; |
| 585 p.window_bounds = gfx::Rect(0, 0, 200, 200); | 587 params.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 586 p.window_action = chrome::NavigateParams::SHOW_WINDOW_INACTIVE; | 588 params.window_action = chrome::NavigateParams::SHOW_WINDOW_INACTIVE; |
| 587 // Wait for new popup to load (and gain focus if the test fails). | 589 // Wait for new popup to load (and gain focus if the test fails). |
| 588 ui_test_utils::NavigateToURL(&p); | 590 ui_test_utils::NavigateToURL(¶ms); |
| 589 | 591 |
| 590 // Navigate() should have opened a new, unfocused, popup window. | 592 // Navigate() should have opened a new, unfocused, popup window. |
| 591 EXPECT_NE(browser(), p.browser); | 593 EXPECT_NE(browser(), params.browser); |
| 592 EXPECT_EQ(Browser::TYPE_POPUP, p.browser->type()); | 594 EXPECT_EQ(Browser::TYPE_POPUP, params.browser->type()); |
| 593 #if 0 | 595 #if 0 |
| 594 // TODO(stevenjb): Enable this test. See: crbug.com/79493 | 596 // TODO(stevenjb): Enable this test. See: crbug.com/79493 |
| 595 EXPECT_FALSE(p.browser->window()->IsActive()); | 597 EXPECT_FALSE(p.browser->window()->IsActive()); |
| 596 #endif | 598 #endif |
| 597 } | 599 } |
| 598 | 600 |
| 599 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP | 601 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
| 600 // and trusted_source = true results in a new Browser where is_trusted_source() | 602 // and trusted_source = true results in a new Browser where is_trusted_source() |
| 601 // is true. | 603 // is true. |
| 602 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupTrusted) { | 604 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupTrusted) { |
| 603 chrome::NavigateParams p(MakeNavigateParams()); | 605 chrome::NavigateParams params(MakeNavigateParams()); |
| 604 p.disposition = NEW_POPUP; | 606 params.disposition = NEW_POPUP; |
| 605 p.trusted_source = true; | 607 params.trusted_source = true; |
| 606 p.window_bounds = gfx::Rect(0, 0, 200, 200); | 608 params.window_bounds = gfx::Rect(0, 0, 200, 200); |
| 607 // Wait for new popup to to load and gain focus. | 609 // Wait for new popup to to load and gain focus. |
| 608 ui_test_utils::NavigateToURL(&p); | 610 ui_test_utils::NavigateToURL(¶ms); |
| 609 | 611 |
| 610 // Navigate() should have opened a new popup window of TYPE_TRUSTED_POPUP. | 612 // Navigate() should have opened a new popup window of TYPE_TRUSTED_POPUP. |
| 611 EXPECT_NE(browser(), p.browser); | 613 EXPECT_NE(browser(), params.browser); |
| 612 EXPECT_TRUE(p.browser->is_type_popup()); | 614 EXPECT_TRUE(params.browser->is_type_popup()); |
| 613 EXPECT_TRUE(p.browser->is_trusted_source()); | 615 EXPECT_TRUE(params.browser->is_trusted_source()); |
| 614 } | 616 } |
| 615 | 617 |
| 616 | 618 |
| 617 // This test verifies that navigating with WindowOpenDisposition = NEW_WINDOW | 619 // This test verifies that navigating with WindowOpenDisposition = NEW_WINDOW |
| 618 // always opens a new window. | 620 // always opens a new window. |
| 619 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewWindow) { | 621 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewWindow) { |
| 620 chrome::NavigateParams p(MakeNavigateParams()); | 622 chrome::NavigateParams params(MakeNavigateParams()); |
| 621 p.disposition = NEW_WINDOW; | 623 params.disposition = NEW_WINDOW; |
| 622 chrome::Navigate(&p); | 624 chrome::Navigate(¶ms); |
| 623 | 625 |
| 624 // Navigate() should have opened a new toplevel window. | 626 // Navigate() should have opened a new toplevel window. |
| 625 EXPECT_NE(browser(), p.browser); | 627 EXPECT_NE(browser(), params.browser); |
| 626 EXPECT_TRUE(p.browser->is_type_tabbed()); | 628 EXPECT_TRUE(params.browser->is_type_tabbed()); |
| 627 | 629 |
| 628 // We should now have two windows, the browser() provided by the framework and | 630 // We should now have two windows, the browser() provided by the framework and |
| 629 // the new normal window. | 631 // the new normal window. |
| 630 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 632 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 631 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 633 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 632 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 634 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 633 } | 635 } |
| 634 | 636 |
| 635 // This test verifies that navigating with WindowOpenDisposition = INCOGNITO | 637 // This test verifies that navigating with WindowOpenDisposition = INCOGNITO |
| 636 // opens a new incognito window if no existing incognito window is present. | 638 // opens a new incognito window if no existing incognito window is present. |
| 637 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_Incognito) { | 639 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_Incognito) { |
| 638 chrome::NavigateParams p(MakeNavigateParams()); | 640 chrome::NavigateParams params(MakeNavigateParams()); |
| 639 p.disposition = OFF_THE_RECORD; | 641 params.disposition = OFF_THE_RECORD; |
| 640 chrome::Navigate(&p); | 642 chrome::Navigate(¶ms); |
| 641 | 643 |
| 642 // Navigate() should have opened a new toplevel incognito window. | 644 // Navigate() should have opened a new toplevel incognito window. |
| 643 EXPECT_NE(browser(), p.browser); | 645 EXPECT_NE(browser(), params.browser); |
| 644 EXPECT_EQ(browser()->profile()->GetOffTheRecordProfile(), | 646 EXPECT_EQ(browser()->profile()->GetOffTheRecordProfile(), |
| 645 p.browser->profile()); | 647 params.browser->profile()); |
| 646 | 648 |
| 647 // |source_contents| should be set to NULL because the profile for the new | 649 // |source_contents| should be set to NULL because the profile for the new |
| 648 // page is different from the originating page. | 650 // page is different from the originating page. |
| 649 EXPECT_EQ(NULL, p.source_contents); | 651 EXPECT_EQ(NULL, params.source_contents); |
| 650 | 652 |
| 651 // We should now have two windows, the browser() provided by the framework and | 653 // We should now have two windows, the browser() provided by the framework and |
| 652 // the new incognito window. | 654 // the new incognito window. |
| 653 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 655 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 654 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 656 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 655 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 657 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 656 } | 658 } |
| 657 | 659 |
| 658 // This test verifies that navigating with WindowOpenDisposition = INCOGNITO | 660 // This test verifies that navigating with WindowOpenDisposition = INCOGNITO |
| 659 // reuses an existing incognito window when possible. | 661 // reuses an existing incognito window when possible. |
| 660 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_IncognitoRefocus) { | 662 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_IncognitoRefocus) { |
| 661 Browser* incognito_browser = | 663 Browser* incognito_browser = |
| 662 CreateEmptyBrowserForType(Browser::TYPE_TABBED, | 664 CreateEmptyBrowserForType(Browser::TYPE_TABBED, |
| 663 browser()->profile()->GetOffTheRecordProfile()); | 665 browser()->profile()->GetOffTheRecordProfile()); |
| 664 chrome::NavigateParams p(MakeNavigateParams()); | 666 chrome::NavigateParams params(MakeNavigateParams()); |
| 665 p.disposition = OFF_THE_RECORD; | 667 params.disposition = OFF_THE_RECORD; |
| 666 chrome::Navigate(&p); | 668 chrome::Navigate(¶ms); |
| 667 | 669 |
| 668 // Navigate() should have opened a new tab in the existing incognito window. | 670 // Navigate() should have opened a new tab in the existing incognito window. |
| 669 EXPECT_NE(browser(), p.browser); | 671 EXPECT_NE(browser(), params.browser); |
| 670 EXPECT_EQ(p.browser, incognito_browser); | 672 EXPECT_EQ(params.browser, incognito_browser); |
| 671 | 673 |
| 672 // We should now have two windows, the browser() provided by the framework and | 674 // We should now have two windows, the browser() provided by the framework and |
| 673 // the incognito window we opened earlier. | 675 // the incognito window we opened earlier. |
| 674 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 676 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 675 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 677 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 676 EXPECT_EQ(2, incognito_browser->tab_strip_model()->count()); | 678 EXPECT_EQ(2, incognito_browser->tab_strip_model()->count()); |
| 677 } | 679 } |
| 678 | 680 |
| 679 // This test verifies that no navigation action occurs when | 681 // This test verifies that no navigation action occurs when |
| 680 // WindowOpenDisposition = SUPPRESS_OPEN. | 682 // WindowOpenDisposition = SUPPRESS_OPEN. |
| 681 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_SuppressOpen) { | 683 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_SuppressOpen) { |
| 682 RunSuppressTest(SUPPRESS_OPEN); | 684 RunSuppressTest(SUPPRESS_OPEN); |
| 683 } | 685 } |
| 684 | 686 |
| 685 // This test verifies that no navigation action occurs when | 687 // This test verifies that no navigation action occurs when |
| 686 // WindowOpenDisposition = SAVE_TO_DISK. | 688 // WindowOpenDisposition = SAVE_TO_DISK. |
| 687 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_SaveToDisk) { | 689 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_SaveToDisk) { |
| 688 RunSuppressTest(SAVE_TO_DISK); | 690 RunSuppressTest(SAVE_TO_DISK); |
| 689 } | 691 } |
| 690 | 692 |
| 691 // This test verifies that no navigation action occurs when | 693 // This test verifies that no navigation action occurs when |
| 692 // WindowOpenDisposition = IGNORE_ACTION. | 694 // WindowOpenDisposition = IGNORE_ACTION. |
| 693 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_IgnoreAction) { | 695 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_IgnoreAction) { |
| 694 RunSuppressTest(IGNORE_ACTION); | 696 RunSuppressTest(IGNORE_ACTION); |
| 695 } | 697 } |
| 696 | 698 |
| 697 // This tests adding a foreground tab with a predefined WebContents. | 699 // This tests adding a foreground tab with a predefined WebContents. |
| 698 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, TargetContents_ForegroundTab) { | 700 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, TargetContents_ForegroundTab) { |
| 699 chrome::NavigateParams p(MakeNavigateParams()); | 701 chrome::NavigateParams params(MakeNavigateParams()); |
| 700 p.disposition = NEW_FOREGROUND_TAB; | 702 params.disposition = NEW_FOREGROUND_TAB; |
| 701 p.target_contents = CreateWebContents(); | 703 params.target_contents = CreateWebContents(); |
| 702 chrome::Navigate(&p); | 704 chrome::Navigate(¶ms); |
| 703 | 705 |
| 704 // Navigate() should have opened the contents in a new foreground in the | 706 // Navigate() should have opened the contents in a new foreground in the |
| 705 // current Browser. | 707 // current Browser. |
| 706 EXPECT_EQ(browser(), p.browser); | 708 EXPECT_EQ(browser(), params.browser); |
| 707 EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(), | 709 EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(), |
| 708 p.target_contents); | 710 params.target_contents); |
| 709 | 711 |
| 710 // We should have one window, with two tabs. | 712 // We should have one window, with two tabs. |
| 711 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 713 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 712 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 714 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 713 } | 715 } |
| 714 | 716 |
| 715 #if defined(OS_WIN) | 717 #if defined(OS_WIN) |
| 716 // This tests adding a popup with a predefined WebContents. | 718 // This tests adding a popup with a predefined WebContents. |
| 717 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, DISABLED_TargetContents_Popup) { | 719 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, DISABLED_TargetContents_Popup) { |
| 718 chrome::NavigateParams p(MakeNavigateParams()); | 720 chrome::NavigateParams params(MakeNavigateParams()); |
| 719 p.disposition = NEW_POPUP; | 721 params.disposition = NEW_POPUP; |
| 720 p.target_contents = CreateWebContents(); | 722 params.target_contents = CreateWebContents(); |
| 721 p.window_bounds = gfx::Rect(10, 10, 500, 500); | 723 params.window_bounds = gfx::Rect(10, 10, 500, 500); |
| 722 chrome::Navigate(&p); | 724 chrome::Navigate(¶ms); |
| 723 | 725 |
| 724 // Navigate() should have opened a new popup window. | 726 // Navigate() should have opened a new popup window. |
| 725 EXPECT_NE(browser(), p.browser); | 727 EXPECT_NE(browser(), params.browser); |
| 726 EXPECT_TRUE(p.browser->is_type_popup()); | 728 EXPECT_TRUE(params.browser->is_type_popup()); |
| 727 EXPECT_FALSE(p.browser->is_app()); | 729 EXPECT_FALSE(params.browser->is_app()); |
| 728 | 730 |
| 729 // The web platform is weird. The window bounds specified in | 731 // The web platform is weird. The window bounds specified in |
| 730 // |p.window_bounds| are used as follows: | 732 // |params.window_bounds| are used as follows: |
| 731 // - the origin is used to position the window | 733 // - the origin is used to position the window |
| 732 // - the size is used to size the WebContents of the window. | 734 // - the size is used to size the WebContents of the window. |
| 733 // As such the position of the resulting window will always match | 735 // As such the position of the resulting window will always match |
| 734 // p.window_bounds.origin(), but its size will not. We need to match | 736 // params.window_bounds.origin(), but its size will not. We need to match |
| 735 // the size against the selected tab's view's container size. | 737 // the size against the selected tab's view's container size. |
| 736 // Only Windows positions the window according to |p.window_bounds.origin()| - | 738 // Only Windows positions the window according to |
| 737 // on Mac the window is offset from the opener and on Linux it always opens | 739 // |params.window_bounds.origin()| - on Mac the window is offset from the |
| 738 // at 0,0. | 740 // opener and on Linux it always opens at 0,0. |
| 739 EXPECT_EQ(p.window_bounds.origin(), | 741 EXPECT_EQ(params.window_bounds.origin(), |
| 740 p.browser->window()->GetRestoredBounds().origin()); | 742 params.browser->window()->GetRestoredBounds().origin()); |
| 741 // All platforms should respect size however provided width > 400 (Mac has a | 743 // All platforms should respect size however provided width > 400 (Mac has a |
| 742 // minimum window width of 400). | 744 // minimum window width of 400). |
| 743 EXPECT_EQ(p.window_bounds.size(), | 745 EXPECT_EQ(params.window_bounds.size(), |
| 744 p.target_contents->GetContainerBounds().size()); | 746 params.target_contents->GetContainerBounds().size()); |
| 745 | 747 |
| 746 // We should have two windows, the new popup and the browser() provided by the | 748 // We should have two windows, the new popup and the browser() provided by the |
| 747 // framework. | 749 // framework. |
| 748 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); | 750 EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
| 749 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 751 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 750 EXPECT_EQ(1, p.browser->tab_strip_model()->count()); | 752 EXPECT_EQ(1, params.browser->tab_strip_model()->count()); |
| 751 } | 753 } |
| 752 #endif | 754 #endif |
| 753 | 755 |
| 754 // This tests adding a tab at a specific index. | 756 // This tests adding a tab at a specific index. |
| 755 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Tabstrip_InsertAtIndex) { | 757 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Tabstrip_InsertAtIndex) { |
| 756 // This is not meant to be a comprehensive test of whether or not the tab | 758 // This is not meant to be a comprehensive test of whether or not the tab |
| 757 // implementation of the browser observes the insertion index. That is | 759 // implementation of the browser observes the insertion index. That is |
| 758 // covered by the unit tests for TabStripModel. This merely verifies that | 760 // covered by the unit tests for TabStripModel. This merely verifies that |
| 759 // insertion index preference is reflected in common cases. | 761 // insertion index preference is reflected in common cases. |
| 760 chrome::NavigateParams p(MakeNavigateParams()); | 762 chrome::NavigateParams params(MakeNavigateParams()); |
| 761 p.disposition = NEW_FOREGROUND_TAB; | 763 params.disposition = NEW_FOREGROUND_TAB; |
| 762 p.tabstrip_index = 0; | 764 params.tabstrip_index = 0; |
| 763 p.tabstrip_add_types = TabStripModel::ADD_FORCE_INDEX; | 765 params.tabstrip_add_types = TabStripModel::ADD_FORCE_INDEX; |
| 764 chrome::Navigate(&p); | 766 chrome::Navigate(¶ms); |
| 765 | 767 |
| 766 // Navigate() should have inserted a new tab at slot 0 in the tabstrip. | 768 // Navigate() should have inserted a new tab at slot 0 in the tabstrip. |
| 767 EXPECT_EQ(browser(), p.browser); | 769 EXPECT_EQ(browser(), params.browser); |
| 768 EXPECT_EQ(0, browser()->tab_strip_model()->GetIndexOfWebContents( | 770 EXPECT_EQ(0, browser()->tab_strip_model()->GetIndexOfWebContents( |
| 769 static_cast<const WebContents*>(p.target_contents))); | 771 static_cast<const WebContents*>(params.target_contents))); |
| 770 | 772 |
| 771 // We should have one window - the browser() provided by the framework. | 773 // We should have one window - the browser() provided by the framework. |
| 772 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 774 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 773 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 775 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 774 } | 776 } |
| 775 | 777 |
| 776 // This test verifies that constructing params with disposition = SINGLETON_TAB | 778 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 777 // and IGNORE_AND_NAVIGATE opens a new tab navigated to the specified URL if | 779 // and IGNORE_AND_NAVIGATE opens a new tab navigated to the specified URL if |
| 778 // no previous tab with that URL (minus the path) exists. | 780 // no previous tab with that URL (minus the path) exists. |
| 779 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 781 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 780 Disposition_SingletonTabNew_IgnorePath) { | 782 Disposition_SingletonTabNew_IgnorePath) { |
| 781 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), | 783 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), |
| 782 ui::PAGE_TRANSITION_LINK); | 784 ui::PAGE_TRANSITION_LINK); |
| 783 | 785 |
| 784 // We should have one browser with 2 tabs, the 2nd selected. | 786 // We should have one browser with 2 tabs, the 2nd selected. |
| 785 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 787 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 786 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 788 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 787 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 789 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 788 | 790 |
| 789 // Navigate to a new singleton tab with a sub-page. | 791 // Navigate to a new singleton tab with a sub-page. |
| 790 chrome::NavigateParams p(MakeNavigateParams()); | 792 chrome::NavigateParams params(MakeNavigateParams()); |
| 791 p.disposition = SINGLETON_TAB; | 793 params.disposition = SINGLETON_TAB; |
| 792 p.url = GetContentSettingsURL(); | 794 params.url = GetContentSettingsURL(); |
| 793 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 795 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 794 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 796 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 795 chrome::Navigate(&p); | 797 chrome::Navigate(¶ms); |
| 796 | 798 |
| 797 // The last tab should now be selected and navigated to the sub-page of the | 799 // The last tab should now be selected and navigated to the sub-page of the |
| 798 // URL. | 800 // URL. |
| 799 EXPECT_EQ(browser(), p.browser); | 801 EXPECT_EQ(browser(), params.browser); |
| 800 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 802 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 801 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 803 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 802 EXPECT_EQ(GetContentSettingsURL(), | 804 EXPECT_EQ(GetContentSettingsURL(), |
| 803 ShortenUberURL(browser()->tab_strip_model()-> | 805 ShortenUberURL(browser()->tab_strip_model()-> |
| 804 GetActiveWebContents()->GetURL())); | 806 GetActiveWebContents()->GetURL())); |
| 805 } | 807 } |
| 806 | 808 |
| 807 // This test verifies that constructing params with disposition = SINGLETON_TAB | 809 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 808 // and IGNORE_AND_NAVIGATE opens an existing tab with the matching URL (minus | 810 // and IGNORE_AND_NAVIGATE opens an existing tab with the matching URL (minus |
| 809 // the path) which is navigated to the specified URL. | 811 // the path) which is navigated to the specified URL. |
| 810 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 812 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 811 Disposition_SingletonTabExisting_IgnorePath) { | 813 Disposition_SingletonTabExisting_IgnorePath) { |
| 812 GURL singleton_url1(GetSettingsURL()); | 814 GURL singleton_url1(GetSettingsURL()); |
| 813 chrome::AddSelectedTabWithURL(browser(), singleton_url1, | 815 chrome::AddSelectedTabWithURL(browser(), singleton_url1, |
| 814 ui::PAGE_TRANSITION_LINK); | 816 ui::PAGE_TRANSITION_LINK); |
| 815 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), | 817 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), |
| 816 ui::PAGE_TRANSITION_LINK); | 818 ui::PAGE_TRANSITION_LINK); |
| 817 | 819 |
| 818 // We should have one browser with 3 tabs, the 3rd selected. | 820 // We should have one browser with 3 tabs, the 3rd selected. |
| 819 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 821 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 820 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 822 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 821 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 823 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 822 | 824 |
| 823 // Navigate to singleton_url1. | 825 // Navigate to singleton_url1. |
| 824 chrome::NavigateParams p(MakeNavigateParams()); | 826 chrome::NavigateParams params(MakeNavigateParams()); |
| 825 p.disposition = SINGLETON_TAB; | 827 params.disposition = SINGLETON_TAB; |
| 826 p.url = GetContentSettingsURL(); | 828 params.url = GetContentSettingsURL(); |
| 827 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 829 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 828 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 830 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 829 chrome::Navigate(&p); | 831 chrome::Navigate(¶ms); |
| 830 | 832 |
| 831 // The middle tab should now be selected and navigated to the sub-page of the | 833 // The middle tab should now be selected and navigated to the sub-page of the |
| 832 // URL. | 834 // URL. |
| 833 EXPECT_EQ(browser(), p.browser); | 835 EXPECT_EQ(browser(), params.browser); |
| 834 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 836 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 835 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 837 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 836 EXPECT_EQ(GetContentSettingsURL(), | 838 EXPECT_EQ(GetContentSettingsURL(), |
| 837 ShortenUberURL(browser()->tab_strip_model()-> | 839 ShortenUberURL(browser()->tab_strip_model()-> |
| 838 GetActiveWebContents()->GetURL())); | 840 GetActiveWebContents()->GetURL())); |
| 839 } | 841 } |
| 840 | 842 |
| 841 // This test verifies that constructing params with disposition = SINGLETON_TAB | 843 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 842 // and IGNORE_AND_NAVIGATE opens an existing tab with the matching URL (minus | 844 // and IGNORE_AND_NAVIGATE opens an existing tab with the matching URL (minus |
| 843 // the path) which is navigated to the specified URL. | 845 // the path) which is navigated to the specified URL. |
| 844 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 846 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 845 Disposition_SingletonTabExistingSubPath_IgnorePath) { | 847 Disposition_SingletonTabExistingSubPath_IgnorePath) { |
| 846 GURL singleton_url1(GetContentSettingsURL()); | 848 GURL singleton_url1(GetContentSettingsURL()); |
| 847 chrome::AddSelectedTabWithURL(browser(), singleton_url1, | 849 chrome::AddSelectedTabWithURL(browser(), singleton_url1, |
| 848 ui::PAGE_TRANSITION_LINK); | 850 ui::PAGE_TRANSITION_LINK); |
| 849 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), | 851 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), |
| 850 ui::PAGE_TRANSITION_LINK); | 852 ui::PAGE_TRANSITION_LINK); |
| 851 | 853 |
| 852 // We should have one browser with 3 tabs, the 3rd selected. | 854 // We should have one browser with 3 tabs, the 3rd selected. |
| 853 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 855 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 854 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 856 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 855 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 857 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 856 | 858 |
| 857 // Navigate to singleton_url1. | 859 // Navigate to singleton_url1. |
| 858 chrome::NavigateParams p(MakeNavigateParams()); | 860 chrome::NavigateParams params(MakeNavigateParams()); |
| 859 p.disposition = SINGLETON_TAB; | 861 params.disposition = SINGLETON_TAB; |
| 860 p.url = GetClearBrowsingDataURL(); | 862 params.url = GetClearBrowsingDataURL(); |
| 861 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 863 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 862 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 864 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 863 chrome::Navigate(&p); | 865 chrome::Navigate(¶ms); |
| 864 | 866 |
| 865 // The middle tab should now be selected and navigated to the sub-page of the | 867 // The middle tab should now be selected and navigated to the sub-page of the |
| 866 // URL. | 868 // URL. |
| 867 EXPECT_EQ(browser(), p.browser); | 869 EXPECT_EQ(browser(), params.browser); |
| 868 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 870 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 869 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 871 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 870 EXPECT_EQ(GetClearBrowsingDataURL(), | 872 EXPECT_EQ(GetClearBrowsingDataURL(), |
| 871 ShortenUberURL(browser()->tab_strip_model()-> | 873 ShortenUberURL(browser()->tab_strip_model()-> |
| 872 GetActiveWebContents()->GetURL())); | 874 GetActiveWebContents()->GetURL())); |
| 873 } | 875 } |
| 874 | 876 |
| 875 // This test verifies that constructing params with disposition = SINGLETON_TAB | 877 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 876 // and IGNORE_AND_STAY_PUT opens an existing tab with the matching URL (minus | 878 // and IGNORE_AND_STAY_PUT opens an existing tab with the matching URL (minus |
| 877 // the path). | 879 // the path). |
| 878 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 880 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 879 Disposition_SingletonTabExistingSubPath_IgnorePath2) { | 881 Disposition_SingletonTabExistingSubPath_IgnorePath2) { |
| 880 GURL singleton_url1(GetContentSettingsURL()); | 882 GURL singleton_url1(GetContentSettingsURL()); |
| 881 chrome::AddSelectedTabWithURL(browser(), singleton_url1, | 883 chrome::AddSelectedTabWithURL(browser(), singleton_url1, |
| 882 ui::PAGE_TRANSITION_LINK); | 884 ui::PAGE_TRANSITION_LINK); |
| 883 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), | 885 chrome::AddSelectedTabWithURL(browser(), GetGoogleURL(), |
| 884 ui::PAGE_TRANSITION_LINK); | 886 ui::PAGE_TRANSITION_LINK); |
| 885 | 887 |
| 886 // We should have one browser with 3 tabs, the 3rd selected. | 888 // We should have one browser with 3 tabs, the 3rd selected. |
| 887 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 889 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 888 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 890 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 889 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 891 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 890 | 892 |
| 891 // Navigate to singleton_url1. | 893 // Navigate to singleton_url1. |
| 892 chrome::NavigateParams p(MakeNavigateParams()); | 894 chrome::NavigateParams params(MakeNavigateParams()); |
| 893 p.disposition = SINGLETON_TAB; | 895 params.disposition = SINGLETON_TAB; |
| 894 p.url = GetClearBrowsingDataURL(); | 896 params.url = GetClearBrowsingDataURL(); |
| 895 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 897 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 896 p.path_behavior = chrome::NavigateParams::IGNORE_AND_STAY_PUT; | 898 params.path_behavior = chrome::NavigateParams::IGNORE_AND_STAY_PUT; |
| 897 chrome::Navigate(&p); | 899 chrome::Navigate(¶ms); |
| 898 | 900 |
| 899 // The middle tab should now be selected. | 901 // The middle tab should now be selected. |
| 900 EXPECT_EQ(browser(), p.browser); | 902 EXPECT_EQ(browser(), params.browser); |
| 901 EXPECT_EQ(3, browser()->tab_strip_model()->count()); | 903 EXPECT_EQ(3, browser()->tab_strip_model()->count()); |
| 902 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 904 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 903 EXPECT_EQ(singleton_url1, | 905 EXPECT_EQ(singleton_url1, |
| 904 ShortenUberURL(browser()->tab_strip_model()-> | 906 ShortenUberURL(browser()->tab_strip_model()-> |
| 905 GetActiveWebContents()->GetURL())); | 907 GetActiveWebContents()->GetURL())); |
| 906 } | 908 } |
| 907 | 909 |
| 908 // This test verifies that constructing params with disposition = SINGLETON_TAB | 910 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 909 // and IGNORE_AND_NAVIGATE will update the current tab's URL if the currently | 911 // and IGNORE_AND_NAVIGATE will update the current tab's URL if the currently |
| 910 // selected tab is a match but has a different path. | 912 // selected tab is a match but has a different path. |
| 911 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 913 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 912 Disposition_SingletonTabFocused_IgnorePath) { | 914 Disposition_SingletonTabFocused_IgnorePath) { |
| 913 GURL singleton_url_current(GetContentSettingsURL()); | 915 GURL singleton_url_current(GetContentSettingsURL()); |
| 914 chrome::AddSelectedTabWithURL(browser(), singleton_url_current, | 916 chrome::AddSelectedTabWithURL(browser(), singleton_url_current, |
| 915 ui::PAGE_TRANSITION_LINK); | 917 ui::PAGE_TRANSITION_LINK); |
| 916 | 918 |
| 917 // We should have one browser with 2 tabs, the 2nd selected. | 919 // We should have one browser with 2 tabs, the 2nd selected. |
| 918 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 920 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 919 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 921 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 920 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 922 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 921 | 923 |
| 922 // Navigate to a different settings path. | 924 // Navigate to a different settings path. |
| 923 GURL singleton_url_target(GetClearBrowsingDataURL()); | 925 GURL singleton_url_target(GetClearBrowsingDataURL()); |
| 924 chrome::NavigateParams p(MakeNavigateParams()); | 926 chrome::NavigateParams params(MakeNavigateParams()); |
| 925 p.disposition = SINGLETON_TAB; | 927 params.disposition = SINGLETON_TAB; |
| 926 p.url = singleton_url_target; | 928 params.url = singleton_url_target; |
| 927 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 929 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 928 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 930 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 929 chrome::Navigate(&p); | 931 chrome::Navigate(¶ms); |
| 930 | 932 |
| 931 // The second tab should still be selected, but navigated to the new path. | 933 // The second tab should still be selected, but navigated to the new path. |
| 932 EXPECT_EQ(browser(), p.browser); | 934 EXPECT_EQ(browser(), params.browser); |
| 933 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 935 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 934 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 936 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 935 EXPECT_EQ(singleton_url_target, | 937 EXPECT_EQ(singleton_url_target, |
| 936 ShortenUberURL(browser()->tab_strip_model()-> | 938 ShortenUberURL(browser()->tab_strip_model()-> |
| 937 GetActiveWebContents()->GetURL())); | 939 GetActiveWebContents()->GetURL())); |
| 938 } | 940 } |
| 939 | 941 |
| 940 // This test verifies that constructing params with disposition = SINGLETON_TAB | 942 // This test verifies that constructing params with disposition = SINGLETON_TAB |
| 941 // and IGNORE_AND_NAVIGATE will open an existing matching tab with a different | 943 // and IGNORE_AND_NAVIGATE will open an existing matching tab with a different |
| 942 // query. | 944 // query. |
| 943 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 945 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 944 Disposition_SingletonTabExisting_IgnoreQuery) { | 946 Disposition_SingletonTabExisting_IgnoreQuery) { |
| 945 int initial_tab_count = browser()->tab_strip_model()->count(); | 947 int initial_tab_count = browser()->tab_strip_model()->count(); |
| 946 GURL singleton_url_current("chrome://settings/internet"); | 948 GURL singleton_url_current("chrome://settings/internet"); |
| 947 chrome::AddSelectedTabWithURL(browser(), singleton_url_current, | 949 chrome::AddSelectedTabWithURL(browser(), singleton_url_current, |
| 948 ui::PAGE_TRANSITION_LINK); | 950 ui::PAGE_TRANSITION_LINK); |
| 949 | 951 |
| 950 EXPECT_EQ(initial_tab_count + 1, browser()->tab_strip_model()->count()); | 952 EXPECT_EQ(initial_tab_count + 1, browser()->tab_strip_model()->count()); |
| 951 EXPECT_EQ(initial_tab_count, browser()->tab_strip_model()->active_index()); | 953 EXPECT_EQ(initial_tab_count, browser()->tab_strip_model()->active_index()); |
| 952 | 954 |
| 953 // Navigate to a different settings path. | 955 // Navigate to a different settings path. |
| 954 GURL singleton_url_target( | 956 GURL singleton_url_target( |
| 955 "chrome://settings/internet?" | 957 "chrome://settings/internet?" |
| 956 "servicePath=/profile/ethernet_00aa00aa00aa&networkType=1"); | 958 "servicePath=/profile/ethernet_00aa00aa00aa&networkType=1"); |
| 957 chrome::NavigateParams p(MakeNavigateParams()); | 959 chrome::NavigateParams params(MakeNavigateParams()); |
| 958 p.disposition = SINGLETON_TAB; | 960 params.disposition = SINGLETON_TAB; |
| 959 p.url = singleton_url_target; | 961 params.url = singleton_url_target; |
| 960 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 962 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 961 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 963 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 962 chrome::Navigate(&p); | 964 chrome::Navigate(¶ms); |
| 963 | 965 |
| 964 // Last tab should still be selected. | 966 // Last tab should still be selected. |
| 965 EXPECT_EQ(browser(), p.browser); | 967 EXPECT_EQ(browser(), params.browser); |
| 966 EXPECT_EQ(initial_tab_count + 1, browser()->tab_strip_model()->count()); | 968 EXPECT_EQ(initial_tab_count + 1, browser()->tab_strip_model()->count()); |
| 967 EXPECT_EQ(initial_tab_count, browser()->tab_strip_model()->active_index()); | 969 EXPECT_EQ(initial_tab_count, browser()->tab_strip_model()->active_index()); |
| 968 } | 970 } |
| 969 | 971 |
| 970 // This test verifies that the settings page isn't opened in the incognito | 972 // This test verifies that the settings page isn't opened in the incognito |
| 971 // window. | 973 // window. |
| 972 // Disabled until fixed for uber settings: http://crbug.com/111243 | 974 // Disabled until fixed for uber settings: http://crbug.com/111243 |
| 973 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 975 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 974 DISABLED_Disposition_Settings_UseNonIncognitoWindow) { | 976 DISABLED_Disposition_Settings_UseNonIncognitoWindow) { |
| 975 RunUseNonIncognitoWindowTest(GetSettingsURL()); | 977 RunUseNonIncognitoWindowTest(GetSettingsURL()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1055 | 1057 |
| 1056 // We should have one browser with 2 tabs, the 2nd selected. | 1058 // We should have one browser with 2 tabs, the 2nd selected. |
| 1057 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 1059 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 1058 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 1060 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 1059 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 1061 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 1060 | 1062 |
| 1061 // Kill the singleton tab. | 1063 // Kill the singleton tab. |
| 1062 web_contents->SetIsCrashed(base::TERMINATION_STATUS_PROCESS_CRASHED, -1); | 1064 web_contents->SetIsCrashed(base::TERMINATION_STATUS_PROCESS_CRASHED, -1); |
| 1063 EXPECT_TRUE(web_contents->IsCrashed()); | 1065 EXPECT_TRUE(web_contents->IsCrashed()); |
| 1064 | 1066 |
| 1065 chrome::NavigateParams p(MakeNavigateParams()); | 1067 chrome::NavigateParams params(MakeNavigateParams()); |
| 1066 p.disposition = SINGLETON_TAB; | 1068 params.disposition = SINGLETON_TAB; |
| 1067 p.url = singleton_url; | 1069 params.url = singleton_url; |
| 1068 p.window_action = chrome::NavigateParams::SHOW_WINDOW; | 1070 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 1069 p.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; | 1071 params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE; |
| 1070 ui_test_utils::NavigateToURL(&p); | 1072 ui_test_utils::NavigateToURL(¶ms); |
| 1071 | 1073 |
| 1072 // The tab should not be sad anymore. | 1074 // The tab should not be sad anymore. |
| 1073 EXPECT_FALSE(web_contents->IsCrashed()); | 1075 EXPECT_FALSE(web_contents->IsCrashed()); |
| 1074 } | 1076 } |
| 1075 | 1077 |
| 1076 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 1078 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 1077 NavigateFromDefaultToOptionsInSameTab) { | 1079 NavigateFromDefaultToOptionsInSameTab) { |
| 1078 { | 1080 { |
| 1079 content::WindowedNotificationObserver observer( | 1081 content::WindowedNotificationObserver observer( |
| 1080 content::NOTIFICATION_LOAD_STOP, | 1082 content::NOTIFICATION_LOAD_STOP, |
| 1081 content::NotificationService::AllSources()); | 1083 content::NotificationService::AllSources()); |
| 1082 chrome::ShowSettings(browser()); | 1084 chrome::ShowSettings(browser()); |
| 1083 observer.Wait(); | 1085 observer.Wait(); |
| 1084 } | 1086 } |
| 1085 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1087 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1086 EXPECT_EQ(GetSettingsURL(), | 1088 EXPECT_EQ(GetSettingsURL(), |
| 1087 ShortenUberURL(browser()->tab_strip_model()-> | 1089 ShortenUberURL(browser()->tab_strip_model()-> |
| 1088 GetActiveWebContents()->GetURL())); | 1090 GetActiveWebContents()->GetURL())); |
| 1089 } | 1091 } |
| 1090 | 1092 |
| 1091 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 1093 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 1092 NavigateFromBlankToOptionsInSameTab) { | 1094 NavigateFromBlankToOptionsInSameTab) { |
| 1093 chrome::NavigateParams p(MakeNavigateParams()); | 1095 chrome::NavigateParams params(MakeNavigateParams()); |
| 1094 p.url = GURL(url::kAboutBlankURL); | 1096 params.url = GURL(url::kAboutBlankURL); |
| 1095 ui_test_utils::NavigateToURL(&p); | 1097 ui_test_utils::NavigateToURL(¶ms); |
| 1096 | 1098 |
| 1097 { | 1099 { |
| 1098 content::WindowedNotificationObserver observer( | 1100 content::WindowedNotificationObserver observer( |
| 1099 content::NOTIFICATION_LOAD_STOP, | 1101 content::NOTIFICATION_LOAD_STOP, |
| 1100 content::NotificationService::AllSources()); | 1102 content::NotificationService::AllSources()); |
| 1101 chrome::ShowSettings(browser()); | 1103 chrome::ShowSettings(browser()); |
| 1102 observer.Wait(); | 1104 observer.Wait(); |
| 1103 } | 1105 } |
| 1104 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1106 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1105 EXPECT_EQ(GetSettingsURL(), | 1107 EXPECT_EQ(GetSettingsURL(), |
| 1106 ShortenUberURL(browser()->tab_strip_model()-> | 1108 ShortenUberURL(browser()->tab_strip_model()-> |
| 1107 GetActiveWebContents()->GetURL())); | 1109 GetActiveWebContents()->GetURL())); |
| 1108 } | 1110 } |
| 1109 | 1111 |
| 1110 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 1112 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 1111 NavigateFromNTPToOptionsInSameTab) { | 1113 NavigateFromNTPToOptionsInSameTab) { |
| 1112 chrome::NavigateParams p(MakeNavigateParams()); | 1114 chrome::NavigateParams params(MakeNavigateParams()); |
| 1113 p.url = GURL(chrome::kChromeUINewTabURL); | 1115 params.url = GURL(chrome::kChromeUINewTabURL); |
| 1114 ui_test_utils::NavigateToURL(&p); | 1116 ui_test_utils::NavigateToURL(¶ms); |
| 1115 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1117 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1116 EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), | 1118 EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), |
| 1117 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1119 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1118 | 1120 |
| 1119 { | 1121 { |
| 1120 content::WindowedNotificationObserver observer( | 1122 content::WindowedNotificationObserver observer( |
| 1121 content::NOTIFICATION_LOAD_STOP, | 1123 content::NOTIFICATION_LOAD_STOP, |
| 1122 content::NotificationService::AllSources()); | 1124 content::NotificationService::AllSources()); |
| 1123 chrome::ShowSettings(browser()); | 1125 chrome::ShowSettings(browser()); |
| 1124 observer.Wait(); | 1126 observer.Wait(); |
| 1125 } | 1127 } |
| 1126 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1128 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1127 EXPECT_EQ(GetSettingsURL(), | 1129 EXPECT_EQ(GetSettingsURL(), |
| 1128 ShortenUberURL(browser()->tab_strip_model()-> | 1130 ShortenUberURL(browser()->tab_strip_model()-> |
| 1129 GetActiveWebContents()->GetURL())); | 1131 GetActiveWebContents()->GetURL())); |
| 1130 } | 1132 } |
| 1131 | 1133 |
| 1132 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, | 1134 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 1133 NavigateFromPageToOptionsInNewTab) { | 1135 NavigateFromPageToOptionsInNewTab) { |
| 1134 chrome::NavigateParams p(MakeNavigateParams()); | 1136 chrome::NavigateParams params(MakeNavigateParams()); |
| 1135 ui_test_utils::NavigateToURL(&p); | 1137 ui_test_utils::NavigateToURL(¶ms); |
| 1136 EXPECT_EQ(GetGoogleURL(), | 1138 EXPECT_EQ(GetGoogleURL(), |
| 1137 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1139 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1138 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); | 1140 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
| 1139 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1141 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1140 | 1142 |
| 1141 { | 1143 { |
| 1142 content::WindowedNotificationObserver observer( | 1144 content::WindowedNotificationObserver observer( |
| 1143 content::NOTIFICATION_LOAD_STOP, | 1145 content::NOTIFICATION_LOAD_STOP, |
| 1144 content::NotificationService::AllSources()); | 1146 content::NotificationService::AllSources()); |
| 1145 chrome::ShowSettings(browser()); | 1147 chrome::ShowSettings(browser()); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1369 | 1371 |
| 1370 // Open a renderer initiated POST request in new foreground tab. | 1372 // Open a renderer initiated POST request in new foreground tab. |
| 1371 base::string16 expected_title(base::ASCIIToUTF16(kExpectedTitle)); | 1373 base::string16 expected_title(base::ASCIIToUTF16(kExpectedTitle)); |
| 1372 std::string post_data = kExpectedTitle; | 1374 std::string post_data = kExpectedTitle; |
| 1373 base::string16 title; | 1375 base::string16 title; |
| 1374 ASSERT_TRUE(OpenPOSTURLInNewForegroundTabAndGetTitle( | 1376 ASSERT_TRUE(OpenPOSTURLInNewForegroundTabAndGetTitle( |
| 1375 test_server()->GetURL(kEchoTitleCommand), post_data, false, &title)); | 1377 test_server()->GetURL(kEchoTitleCommand), post_data, false, &title)); |
| 1376 EXPECT_NE(expected_title, title); | 1378 EXPECT_NE(expected_title, title); |
| 1377 } | 1379 } |
| 1378 | 1380 |
| 1381 // This test navigates to a data URL that contains BiDi control |
| 1382 // characters. For security reasons, BiDi control chars should always be |
| 1383 // escaped in the URL but they should be unescaped in the loaded HTML. |
| 1384 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
| 1385 NavigateToDataURLWithBiDiControlChars) { |
| 1386 // Text in Arabic. |
| 1387 std::string text = "\xD8\xA7\xD8\xAE\xD8\xAA\xD8\xA8\xD8\xA7\xD8\xB1"; |
| 1388 // Page title starts with RTL mark. |
| 1389 std::string unescaped_title = "\xE2\x80\x8F" + text; |
| 1390 std::string data_url = "data:text/html;charset=utf-8,<html><title>" + |
| 1391 unescaped_title + "</title></html>"; |
| 1392 // BiDi control chars in URLs are always escaped, so the expected URL should |
| 1393 // have the title with the escaped RTL mark. |
| 1394 std::string escaped_title = "%E2%80%8F" + text; |
| 1395 std::string expected_url = "data:text/html;charset=utf-8,<html><title>" + |
| 1396 escaped_title + "</title></html>"; |
| 1397 |
| 1398 // Navigate to the page. |
| 1399 chrome::NavigateParams params(MakeNavigateParams()); |
| 1400 params.disposition = NEW_FOREGROUND_TAB; |
| 1401 params.url = GURL(data_url); |
| 1402 params.window_action = chrome::NavigateParams::SHOW_WINDOW; |
| 1403 ui_test_utils::NavigateToURL(¶ms); |
| 1404 |
| 1405 base::string16 expected_title(base::UTF8ToUTF16(unescaped_title)); |
| 1406 EXPECT_TRUE(params.target_contents); |
| 1407 EXPECT_EQ(expected_title, params.target_contents->GetTitle()); |
| 1408 // GURL always keeps non-ASCII characters escaped, but check them anyways. |
| 1409 EXPECT_EQ(GURL(expected_url).spec(), params.target_contents->GetURL().spec()); |
| 1410 // Check the omnibox text. It should have escaped RTL with unescaped text. |
| 1411 LocationBar* location_bar = browser()->window()->GetLocationBar(); |
| 1412 OmniboxView* omnibox_view = location_bar->GetOmniboxView(); |
| 1413 EXPECT_EQ(base::UTF8ToUTF16(expected_url), omnibox_view->GetText()); |
| 1414 } |
| 1415 |
| 1379 } // namespace | 1416 } // namespace |
| OLD | NEW |