diff options
Diffstat (limited to 'chrome/test/ui')
-rw-r--r-- | chrome/test/ui/history_uitest.cc | 58 | ||||
-rw-r--r-- | chrome/test/ui/npapi_uitest.cpp | 160 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.cc | 36 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.h | 13 | ||||
-rw-r--r-- | chrome/test/ui/ui_tests.vcproj | 24 |
5 files changed, 198 insertions, 93 deletions
diff --git a/chrome/test/ui/history_uitest.cc b/chrome/test/ui/history_uitest.cc new file mode 100644 index 0000000..931024f --- /dev/null +++ b/chrome/test/ui/history_uitest.cc @@ -0,0 +1,58 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// History UI tests + +#include "base/file_util.h" +#include "chrome/common/chrome_paths.h" +#include "chrome/test/automation/tab_proxy.h" +#include "chrome/test/ui/ui_test.h" +#include "net/base/net_util.h" + +const char kTestCompleteCookie[] = "status"; +const char kTestCompleteSuccess[] = "OK"; +const int kShortWaitTimeout = 5 * 1000; + +class HistoryTester : public UITest { + protected: + HistoryTester() : UITest() { } + + virtual void SetUp() { + show_window_ = true; + UITest::SetUp(); + } +}; + +TEST_F(HistoryTester, VerifyHistoryLength) { + std::wstring test_case = L"history_length_test1.html"; + GURL url = GetTestUrl(L"History", test_case); + NavigateToURL(url); + WaitForFinish("History_Length_Test", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); +} diff --git a/chrome/test/ui/npapi_uitest.cpp b/chrome/test/ui/npapi_uitest.cpp index b48d011..525e48e 100644 --- a/chrome/test/ui/npapi_uitest.cpp +++ b/chrome/test/ui/npapi_uitest.cpp @@ -53,8 +53,8 @@ const char kTestCompleteCookie[] = "status"; const char kTestCompleteSuccess[] = "OK"; -const int kLongWaitTimeout = 30*1000; -const int kShortWaitTimeout = 5*1000; +const int kLongWaitTimeout = 30 * 1000; +const int kShortWaitTimeout = 5 * 1000; std::ostream& operator<<(std::ostream& out, const CComBSTR &str) { @@ -66,7 +66,6 @@ std::ostream& operator<<(std::ostream& out, const CComBSTR &str) return out << szFinal; } - class NPAPITester : public UITest { protected: NPAPITester() : UITest() @@ -93,49 +92,6 @@ class NPAPITester : public UITest { UITest::TearDown(); } -protected: - // Generate the URL for testing a particular test. - // HTML for the tests is all located in test_directory\npapi\<testcase> - GURL GetTestUrl(const std::wstring &test_case) { - std::wstring path; - PathService::Get(chrome::DIR_TEST_DATA, &path); - file_util::AppendToPath(&path, L"npapi"); - file_util::AppendToPath(&path, test_case); - return net::FilePathToFileURL(path); - } - - // Waits for the test case to finish. - // ASSERTS if there are test failures. - void WaitForFinish(const std::string &name, const std::string &id, - const GURL &url, const int wait_time) - { - const int kSleepTime = 250; // 4 times per second - const int kMaxIntervals = wait_time / kSleepTime; - - scoped_ptr<TabProxy> tab(GetActiveTab()); - - std::string done_str; - for (int i = 0; i < kMaxIntervals; ++i) { - Sleep(kSleepTime); - - // The webpage being tested has javascript which sets a cookie - // which signals completion of the test. The cookie name is - // a concatenation of the test name and the test id. This allows - // us to run multiple tests within a single webpage and test - // that they all c - std::string cookieName = name; - cookieName.append("."); - cookieName.append(id); - cookieName.append("."); - cookieName.append(kTestCompleteCookie); - tab->GetCookieByName(url, cookieName, &done_str); - if (!done_str.empty()) - break; - } - - EXPECT_EQ(kTestCompleteSuccess, done_str); - } - private: std::wstring plugin_dll_; }; @@ -151,49 +107,68 @@ class NPAPIVisiblePluginTester : public NPAPITester { // Test passing arguments to a plugin. TEST_F(NPAPITester, Arguments) { std::wstring test_case = L"arguments.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("arguments", "1", url, kShortWaitTimeout); + WaitForFinish("arguments", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } // Test invoking many plugins within a single page. TEST_F(NPAPITester, ManyPlugins) { std::wstring test_case = L"many_plugins.html"; - GURL url(GetTestUrl(test_case)); + GURL url(GetTestUrl(L"npapi", test_case)); NavigateToURL(url); - WaitForFinish("arguments", "1", url, kShortWaitTimeout); - WaitForFinish("arguments", "2", url, kShortWaitTimeout); - WaitForFinish("arguments", "3", url, kShortWaitTimeout); - WaitForFinish("arguments", "4", url, kShortWaitTimeout); - WaitForFinish("arguments", "5", url, kShortWaitTimeout); - WaitForFinish("arguments", "6", url, kShortWaitTimeout); - WaitForFinish("arguments", "7", url, kShortWaitTimeout); - WaitForFinish("arguments", "8", url, kShortWaitTimeout); - WaitForFinish("arguments", "9", url, kShortWaitTimeout); - WaitForFinish("arguments", "10", url, kShortWaitTimeout); - WaitForFinish("arguments", "11", url, kShortWaitTimeout); - WaitForFinish("arguments", "12", url, kShortWaitTimeout); - WaitForFinish("arguments", "13", url, kShortWaitTimeout); - WaitForFinish("arguments", "14", url, kShortWaitTimeout); - WaitForFinish("arguments", "15", url, kShortWaitTimeout); + + WaitForFinish("arguments", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "2", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "3", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "4", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "5", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "6", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "7", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "8", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "9", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "10", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "11", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "12", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "13", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "14", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); + WaitForFinish("arguments", "15", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } // Test various calls to GetURL from a plugin. TEST_F(NPAPITester, GetURL) { std::wstring test_case = L"geturl.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("geturl", "1", url, kShortWaitTimeout); + WaitForFinish("geturl", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } // Test various calls to GetURL for javascript URLs with // non NULL targets from a plugin. TEST_F(NPAPITester, GetJavaScriptURL) { std::wstring test_case = L"get_javascript_url.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("getjavascripturl", "1", url, kShortWaitTimeout); + WaitForFinish("getjavascripturl", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } @@ -202,27 +177,32 @@ TEST_F(NPAPITester, GetJavaScriptURL) { // will crash. TEST_F(NPAPITester, NPObjectProxy) { std::wstring test_case = L"npobject_proxy.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("npobject_proxy", "1", url, kShortWaitTimeout); + WaitForFinish("npobject_proxy", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } // Tests if a plugin executing a self deleting script using NPN_GetURL // works without crashing or hanging TEST_F(NPAPITester, SelfDeletePluginGetUrl) { std::wstring test_case = L"self_delete_plugin_geturl.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("self_delete_plugin_geturl", "1", url, kShortWaitTimeout); + WaitForFinish("self_delete_plugin_geturl", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); } // Tests if a plugin executing a self deleting script using Invoke // works without crashing or hanging TEST_F(NPAPITester, SelfDeletePluginInvoke) { std::wstring test_case = L"self_delete_plugin_invoke.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("self_delete_plugin_invoke", "1", url, kShortWaitTimeout); + WaitForFinish("self_delete_plugin_invoke", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); } // Tests if a plugin executing a self deleting script in the context of @@ -231,9 +211,11 @@ TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInvokeInSynchronousPaint) { if (!UITest::in_process_plugins() && !UITest::in_process_renderer()) { show_window_ = true; std::wstring test_case = L"execute_script_delete_in_paint.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("execute_script_delete_in_paint", "1", url, kShortWaitTimeout); + WaitForFinish("execute_script_delete_in_paint", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); } } @@ -241,9 +223,11 @@ TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInNewStream) { if (!UITest::in_process_plugins() && !UITest::in_process_renderer()) { show_window_ = true; std::wstring test_case = L"self_delete_plugin_stream.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("self_delete_plugin_stream", "1", url, kShortWaitTimeout); + WaitForFinish("self_delete_plugin_stream", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); } } @@ -251,33 +235,39 @@ TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInNewStream) { TEST_F(NPAPIVisiblePluginTester, VerifyPluginWindowRect) { show_window_ = true; std::wstring test_case = L"verify_plugin_window_rect.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("checkwindowrect", "1", url, kShortWaitTimeout); + WaitForFinish("checkwindowrect", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } TEST_F(NPAPIVisiblePluginTester, VerifyNPObjectLifetimeTest) { if (!UITest::in_process_plugins() && !UITest::in_process_renderer()) { show_window_ = true; std::wstring test_case = L"npobject_lifetime_test.html"; - GURL url = GetTestUrl(test_case); + GURL url = GetTestUrl(L"npapi", test_case); NavigateToURL(url); - WaitForFinish("npobject_lifetime_test", "1", url, kShortWaitTimeout); + WaitForFinish("npobject_lifetime_test", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); } } // Tests that we don't crash or assert if NPP_New fails TEST_F(NPAPIVisiblePluginTester, NewFails) { - GURL url = GetTestUrl(L"new_fails.html"); + GURL url = GetTestUrl(L"npapi", L"new_fails.html"); NavigateToURL(url); - WaitForFinish("new_fails", "1", url, kShortWaitTimeout); + WaitForFinish("new_fails", "1", url, kTestCompleteCookie, + kTestCompleteSuccess, kShortWaitTimeout); } TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInNPNEvaluate) { if (!UITest::in_process_plugins() && !UITest::in_process_renderer()) { - GURL url = GetTestUrl(L"execute_script_delete_in_npn_evaluate.html"); + GURL url = GetTestUrl(L"npapi", + L"execute_script_delete_in_npn_evaluate.html"); NavigateToURL(url); WaitForFinish("npobject_delete_plugin_in_evaluate", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, kShortWaitTimeout); } }
\ No newline at end of file diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc index 263b7b7..a9e799f 100644 --- a/chrome/test/ui/ui_test.cc +++ b/chrome/test/ui/ui_test.cc @@ -28,6 +28,7 @@ #include "chrome/test/automation/window_proxy.h" #include "chrome/test/test_file_util.h" #include "googleurl/src/gurl.h" +#include "net/base/net_util.h" bool UITest::in_process_renderer_ = false; bool UITest::in_process_plugins_ = false; @@ -586,5 +587,40 @@ void UITest::PrintResult(const std::wstring& measurement, trace.c_str(), value, units.c_str()); } +GURL UITest::GetTestUrl(const std::wstring& test_directory, + const std::wstring &test_case) { + std::wstring path; + PathService::Get(chrome::DIR_TEST_DATA, &path); + file_util::AppendToPath(&path, test_directory); + file_util::AppendToPath(&path, test_case); + return net::FilePathToFileURL(path); +} + +void UITest::WaitForFinish(const std::string &name, + const std::string &id, + const GURL &url, + const std::string& test_complete_cookie, + const std::string& expected_cookie_value, + const int wait_time) { + const int kIntervalMilliSeconds = 50; + // The webpage being tested has javascript which sets a cookie + // which signals completion of the test. The cookie name is + // a concatenation of the test name and the test id. This allows + // us to run multiple tests within a single webpage and test + // that they all c + std::string cookie_name = name; + cookie_name.append("."); + cookie_name.append(id); + cookie_name.append("."); + cookie_name.append(test_complete_cookie); + + scoped_ptr<TabProxy> tab(GetActiveTab()); + + bool test_result = WaitUntilCookieValue(tab.get(), url, + cookie_name.c_str(), + kIntervalMilliSeconds, wait_time, + expected_cookie_value.c_str()); + EXPECT_EQ(true, test_result); +} diff --git a/chrome/test/ui/ui_test.h b/chrome/test/ui/ui_test.h index 5752bc7..0027c97 100644 --- a/chrome/test/ui/ui_test.h +++ b/chrome/test/ui/ui_test.h @@ -273,6 +273,19 @@ class UITest : public testing::Test { // error. DictionaryValue* GetDefaultProfilePreferences(); + // Generate the URL for testing a particular test. + // HTML for the tests is all located in + // test_root_directory\test_directory\<testcase> + static GURL GetTestUrl(const std::wstring& test_directory, + const std::wstring &test_case); + + // Waits for the test case to finish. + // ASSERTS if there are test failures. + void WaitForFinish(const std::string &name, + const std::string &id, const GURL &url, + const std::string& test_complete_cookie, + const std::string& expected_cookie_value, + const int wait_time); private: // Check that no processes related to Chrome exist, displaying // the given message if any do. diff --git a/chrome/test/ui/ui_tests.vcproj b/chrome/test/ui/ui_tests.vcproj index d9eb832..9cbe00b 100644 --- a/chrome/test/ui/ui_tests.vcproj +++ b/chrome/test/ui/ui_tests.vcproj @@ -221,6 +221,14 @@ RelativePath="..\..\browser\browser_uitest.cc" > </File> + <Filter + Name="TestImages" + > + <File + RelativePath="..\..\browser\images_uitest.cc" + > + </File> + </Filter> </Filter> <Filter Name="TestChromeLogging" @@ -239,14 +247,6 @@ </File> </Filter> <Filter - Name="TestImages" - > - <File - RelativePath="..\..\browser\images_uitest.cc" - > - </File> - </Filter> - <Filter Name="TestIFrame" > <File @@ -522,6 +522,14 @@ > </File> </Filter> + <Filter + Name="TestHistory" + > + <File + RelativePath=".\history_uitest.cc" + > + </File> + </Filter> </Files> <Globals> </Globals> |