| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "chrome/browser/tab_contents/tab_contents.h" | 27 #include "chrome/browser/tab_contents/tab_contents.h" |
| 28 #include "chrome/common/chrome_switches.h" | 28 #include "chrome/common/chrome_switches.h" |
| 29 #include "chrome/common/extensions/extension.h" | 29 #include "chrome/common/extensions/extension.h" |
| 30 #include "chrome/common/url_constants.h" | 30 #include "chrome/common/url_constants.h" |
| 31 #include "chrome/common/page_transition_types.h" | 31 #include "chrome/common/page_transition_types.h" |
| 32 #include "chrome/test/in_process_browser_test.h" | 32 #include "chrome/test/in_process_browser_test.h" |
| 33 #include "chrome/test/ui_test_utils.h" | 33 #include "chrome/test/ui_test_utils.h" |
| 34 #include "grit/chromium_strings.h" | 34 #include "grit/chromium_strings.h" |
| 35 #include "grit/generated_resources.h" | 35 #include "grit/generated_resources.h" |
| 36 #include "net/base/mock_host_resolver.h" | 36 #include "net/base/mock_host_resolver.h" |
| 37 #include "net/test/test_server.h" |
| 37 | 38 |
| 38 namespace { | 39 namespace { |
| 39 | 40 |
| 40 const std::string BEFORE_UNLOAD_HTML = | 41 const std::string BEFORE_UNLOAD_HTML = |
| 41 "<html><head><title>beforeunload</title></head><body>" | 42 "<html><head><title>beforeunload</title></head><body>" |
| 42 "<script>window.onbeforeunload=function(e){return 'foo'}</script>" | 43 "<script>window.onbeforeunload=function(e){return 'foo'}</script>" |
| 43 "</body></html>"; | 44 "</body></html>"; |
| 44 | 45 |
| 45 const std::wstring OPEN_NEW_BEFOREUNLOAD_PAGE = | 46 const std::wstring OPEN_NEW_BEFOREUNLOAD_PAGE = |
| 46 L"w=window.open(); w.onbeforeunload=function(e){return 'foo'};"; | 47 L"w=window.open(); w.onbeforeunload=function(e){return 'foo'};"; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); | 92 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); |
| 92 }; | 93 }; |
| 93 | 94 |
| 94 } // namespace | 95 } // namespace |
| 95 | 96 |
| 96 class BrowserTest : public ExtensionBrowserTest { | 97 class BrowserTest : public ExtensionBrowserTest { |
| 97 public: | 98 public: |
| 98 // Used by phantom tab tests. Creates two tabs, pins the first and makes it | 99 // Used by phantom tab tests. Creates two tabs, pins the first and makes it |
| 99 // a phantom tab (by closing it). | 100 // a phantom tab (by closing it). |
| 100 void PhantomTabTest() { | 101 void PhantomTabTest() { |
| 101 HTTPTestServer* server = StartHTTPServer(); | 102 net::HTTPTestServer* server = StartHTTPServer(); |
| 102 ASSERT_TRUE(server); | 103 ASSERT_TRUE(server); |
| 103 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 104 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 104 GURL url(server->TestServerPage("empty.html")); | 105 GURL url(server->TestServerPage("empty.html")); |
| 105 TabStripModel* model = browser()->tabstrip_model(); | 106 TabStripModel* model = browser()->tabstrip_model(); |
| 106 | 107 |
| 107 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 108 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 108 | 109 |
| 109 Extension* extension_app = GetExtension(); | 110 Extension* extension_app = GetExtension(); |
| 110 | 111 |
| 111 ui_test_utils::NavigateToURL(browser(), url); | 112 ui_test_utils::NavigateToURL(browser(), url); |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 GURL file_url(ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory), | 323 GURL file_url(ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory), |
| 323 FilePath(kEmptyFile))); | 324 FilePath(kEmptyFile))); |
| 324 ASSERT_TRUE(file_url.SchemeIs(chrome::kFileScheme)); | 325 ASSERT_TRUE(file_url.SchemeIs(chrome::kFileScheme)); |
| 325 ui_test_utils::NavigateToURL(browser(), file_url); | 326 ui_test_utils::NavigateToURL(browser(), file_url); |
| 326 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); | 327 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); |
| 327 } | 328 } |
| 328 | 329 |
| 329 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutHttp) { | 330 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutHttp) { |
| 330 CommandUpdater* command_updater = browser()->command_updater(); | 331 CommandUpdater* command_updater = browser()->command_updater(); |
| 331 | 332 |
| 332 scoped_refptr<HTTPTestServer> http_server( | 333 scoped_refptr<net::HTTPTestServer> http_server( |
| 333 HTTPTestServer::CreateServer(kDocRoot)); | 334 net::HTTPTestServer::CreateServer(kDocRoot)); |
| 334 ASSERT_TRUE(NULL != http_server.get()); | 335 ASSERT_TRUE(NULL != http_server.get()); |
| 335 GURL http_url(http_server->TestServerPage("")); | 336 GURL http_url(http_server->TestServerPage("")); |
| 336 ASSERT_TRUE(http_url.SchemeIs(chrome::kHttpScheme)); | 337 ASSERT_TRUE(http_url.SchemeIs(chrome::kHttpScheme)); |
| 337 ui_test_utils::NavigateToURL(browser(), http_url); | 338 ui_test_utils::NavigateToURL(browser(), http_url); |
| 338 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); | 339 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); |
| 339 } | 340 } |
| 340 | 341 |
| 341 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutHttps) { | 342 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutHttps) { |
| 342 CommandUpdater* command_updater = browser()->command_updater(); | 343 CommandUpdater* command_updater = browser()->command_updater(); |
| 343 | 344 |
| 344 scoped_refptr<HTTPSTestServer> https_server( | 345 scoped_refptr<net::HTTPSTestServer> https_server( |
| 345 HTTPSTestServer::CreateGoodServer(kDocRoot)); | 346 net::HTTPSTestServer::CreateGoodServer(kDocRoot)); |
| 346 ASSERT_TRUE(NULL != https_server.get()); | 347 ASSERT_TRUE(NULL != https_server.get()); |
| 347 GURL https_url(https_server->TestServerPage("/")); | 348 GURL https_url(https_server->TestServerPage("/")); |
| 348 ASSERT_TRUE(https_url.SchemeIs(chrome::kHttpsScheme)); | 349 ASSERT_TRUE(https_url.SchemeIs(chrome::kHttpsScheme)); |
| 349 ui_test_utils::NavigateToURL(browser(), https_url); | 350 ui_test_utils::NavigateToURL(browser(), https_url); |
| 350 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); | 351 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); |
| 351 } | 352 } |
| 352 | 353 |
| 353 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutFtp) { | 354 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutFtp) { |
| 354 CommandUpdater* command_updater = browser()->command_updater(); | 355 CommandUpdater* command_updater = browser()->command_updater(); |
| 355 | 356 |
| 356 scoped_refptr<FTPTestServer> ftp_server( | 357 scoped_refptr<net::FTPTestServer> ftp_server( |
| 357 FTPTestServer::CreateServer(kDocRoot)); | 358 net::FTPTestServer::CreateServer(kDocRoot)); |
| 358 ASSERT_TRUE(NULL != ftp_server.get()); | 359 ASSERT_TRUE(NULL != ftp_server.get()); |
| 359 GURL ftp_url(ftp_server->TestServerPage("")); | 360 GURL ftp_url(ftp_server->TestServerPage("")); |
| 360 ASSERT_TRUE(ftp_url.SchemeIs(chrome::kFtpScheme)); | 361 ASSERT_TRUE(ftp_url.SchemeIs(chrome::kFtpScheme)); |
| 361 ui_test_utils::NavigateToURL(browser(), ftp_url); | 362 ui_test_utils::NavigateToURL(browser(), ftp_url); |
| 362 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); | 363 EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); |
| 363 } | 364 } |
| 364 | 365 |
| 365 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutInvalid) { | 366 IN_PROC_BROWSER_TEST_F(BrowserTest, CommandCreateAppShortcutInvalid) { |
| 366 CommandUpdater* command_updater = browser()->command_updater(); | 367 CommandUpdater* command_updater = browser()->command_updater(); |
| 367 | 368 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 381 GURL blank_url(chrome::kAboutBlankURL); | 382 GURL blank_url(chrome::kAboutBlankURL); |
| 382 ui_test_utils::NavigateToURL(browser(), blank_url); | 383 ui_test_utils::NavigateToURL(browser(), blank_url); |
| 383 EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); | 384 EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_CREATE_SHORTCUTS)); |
| 384 } | 385 } |
| 385 #endif // !defined(OS_MACOSX) | 386 #endif // !defined(OS_MACOSX) |
| 386 | 387 |
| 387 // Test RenderView correctly send back favicon url for web page that redirects | 388 // Test RenderView correctly send back favicon url for web page that redirects |
| 388 // to an anchor in javascript body.onload handler. | 389 // to an anchor in javascript body.onload handler. |
| 389 IN_PROC_BROWSER_TEST_F(BrowserTest, FaviconOfOnloadRedirectToAnchorPage) { | 390 IN_PROC_BROWSER_TEST_F(BrowserTest, FaviconOfOnloadRedirectToAnchorPage) { |
| 390 static const wchar_t kDocRoot[] = L"chrome/test/data"; | 391 static const wchar_t kDocRoot[] = L"chrome/test/data"; |
| 391 scoped_refptr<HTTPTestServer> server( | 392 scoped_refptr<net::HTTPTestServer> server( |
| 392 HTTPTestServer::CreateServer(kDocRoot)); | 393 net::HTTPTestServer::CreateServer(kDocRoot)); |
| 393 ASSERT_TRUE(NULL != server.get()); | 394 ASSERT_TRUE(NULL != server.get()); |
| 394 GURL url(server->TestServerPage("files/onload_redirect_to_anchor.html")); | 395 GURL url(server->TestServerPage("files/onload_redirect_to_anchor.html")); |
| 395 GURL expected_favicon_url(server->TestServerPage("files/test.png")); | 396 GURL expected_favicon_url(server->TestServerPage("files/test.png")); |
| 396 | 397 |
| 397 ui_test_utils::NavigateToURL(browser(), url); | 398 ui_test_utils::NavigateToURL(browser(), url); |
| 398 | 399 |
| 399 NavigationEntry* entry = browser()->GetSelectedTabContents()-> | 400 NavigationEntry* entry = browser()->GetSelectedTabContents()-> |
| 400 controller().GetActiveEntry(); | 401 controller().GetActiveEntry(); |
| 401 EXPECT_EQ(expected_favicon_url.spec(), entry->favicon().url().spec()); | 402 EXPECT_EQ(expected_favicon_url.spec(), entry->favicon().url().spec()); |
| 402 } | 403 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 | 446 |
| 446 // There should still be two tabs. | 447 // There should still be two tabs. |
| 447 ASSERT_EQ(2, browser()->tab_count()); | 448 ASSERT_EQ(2, browser()->tab_count()); |
| 448 // The first tab should no longer be a phantom. | 449 // The first tab should no longer be a phantom. |
| 449 EXPECT_FALSE(model->IsPhantomTab(0)); | 450 EXPECT_FALSE(model->IsPhantomTab(0)); |
| 450 } | 451 } |
| 451 | 452 |
| 452 // Makes sure TabClosing is sent when uninstalling an extension that is an app | 453 // Makes sure TabClosing is sent when uninstalling an extension that is an app |
| 453 // tab. | 454 // tab. |
| 454 IN_PROC_BROWSER_TEST_F(BrowserTest, TabClosingWhenRemovingExtension) { | 455 IN_PROC_BROWSER_TEST_F(BrowserTest, TabClosingWhenRemovingExtension) { |
| 455 HTTPTestServer* server = StartHTTPServer(); | 456 net::HTTPTestServer* server = StartHTTPServer(); |
| 456 ASSERT_TRUE(server); | 457 ASSERT_TRUE(server); |
| 457 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 458 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 458 GURL url(server->TestServerPage("empty.html")); | 459 GURL url(server->TestServerPage("empty.html")); |
| 459 TabStripModel* model = browser()->tabstrip_model(); | 460 TabStripModel* model = browser()->tabstrip_model(); |
| 460 | 461 |
| 461 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 462 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 462 | 463 |
| 463 Extension* extension_app = GetExtension(); | 464 Extension* extension_app = GetExtension(); |
| 464 | 465 |
| 465 ui_test_utils::NavigateToURL(browser(), url); | 466 ui_test_utils::NavigateToURL(browser(), url); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 | 503 |
| 503 #if defined(OS_WIN) | 504 #if defined(OS_WIN) |
| 504 // http://crbug.com/46198. On XP/Vista, the failure rate is 5 ~ 6%. | 505 // http://crbug.com/46198. On XP/Vista, the failure rate is 5 ~ 6%. |
| 505 #define MAYBE_PageLanguageDetection FLAKY_PageLanguageDetection | 506 #define MAYBE_PageLanguageDetection FLAKY_PageLanguageDetection |
| 506 #else | 507 #else |
| 507 #define MAYBE_PageLanguageDetection PageLanguageDetection | 508 #define MAYBE_PageLanguageDetection PageLanguageDetection |
| 508 #endif | 509 #endif |
| 509 // Tests that the CLD (Compact Language Detection) works properly. | 510 // Tests that the CLD (Compact Language Detection) works properly. |
| 510 IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_PageLanguageDetection) { | 511 IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_PageLanguageDetection) { |
| 511 static const wchar_t kDocRoot[] = L"chrome/test/data"; | 512 static const wchar_t kDocRoot[] = L"chrome/test/data"; |
| 512 scoped_refptr<HTTPTestServer> server( | 513 scoped_refptr<net::HTTPTestServer> server( |
| 513 HTTPTestServer::CreateServer(kDocRoot)); | 514 net::HTTPTestServer::CreateServer(kDocRoot)); |
| 514 ASSERT_TRUE(NULL != server.get()); | 515 ASSERT_TRUE(NULL != server.get()); |
| 515 | 516 |
| 516 TabContents* current_tab = browser()->GetSelectedTabContents(); | 517 TabContents* current_tab = browser()->GetSelectedTabContents(); |
| 517 | 518 |
| 518 // Navigate to a page in English. | 519 // Navigate to a page in English. |
| 519 ui_test_utils::WindowedNotificationObserverWithDetails<TabContents, | 520 ui_test_utils::WindowedNotificationObserverWithDetails<TabContents, |
| 520 std::string> | 521 std::string> |
| 521 en_language_detected_signal(NotificationType::TAB_LANGUAGE_DETERMINED, | 522 en_language_detected_signal(NotificationType::TAB_LANGUAGE_DETERMINED, |
| 522 current_tab); | 523 current_tab); |
| 523 ui_test_utils::NavigateToURL( | 524 ui_test_utils::NavigateToURL( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 546 | 547 |
| 547 // Chromeos defaults to restoring the last session, so this test isn't | 548 // Chromeos defaults to restoring the last session, so this test isn't |
| 548 // applicable. | 549 // applicable. |
| 549 #if !defined(OS_CHROMEOS) | 550 #if !defined(OS_CHROMEOS) |
| 550 #if defined(OS_MACOSX) | 551 #if defined(OS_MACOSX) |
| 551 // Crashy, http://crbug.com/38522 | 552 // Crashy, http://crbug.com/38522 |
| 552 #define RestorePinnedTabs DISABLED_RestorePinnedTabs | 553 #define RestorePinnedTabs DISABLED_RestorePinnedTabs |
| 553 #endif | 554 #endif |
| 554 // Makes sure pinned tabs are restored correctly on start. | 555 // Makes sure pinned tabs are restored correctly on start. |
| 555 IN_PROC_BROWSER_TEST_F(BrowserTest, RestorePinnedTabs) { | 556 IN_PROC_BROWSER_TEST_F(BrowserTest, RestorePinnedTabs) { |
| 556 HTTPTestServer* server = StartHTTPServer(); | 557 net::HTTPTestServer* server = StartHTTPServer(); |
| 557 ASSERT_TRUE(server); | 558 ASSERT_TRUE(server); |
| 558 | 559 |
| 559 // Add an pinned app tab. | 560 // Add an pinned app tab. |
| 560 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 561 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 561 GURL url(server->TestServerPage("empty.html")); | 562 GURL url(server->TestServerPage("empty.html")); |
| 562 TabStripModel* model = browser()->tabstrip_model(); | 563 TabStripModel* model = browser()->tabstrip_model(); |
| 563 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 564 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 564 Extension* extension_app = GetExtension(); | 565 Extension* extension_app = GetExtension(); |
| 565 ui_test_utils::NavigateToURL(browser(), url); | 566 ui_test_utils::NavigateToURL(browser(), url); |
| 566 TabContents* app_contents = new TabContents(browser()->profile(), NULL, | 567 TabContents* app_contents = new TabContents(browser()->profile(), NULL, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 return false; | 663 return false; |
| 663 } | 664 } |
| 664 ui_test_utils::WaitForNavigation(&(tab->controller())); | 665 ui_test_utils::WaitForNavigation(&(tab->controller())); |
| 665 if (tab != browser()->GetSelectedTabContents()) { | 666 if (tab != browser()->GetSelectedTabContents()) { |
| 666 LOG(ERROR) << "Tab was not selected."; | 667 LOG(ERROR) << "Tab was not selected."; |
| 667 return false; | 668 return false; |
| 668 } | 669 } |
| 669 return true; | 670 return true; |
| 670 } | 671 } |
| 671 | 672 |
| 672 HTTPTestServer* server_; | 673 net::HTTPTestServer* server_; |
| 673 Extension* extension_app_; | 674 Extension* extension_app_; |
| 674 Profile* profile_; | 675 Profile* profile_; |
| 675 }; | 676 }; |
| 676 | 677 |
| 677 #if defined(OS_WIN) || (defined(OS_LINUX) && !defined(TOOLKIT_VIEWS)) | 678 #if defined(OS_WIN) || (defined(OS_LINUX) && !defined(TOOLKIT_VIEWS)) |
| 678 | 679 |
| 679 #define MAYBE_OpenTab OpenTab | 680 #define MAYBE_OpenTab OpenTab |
| 680 #define MAYBE_OpenPanel OpenPanel | 681 #define MAYBE_OpenPanel OpenPanel |
| 681 #define MAYBE_OpenWindow OpenWindow | 682 #define MAYBE_OpenWindow OpenWindow |
| 682 #define MAYBE_WindowBeforeTab WindowBeforeTab | 683 #define MAYBE_WindowBeforeTab WindowBeforeTab |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 982 | 983 |
| 983 // The normal browser should now have four. | 984 // The normal browser should now have four. |
| 984 EXPECT_EQ(4, browser()->tab_count()); | 985 EXPECT_EQ(4, browser()->tab_count()); |
| 985 | 986 |
| 986 // Close the additional browsers. | 987 // Close the additional browsers. |
| 987 popup_browser->CloseAllTabs(); | 988 popup_browser->CloseAllTabs(); |
| 988 app_browser->CloseAllTabs(); | 989 app_browser->CloseAllTabs(); |
| 989 app_popup_browser->CloseAllTabs(); | 990 app_popup_browser->CloseAllTabs(); |
| 990 } | 991 } |
| 991 #endif | 992 #endif |
| OLD | NEW |