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 TEST_F(WorkerTest, MultipleTabsQueuedSharedWorker) { | 632 TEST_F(WorkerTest, MultipleTabsQueuedSharedWorker) { |
633 // Tests to make sure that only one instance of queued shared workers are | 633 // Tests to make sure that only one instance of queued shared workers are |
634 // started up even when those instances are on multiple tabs. | 634 // started up even when those instances are on multiple tabs. |
635 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 635 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
636 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 636 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
637 FilePath(kManySharedWorkersFile)); | 637 FilePath(kManySharedWorkersFile)); |
(...skipping 12 matching lines...) Expand all Loading... |
650 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab)); | 650 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab)); |
651 | 651 |
652 // Now shutdown one of the shared workers - this will fire both queued | 652 // Now shutdown one of the shared workers - this will fire both queued |
653 // workers, but only one instance should be started | 653 // workers, but only one instance should be started |
654 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 654 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
655 FilePath(kShutdownSharedWorkerFile)); | 655 FilePath(kShutdownSharedWorkerFile)); |
656 url2 = GURL(url2.spec() + "?id=0"); | 656 url2 = GURL(url2.spec() + "?id=0"); |
657 ASSERT_TRUE(window->AppendTab(url2)); | 657 ASSERT_TRUE(window->AppendTab(url2)); |
658 | 658 |
659 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 659 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
660 kTestCompleteCookie, action_max_timeout_ms()); | 660 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
661 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 661 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
662 ASSERT_TRUE(WaitForProcessCountToBe(3, max_workers_per_tab)); | 662 ASSERT_TRUE(WaitForProcessCountToBe(3, max_workers_per_tab)); |
663 } | 663 } |
664 | 664 |
665 // Flaky: http://crbug.com/48148 | 665 // Flaky: http://crbug.com/48148 |
666 TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerStartedFromOtherTab) { | 666 TEST_F(WorkerTest, FLAKY_QueuedSharedWorkerStartedFromOtherTab) { |
667 // Tests to make sure that queued shared workers are started up when | 667 // Tests to make sure that queued shared workers are started up when |
668 // an instance is launched from another tab. | 668 // an instance is launched from another tab. |
669 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 669 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
670 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 670 GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
671 FilePath(kManySharedWorkersFile)); | 671 FilePath(kManySharedWorkersFile)); |
672 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1)); | 672 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab+1)); |
673 | 673 |
674 scoped_refptr<TabProxy> tab(GetActiveTab()); | 674 scoped_refptr<TabProxy> tab(GetActiveTab()); |
675 ASSERT_TRUE(tab.get()); | 675 ASSERT_TRUE(tab.get()); |
676 ASSERT_TRUE(tab->NavigateToURL(url)); | 676 ASSERT_TRUE(tab->NavigateToURL(url)); |
677 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); | 677 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); |
678 // First window has hit its limit. Now launch second window which creates | 678 // First window has hit its limit. Now launch second window which creates |
679 // the same worker that was queued in the first window, to ensure it gets | 679 // the same worker that was queued in the first window, to ensure it gets |
680 // connected to the first window too. | 680 // connected to the first window too. |
681 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); | 681 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); |
682 ASSERT_TRUE(window.get()); | 682 ASSERT_TRUE(window.get()); |
683 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), | 683 GURL url2 = ui_test_utils::GetTestUrl(FilePath(kTestDir), |
684 FilePath(kSingleSharedWorkersFile)); | 684 FilePath(kSingleSharedWorkersFile)); |
685 url2 = GURL(url2.spec() + StringPrintf("?id=%d", max_workers_per_tab)); | 685 url2 = GURL(url2.spec() + StringPrintf("?id=%d", max_workers_per_tab)); |
686 ASSERT_TRUE(window->AppendTab(url2)); | 686 ASSERT_TRUE(window->AppendTab(url2)); |
687 | 687 |
688 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, | 688 std::string value = WaitUntilCookieNonEmpty(tab.get(), url, |
689 kTestCompleteCookie, action_max_timeout_ms()); | 689 kTestCompleteCookie, TestTimeouts::action_max_timeout_ms()); |
690 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); | 690 ASSERT_STREQ(kTestCompleteSuccess, value.c_str()); |
691 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab+1)); | 691 ASSERT_TRUE(WaitForProcessCountToBe(2, max_workers_per_tab+1)); |
692 } | 692 } |
693 | 693 |
694 // FileSystem worker tests. | 694 // FileSystem worker tests. |
695 // They are disabled for now as the feature is not enabled by default. | 695 // They are disabled for now as the feature is not enabled by default. |
696 // http://crbug.com/32277 | 696 // http://crbug.com/32277 |
697 TEST_F(WorkerTest, DISABLED_WorkerFileSystemTemporaryTest) { | 697 TEST_F(WorkerTest, DISABLED_WorkerFileSystemTemporaryTest) { |
698 RunWorkerFileSystemLayoutTest("simple-temporary.html"); | 698 RunWorkerFileSystemLayoutTest("simple-temporary.html"); |
699 } | 699 } |
(...skipping 10 matching lines...) Expand all Loading... |
710 RunWorkerFileSystemLayoutTest("simple-persistent-sync.html"); | 710 RunWorkerFileSystemLayoutTest("simple-persistent-sync.html"); |
711 } | 711 } |
712 | 712 |
713 TEST_F(WorkerTest, DISABLED_WorkerFileSystemAsyncOperationsTest) { | 713 TEST_F(WorkerTest, DISABLED_WorkerFileSystemAsyncOperationsTest) { |
714 RunWorkerFileSystemLayoutTest("async-operations.html"); | 714 RunWorkerFileSystemLayoutTest("async-operations.html"); |
715 } | 715 } |
716 | 716 |
717 TEST_F(WorkerTest, DISABLED_WorkerFileSystemSyncOperationsTest) { | 717 TEST_F(WorkerTest, DISABLED_WorkerFileSystemSyncOperationsTest) { |
718 RunWorkerFileSystemLayoutTest("sync-operations.html"); | 718 RunWorkerFileSystemLayoutTest("sync-operations.html"); |
719 } | 719 } |
OLD | NEW |