| Index: chrome/test/url_fetch_test/url_fetch_test.cc
|
| ===================================================================
|
| --- chrome/test/url_fetch_test/url_fetch_test.cc (revision 95438)
|
| +++ chrome/test/url_fetch_test/url_fetch_test.cc (working copy)
|
| @@ -1,182 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/file_path.h"
|
| -#include "base/file_util.h"
|
| -#include "base/path_service.h"
|
| -#include "base/string_number_conversions.h"
|
| -#include "base/string_util.h"
|
| -#include "base/test/test_timeouts.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "chrome/test/automation/tab_proxy.h"
|
| -#include "chrome/test/ui/ui_perf_test.h"
|
| -
|
| -namespace {
|
| -
|
| -// Provides a UI Test that lets us take the browser to a url, and
|
| -// wait for a cookie value to be set or a JavaScript expression to evaluate
|
| -// true before closing the page. It is undefined what happens if you specify
|
| -// both a cookie and a JS expression.
|
| -class UrlFetchTest : public UIPerfTest {
|
| - public:
|
| - UrlFetchTest() {
|
| - show_window_ = true;
|
| - dom_automation_enabled_ = true;
|
| - }
|
| - struct UrlFetchTestResult {
|
| - std::string cookie_value;
|
| - std::string javascript_variable;
|
| - };
|
| -
|
| - void SetUp() {
|
| - const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
|
| - if (cmd_line->HasSwitch("reference_build")) {
|
| - UseReferenceBuild();
|
| - }
|
| - UITest::SetUp();
|
| - }
|
| -
|
| - void RunTest(const GURL& url,
|
| - const char* wait_cookie_name,
|
| - const char* wait_cookie_value,
|
| - const char* var_to_fetch,
|
| - const std::string& wait_js_expr,
|
| - const std::string& wait_js_frame_xpath,
|
| - int wait_js_timeout_ms,
|
| - UrlFetchTestResult* result) {
|
| - scoped_refptr<TabProxy> tab(GetActiveTab());
|
| - ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(url));
|
| -
|
| - if (wait_cookie_name) {
|
| - if (wait_cookie_value) {
|
| - bool completed = WaitUntilCookieValue(
|
| - tab.get(), url, wait_cookie_name,
|
| - TestTimeouts::huge_test_timeout_ms(),
|
| - wait_cookie_value);
|
| - ASSERT_TRUE(completed);
|
| - } else {
|
| - result->cookie_value = WaitUntilCookieNonEmpty(
|
| - tab.get(), url, wait_cookie_name,
|
| - TestTimeouts::huge_test_timeout_ms());
|
| - ASSERT_TRUE(result->cookie_value.length());
|
| - }
|
| - } else if (!wait_js_expr.empty()) {
|
| - bool completed = WaitUntilJavaScriptCondition(
|
| - tab.get(),
|
| - UTF8ToWide(wait_js_frame_xpath),
|
| - UTF8ToWide(wait_js_expr),
|
| - wait_js_timeout_ms);
|
| - ASSERT_TRUE(completed);
|
| - }
|
| - if (var_to_fetch) {
|
| - std::string script = StringPrintf(
|
| - "window.domAutomationController.send(%s);", var_to_fetch);
|
| -
|
| - std::wstring value;
|
| - bool success = tab->ExecuteAndExtractString(L"", ASCIIToWide(script),
|
| - &value);
|
| - ASSERT_TRUE(success);
|
| - result->javascript_variable = WideToUTF8(value);
|
| - }
|
| - }
|
| -};
|
| -
|
| -bool WriteValueToFile(std::string value, const FilePath& path) {
|
| - int retval = file_util::WriteFile(path, value.c_str(), value.length());
|
| - return retval == static_cast<int>(value.length());
|
| -}
|
| -
|
| -// To actually do anything useful, this test should have a url
|
| -// passed on the command line, eg.
|
| -//
|
| -// --url=http://foo.bar.com
|
| -//
|
| -// Additional arguments:
|
| -//
|
| -// --wait_cookie_name=<name>
|
| -// Waits for a cookie named <name> to be set before exiting successfully.
|
| -//
|
| -// --wait_cookie_value=<value>
|
| -// In conjunction with --wait_cookie_name, this waits for a specific value
|
| -// to be set. (Incompatible with --wait_cookie_output)
|
| -//
|
| -// --wait_cookie_output=<filepath>
|
| -// In conjunction with --wait_cookie_name, this saves the cookie value to
|
| -// a file at the given path. (Incompatible with --wait_cookie_value)
|
| -//
|
| -// --wait_js_expr=<jscript_expr>
|
| -// Waits for a javascript expression to evaluate true before exiting
|
| -// successfully.
|
| -//
|
| -// --wait_js_timeout=<timeout_ms>
|
| -// In conjunction with --wait_js_condition, this sets the timeout in ms
|
| -// that we are prepared to wait. If this timeout is exceeded, we will exit
|
| -// with failure. Note that a timeout greater than the gtest timeout will not
|
| -// be honored.
|
| -//
|
| -// --wait_js_frame_xpath=<xpath>
|
| -// In conjuction with --wait_js_condition, the JavaScript expression is
|
| -// executed in the context of the frame that matches the provided xpath.
|
| -// If this is not specified (or empty string), then the main frame is used.
|
| -//
|
| -// --jsvar=<name>
|
| -// At the end of the test, fetch the named javascript variable from the page.
|
| -//
|
| -// --jsvar_output=<filepath>
|
| -// Write the value of the variable named by '--jsvar' to a file at the given
|
| -// path.
|
| -//
|
| -// --reference_build
|
| -// Use the reference build of chrome for the test.
|
| -TEST_F(UrlFetchTest, UrlFetch) {
|
| - const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
|
| -
|
| - if (!cmd_line->HasSwitch("url"))
|
| - return;
|
| -
|
| - std::string cookie_name =
|
| - cmd_line->GetSwitchValueASCII("wait_cookie_name");
|
| - std::string cookie_value =
|
| - cmd_line->GetSwitchValueASCII("wait_cookie_value");
|
| - std::string js_expr =
|
| - cmd_line->GetSwitchValueASCII("wait_js_expr");
|
| - std::string js_frame_xpath =
|
| - cmd_line->GetSwitchValueASCII("wait_js_frame_xpath");
|
| - std::string js_timeout_ms_str =
|
| - cmd_line->GetSwitchValueASCII("wait_js_timeout");
|
| -
|
| - std::string jsvar = cmd_line->GetSwitchValueASCII("jsvar");
|
| - int js_timeout_ms = -1; // no timeout, wait forever
|
| -
|
| - if (!js_timeout_ms_str.empty())
|
| - base::StringToInt(js_timeout_ms_str, &js_timeout_ms);
|
| -
|
| - UrlFetchTestResult result;
|
| - RunTest(GURL(cmd_line->GetSwitchValueASCII("url")),
|
| - cookie_name.length() > 0 ? cookie_name.c_str() : NULL,
|
| - cookie_value.length() > 0 ? cookie_value.c_str() : NULL,
|
| - jsvar.length() > 0 ? jsvar.c_str() : NULL,
|
| - js_expr,
|
| - js_frame_xpath,
|
| - js_timeout_ms,
|
| - &result);
|
| -
|
| - // Write out the cookie if requested
|
| - FilePath cookie_output_path =
|
| - cmd_line->GetSwitchValuePath("wait_cookie_output");
|
| - if (!cookie_output_path.value().empty()) {
|
| - ASSERT_TRUE(WriteValueToFile(result.cookie_value, cookie_output_path));
|
| - }
|
| -
|
| - // Write out the JS Variable if requested
|
| - FilePath jsvar_output_path = cmd_line->GetSwitchValuePath("jsvar_output");
|
| - if (!jsvar_output_path.value().empty()) {
|
| - ASSERT_TRUE(WriteValueToFile(result.javascript_variable,
|
| - jsvar_output_path));
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
|
|