| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/file_path.h" | 5 #include "base/file_path.h" |
| 6 #include "base/string_util.h" | 6 #include "base/string_util.h" |
| 7 #include "base/test/test_timeouts.h" | 7 #include "base/test/test_timeouts.h" |
| 8 #include "base/threading/platform_thread.h" | 8 #include "base/threading/platform_thread.h" |
| 9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
| 10 #include "chrome/browser/worker_host/worker_service.h" | 10 #include "chrome/browser/worker_host/worker_service.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 virtual ~WorkerTest() { } | 41 virtual ~WorkerTest() { } |
| 42 | 42 |
| 43 void RunTest(const FilePath& test_case) { | 43 void RunTest(const FilePath& test_case) { |
| 44 scoped_refptr<TabProxy> tab(GetActiveTab()); | 44 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 45 ASSERT_TRUE(tab.get()); | 45 ASSERT_TRUE(tab.get()); |
| 46 | 46 |
| 47 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case); | 47 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case); |
| 48 ASSERT_TRUE(tab->NavigateToURL(url)); | 48 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 49 | 49 |
| 50 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 50 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 51 kTestCompleteCookie, action_max_timeout_ms()); | 51 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 52 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 52 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 53 } | 53 } |
| 54 | 54 |
| 55 void RunIncognitoTest(const FilePath& test_case) { | 55 void RunIncognitoTest(const FilePath& test_case) { |
| 56 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); | 56 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); |
| 57 ASSERT_TRUE(browser.get()); | 57 ASSERT_TRUE(browser.get()); |
| 58 | 58 |
| 59 // Open an Incognito window. | 59 // Open an Incognito window. |
| 60 ASSERT_TRUE(browser->RunCommand(IDC_NEW_INCOGNITO_WINDOW)); | 60 ASSERT_TRUE(browser->RunCommand(IDC_NEW_INCOGNITO_WINDOW)); |
| 61 scoped_refptr<BrowserProxy> incognito(automation()->GetBrowserWindow(1)); | 61 scoped_refptr<BrowserProxy> incognito(automation()->GetBrowserWindow(1)); |
| 62 ASSERT_TRUE(incognito.get()); | 62 ASSERT_TRUE(incognito.get()); |
| 63 int window_count; | 63 int window_count; |
| 64 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); | 64 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); |
| 65 ASSERT_EQ(2, window_count); | 65 ASSERT_EQ(2, window_count); |
| 66 | 66 |
| 67 scoped_refptr<TabProxy> tab(incognito->GetTab(0)); | 67 scoped_refptr<TabProxy> tab(incognito->GetTab(0)); |
| 68 ASSERT_TRUE(tab.get()); | 68 ASSERT_TRUE(tab.get()); |
| 69 | 69 |
| 70 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case); | 70 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case); |
| 71 ASSERT_TRUE(tab->NavigateToURL(url)); | 71 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 72 | 72 |
| 73 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 73 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 74 kTestCompleteCookie, action_max_timeout_ms()); | 74 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 75 | 75 |
| 76 // Close the incognito window | 76 // Close the incognito window |
| 77 ASSERT_TRUE(incognito->RunCommand(IDC_CLOSE_WINDOW)); | 77 ASSERT_TRUE(incognito->RunCommand(IDC_CLOSE_WINDOW)); |
| 78 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); | 78 ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count)); |
| 79 ASSERT_EQ(1, window_count); | 79 ASSERT_EQ(1, window_count); |
| 80 | 80 |
| 81 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 81 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 82 } | 82 } |
| 83 | 83 |
| 84 bool WaitForProcessCountToBe(int tabs, int workers) { | 84 bool WaitForProcessCountToBe(int tabs, int workers) { |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 } | 600 } |
| 601 | 601 |
| 602 // Flaky, http://crbug.com/59786. | 602 // Flaky, http://crbug.com/59786. |
| 603 TEST_F(WorkerTest, FLAKY_WorkerClose) { | 603 TEST_F(WorkerTest, FLAKY_WorkerClose) { |
| 604 scoped_refptr<TabProxy> tab(GetActiveTab()); | 604 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 605 ASSERT_TRUE(tab.get()); | 605 ASSERT_TRUE(tab.get()); |
| 606 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 606 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| 607 FilePath(kWorkerClose)); | 607 FilePath(kWorkerClose)); |
| 608 ASSERT_TRUE(tab->NavigateToURL(url)); | 608 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 609 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 609 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 610 kTestCompleteCookie, action_max_timeout_ms()); | 610 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 611 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 611 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 612 ASSERT_TRUE(WaitForProcessCountToBe(1, 0)); | 612 ASSERT_TRUE(WaitForProcessCountToBe(1, 0)); |
| 613 } | 613 } |
| 614 | 614 |
| 615 TEST_F(WorkerTest, QueuedSharedWorkerShutdown) { | 615 TEST_F(WorkerTest, QueuedSharedWorkerShutdown) { |
| 616 // Tests to make sure that queued shared workers are started up when | 616 // Tests to make sure that queued shared workers are started up when |
| 617 // shared workers shut down. | 617 // shared workers shut down. |
| 618 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 618 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| 619 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 619 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| 620 FilePath(kQuerySharedWorkerShutdownFile)); | 620 FilePath(kQuerySharedWorkerShutdownFile)); |
| 621 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab)); | 621 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab)); |
| 622 | 622 |
| 623 scoped_refptr<TabProxy> tab(GetActiveTab()); | 623 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 624 ASSERT_TRUE(tab.get()); | 624 ASSERT_TRUE(tab.get()); |
| 625 ASSERT_TRUE(tab->NavigateToURL(url)); | 625 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 626 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 626 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 627 kTestCompleteCookie, action_max_timeout_ms()); | 627 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 628 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 628 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 629 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); | 629 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); |
| 630 } | 630 } |
| 631 | 631 |
| 632 // Flaky, http://crbug.com/69881. | 632 // Flaky, http://crbug.com/69881. |
| 633 TEST_F(WorkerTest, FLAKY_MultipleTabsQueuedSharedWorker) { | 633 TEST_F(WorkerTest, FLAKY_MultipleTabsQueuedSharedWorker) { |
| 634 // Tests to make sure that only one instance of queued shared workers are | 634 // Tests to make sure that only one instance of queued shared workers are |
| 635 // started up even when those instances are on multiple tabs. | 635 // started up even when those instances are on multiple tabs. |
| 636 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 636 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| 637 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 637 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 651 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab)); | 651 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab)); |
| 652 | 652 |
| 653 // Now shutdown one of the shared workers - this will fire both queued | 653 // Now shutdown one of the shared workers - this will fire both queued |
| 654 // workers, but only one instance should be started | 654 // workers, but only one instance should be started |
| 655 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 655 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| 656 FilePath(kShutdownSharedWorkerFile)); | 656 FilePath(kShutdownSharedWorkerFile)); |
| 657 url2 = GURL(url2.spec() + "?id=0"); | 657 url2 = GURL(url2.spec() + "?id=0"); |
| 658 ASSERT_TRUE(window->AppendTab(url2)); | 658 ASSERT_TRUE(window->AppendTab(url2)); |
| 659 | 659 |
| 660 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 660 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 661 kTestCompleteCookie, action_max_timeout_ms()); | 661 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 662 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 662 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 663 ASSERT_TRUE(WaitForProcessCountToBe(3, max_workers_per_tab)); | 663 ASSERT_TRUE(WaitForProcessCountToBe(3, max_workers_per_tab)); |
| 664 } | 664 } |
| 665 | 665 |
| 666 // Flaky: http://crbug.com/48148 | 666 // Flaky: http://crbug.com/48148 |
| 667 TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerStartedFromOtherTab) { | 667 TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerStartedFromOtherTab) { |
| 668 // Tests to make sure that queued shared workers are started up when | 668 // Tests to make sure that queued shared workers are started up when |
| 669 // an instance is launched from another tab. | 669 // an instance is launched from another tab. |
| 670 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 670 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| 671 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 671 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| 672 FilePath(kManySharedWorkersFile)); | 672 FilePath(kManySharedWorkersFile)); |
| 673 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1)); | 673 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1)); |
| 674 | 674 |
| 675 scoped_refptr<TabProxy> tab(GetActiveTab()); | 675 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 676 ASSERT_TRUE(tab.get()); | 676 ASSERT_TRUE(tab.get()); |
| 677 ASSERT_TRUE(tab->NavigateToURL(url)); | 677 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 678 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); | 678 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); |
| 679 // First window has hit its limit. Now launch second window which creates | 679 // First window has hit its limit. Now launch second window which creates |
| 680 // the same worker that was queued in the first window, to ensure it gets | 680 // the same worker that was queued in the first window, to ensure it gets |
| 681 // connected to the first window too. | 681 // connected to the first window too. |
| 682 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); | 682 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); |
| 683 ASSERT_TRUE(window.get()); | 683 ASSERT_TRUE(window.get()); |
| 684 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 684 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
| 685 FilePath(kSingleSharedWorkersFile)); | 685 FilePath(kSingleSharedWorkersFile)); |
| 686 url2 = GURL(url2.spec() + StringPrintf("?id=%d", max_workers_per_tab)); | 686 url2 = GURL(url2.spec() + StringPrintf("?id=%d", max_workers_per_tab)); |
| 687 ASSERT_TRUE(window->AppendTab(url2)); | 687 ASSERT_TRUE(window->AppendTab(url2)); |
| 688 | 688 |
| 689 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 689 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
| 690 kTestCompleteCookie, action_max_timeout_ms()); | 690 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
| 691 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 691 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
| 692 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab+1)); | 692 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab+1)); |
| 693 } | 693 } |
| 694 | 694 |
| 695 // FileSystem worker tests. | 695 // FileSystem worker tests. |
| 696 // They are disabled for now as the feature is not enabled by default. | 696 // They are disabled for now as the feature is not enabled by default. |
| 697 // http://crbug.com/32277 | 697 // http://crbug.com/32277 |
| 698 TEST_F(WorkerTest, DISABLED_WorkerFileSystemTemporaryTest) { | 698 TEST_F(WorkerTest, DISABLED_WorkerFileSystemTemporaryTest) { |
| 699 RunWorkerFileSystemLayoutTest("simple-temporary.html"); | 699 RunWorkerFileSystemLayoutTest("simple-temporary.html"); |
| 700 } | 700 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 711 RunWorkerFileSystemLayoutTest("simple-persistent-sync.html"); | 711 RunWorkerFileSystemLayoutTest("simple-persistent-sync.html"); |
| 712 } | 712 } |
| 713 | 713 |
| 714 TEST_F(WorkerTest, DISABLED_WorkerFileSystemAsyncOperationsTest) { | 714 TEST_F(WorkerTest, DISABLED_WorkerFileSystemAsyncOperationsTest) { |
| 715 RunWorkerFileSystemLayoutTest("async-operations.html"); | 715 RunWorkerFileSystemLayoutTest("async-operations.html"); |
| 716 } | 716 } |
| 717 | 717 |
| 718 TEST_F(WorkerTest, DISABLED_WorkerFileSystemSyncOperationsTest) { | 718 TEST_F(WorkerTest, DISABLED_WorkerFileSystemSyncOperationsTest) { |
| 719 RunWorkerFileSystemLayoutTest("sync-operations.html"); | 719 RunWorkerFileSystemLayoutTest("sync-operations.html"); |
| 720 } | 720 } |
| OLD | NEW |