OLD | NEW |
1 // Copyright 2008, Google Inc. | 1 // Copyright 2008, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 12 matching lines...) Expand all Loading... |
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 | 29 |
30 // History UI tests | 30 // History UI tests |
31 | 31 |
32 #include "base/file_util.h" | 32 #include "base/file_util.h" |
| 33 #include "base/gfx/point.h" |
| 34 #include "base/gfx/rect.h" |
| 35 #include "chrome/browser/view_ids.h" |
33 #include "chrome/common/chrome_paths.h" | 36 #include "chrome/common/chrome_paths.h" |
| 37 #include "chrome/test/automation/browser_proxy.h" |
34 #include "chrome/test/automation/tab_proxy.h" | 38 #include "chrome/test/automation/tab_proxy.h" |
| 39 #include "chrome/test/automation/window_proxy.h" |
35 #include "chrome/test/ui/ui_test.h" | 40 #include "chrome/test/ui/ui_test.h" |
36 #include "net/base/net_util.h" | 41 #include "net/base/net_util.h" |
| 42 #include "views/event.h" |
37 | 43 |
38 const char kTestCompleteCookie[] = "status"; | 44 const char kTestCompleteCookie[] = "status"; |
39 const char kTestCompleteSuccess[] = "OK"; | 45 const char kTestCompleteSuccess[] = "OK"; |
40 | 46 |
41 class HistoryTester : public UITest { | 47 class HistoryTester : public UITest { |
42 protected: | 48 protected: |
43 HistoryTester() : UITest() { } | 49 HistoryTester() : UITest() { } |
44 | 50 |
45 virtual void SetUp() { | 51 virtual void SetUp() { |
46 show_window_ = true; | 52 show_window_ = true; |
47 UITest::SetUp(); | 53 UITest::SetUp(); |
48 } | 54 } |
49 }; | 55 }; |
50 | 56 |
51 TEST_F(HistoryTester, VerifyHistoryLength) { | 57 // TODO(yuzo): Fix the following flaky (hence disabled) tests. |
| 58 // These tests are flaky because automatic and user-initiated transitions are |
| 59 // distinguished based on the interval between page load and redirect. |
| 60 |
| 61 TEST_F(HistoryTester, DISABLED_VerifyHistoryLength) { |
52 // Test the history length for the following page transitions. | 62 // Test the history length for the following page transitions. |
53 // | 63 // |
54 // Test case 1: | 64 // Test case 1: |
55 // -open-> Page 1. | 65 // -open-> Page 1. |
56 // Test case 2: | 66 // Test case 2: |
57 // -open-> Page 2 -redirect-> Page 3. | 67 // -open-> Page 2 -redirect-> Page 3. |
58 // Test case 3: | 68 // Test case 3: |
59 // -open-> Page 4 -navigate_backward-> Page 3 -navigate_backward->Page 1 | 69 // -open-> Page 4 -navigate_backward-> Page 3 -navigate_backward->Page 1 |
60 // -navigate_forward-> Page 3 -navigate_forward-> Page 4 | 70 // -navigate_forward-> Page 3 -navigate_forward-> Page 4 |
61 // | 71 // |
62 // Note that Page 2 is not visited on navigating backward/forward. | 72 // Note that Page 2 is not visited on navigating backward/forward. |
63 | 73 |
64 // Test case 1 | 74 // Test case 1 |
65 std::wstring test_case_1 = L"history_length_test_page_1.html"; | 75 std::wstring test_case_1 = L"history_length_test_page_1.html"; |
66 GURL url_1 = GetTestUrl(L"History", test_case_1); | 76 GURL url_1 = GetTestUrl(L"History", test_case_1); |
67 NavigateToURL(url_1); | 77 NavigateToURL(url_1); |
68 WaitForFinish("History_Length_Test_1", "1", url_1, kTestCompleteCookie, | 78 WaitForFinish("History_Length_Test_1", "1", url_1, kTestCompleteCookie, |
69 kTestCompleteSuccess, action_max_timeout_ms()); | 79 kTestCompleteSuccess, action_max_timeout_ms()); |
70 | 80 |
71 // Test case 2 | 81 // Test case 2 |
72 std::wstring test_case_2 = L"history_length_test_page_2.html"; | 82 std::wstring test_case_2 = L"history_length_test_page_2.html"; |
73 GURL url_2 = GetTestUrl(L"History", test_case_2); | 83 GURL url_2 = GetTestUrl(L"History", test_case_2); |
74 NavigateToURL(url_2); | 84 NavigateToURL(url_2); |
75 WaitForFinish("History_Length_Test_2", "1", url_2, kTestCompleteCookie, | 85 WaitForFinish("History_Length_Test_2", "1", url_2, kTestCompleteCookie, |
76 kTestCompleteSuccess, action_max_timeout_ms()); | 86 kTestCompleteSuccess, action_max_timeout_ms()); |
77 | 87 |
78 // Test case 3 | 88 // Test case 3 |
79 std::wstring test_case_3 = L"history_length_test_page_4.html"; | 89 std::wstring test_case_3 = L"history_length_test_page_4.html"; |
80 GURL url_3 = GetTestUrl(L"History", test_case_3); | 90 GURL url_3 = GetTestUrl(L"History", test_case_3); |
81 NavigateToURL(url_3); | 91 NavigateToURL(url_3); |
82 WaitForFinish("History_Length_Test_3", "1", url_3, kTestCompleteCookie, | 92 WaitForFinish("History_Length_Test_3", "1", url_3, kTestCompleteCookie, |
83 kTestCompleteSuccess, action_max_timeout_ms()); | 93 kTestCompleteSuccess, action_max_timeout_ms()); |
84 } | 94 } |
| 95 |
| 96 #if defined(OS_WIN) |
| 97 // This test requires simulated mouse click, which is possible only for Windows. |
| 98 TEST_F(HistoryTester, DISABLED_ConsiderRedirectAfterGestureAsUserInitiated) { |
| 99 // Test the history length for the following page transition. |
| 100 // |
| 101 // -open-> Page 11 -slow_redirect-> Page 12. |
| 102 // |
| 103 // If redirect occurs after a user gesture, e.g., mouse click, the |
| 104 // redirect is more likely to be user-initiated rather than automatic. |
| 105 // Therefore, Page 11 should be in the history in addition to Page 12. |
| 106 |
| 107 std::wstring test_case = L"history_length_test_page_11.html"; |
| 108 GURL url = GetTestUrl(L"History", test_case); |
| 109 NavigateToURL(url); |
| 110 WaitForFinish("History_Length_Test_11", "1", url, kTestCompleteCookie, |
| 111 kTestCompleteSuccess, action_max_timeout_ms()); |
| 112 |
| 113 // Simulate click. This only works for Windows. |
| 114 scoped_refptr<BrowserProxy> browser = automation()->GetBrowserWindow(0); |
| 115 scoped_refptr<WindowProxy> window = browser->GetWindow(); |
| 116 gfx::Rect tab_view_bounds; |
| 117 ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER, &tab_view_bounds, |
| 118 true)); |
| 119 POINT point(tab_view_bounds.CenterPoint().ToPOINT()); |
| 120 ASSERT_TRUE( |
| 121 window->SimulateOSClick(point, views::Event::EF_LEFT_BUTTON_DOWN)); |
| 122 |
| 123 NavigateToURL(GURL("javascript:redirectToPage12()")); |
| 124 WaitForFinish("History_Length_Test_12", "1", url, kTestCompleteCookie, |
| 125 kTestCompleteSuccess, action_max_timeout_ms()); |
| 126 } |
| 127 #endif // defined(OS_WIN) |
| 128 |
| 129 TEST_F(HistoryTester, DISABLED_ConsiderSlowRedirectAsUserInitiated) { |
| 130 // Test the history length for the following page transition. |
| 131 // |
| 132 // -open-> Page 21 -redirect-> Page 22. |
| 133 // |
| 134 // If redirect occurs more than 5 seconds later after the page is loaded, |
| 135 // the redirect is likely to be user-initiated. |
| 136 // Therefore, Page 21 should be in the history in addition to Page 22. |
| 137 |
| 138 std::wstring test_case = L"history_length_test_page_21.html"; |
| 139 GURL url = GetTestUrl(L"History", test_case); |
| 140 NavigateToURL(url); |
| 141 WaitForFinish("History_Length_Test_21", "1", url, kTestCompleteCookie, |
| 142 kTestCompleteSuccess, action_max_timeout_ms()); |
| 143 } |
OLD | NEW |