summaryrefslogtreecommitdiffstats
path: root/chrome/test/ui
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/ui')
-rw-r--r--chrome/test/ui/history_uitest.cc58
-rw-r--r--chrome/test/ui/npapi_uitest.cpp160
-rw-r--r--chrome/test/ui/ui_test.cc36
-rw-r--r--chrome/test/ui/ui_test.h13
-rw-r--r--chrome/test/ui/ui_tests.vcproj24
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>