| Index: net/proxy/proxy_resolver_v8_unittest.cc
|
| ===================================================================
|
| --- net/proxy/proxy_resolver_v8_unittest.cc (revision 22399)
|
| +++ net/proxy/proxy_resolver_v8_unittest.cc (working copy)
|
| @@ -68,7 +68,7 @@
|
| }
|
|
|
| // Initialize with the PAC script data at |filename|.
|
| - void SetPacScriptFromDisk(const char* filename) {
|
| + int SetPacScriptFromDisk(const char* filename) {
|
| FilePath path;
|
| PathService::Get(base::DIR_SOURCE_ROOT, &path);
|
| path = path.AppendASCII("net");
|
| @@ -81,11 +81,13 @@
|
| bool ok = file_util::ReadFileToString(path, &file_contents);
|
|
|
| // If we can't load the file from disk, something is misconfigured.
|
| - LOG_IF(ERROR, !ok) << "Failed to read file: " << path.value();
|
| - ASSERT_TRUE(ok);
|
| + if (!ok) {
|
| + LOG(ERROR) << "Failed to read file: " << path.value();
|
| + return net::ERR_UNEXPECTED;
|
| + }
|
|
|
| // Load the PAC script into the ProxyResolver.
|
| - SetPacScriptByData(file_contents);
|
| + return SetPacScriptByData(file_contents, NULL);
|
| }
|
| };
|
|
|
| @@ -97,10 +99,11 @@
|
|
|
| TEST(ProxyResolverV8Test, Direct) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("direct.js");
|
| + int result = resolver.SetPacScriptFromDisk("direct.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_TRUE(proxy_info.is_direct());
|
| @@ -111,10 +114,11 @@
|
|
|
| TEST(ProxyResolverV8Test, ReturnEmptyString) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("return_empty_string.js");
|
| + int result = resolver.SetPacScriptFromDisk("return_empty_string.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_TRUE(proxy_info.is_direct());
|
| @@ -125,14 +129,15 @@
|
|
|
| TEST(ProxyResolverV8Test, Basic) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("passthrough.js");
|
| + int result = resolver.SetPacScriptFromDisk("passthrough.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| // The "FindProxyForURL" of this PAC script simply concatenates all of the
|
| // arguments into a pseudo-host. The purpose of this test is to verify that
|
| // the correct arguments are being passed to FindProxyForURL().
|
| {
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(GURL("http://query.com/path"),
|
| + result = resolver.GetProxyForURL(GURL("http://query.com/path"),
|
| &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_EQ("http.query.com.path.query.com:80",
|
| @@ -168,10 +173,11 @@
|
|
|
| for (size_t i = 0; i < arraysize(filenames); ++i) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk(filenames[i]);
|
| + int result = resolver.SetPacScriptFromDisk(filenames[i]);
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
|
|
| @@ -187,54 +193,46 @@
|
| // Try using a PAC script which defines no "FindProxyForURL" function.
|
| TEST(ProxyResolverV8Test, NoEntryPoint) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("no_entrypoint.js");
|
| + int result = resolver.SetPacScriptFromDisk("no_entrypoint.js");
|
| + EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| - EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
| -
|
| - MockJSBindings* bindings = resolver.mock_js_bindings();
|
| - EXPECT_EQ(0U, bindings->alerts.size());
|
| - ASSERT_EQ(1U, bindings->errors.size());
|
| - EXPECT_EQ("FindProxyForURL() is undefined.", bindings->errors[0]);
|
| - EXPECT_EQ(-1, bindings->errors_line_number[0]);
|
| + EXPECT_EQ(net::ERR_FAILED, result);
|
| }
|
|
|
| // Try loading a malformed PAC script.
|
| TEST(ProxyResolverV8Test, ParseError) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("missing_close_brace.js");
|
| + int result = resolver.SetPacScriptFromDisk("missing_close_brace.js");
|
| + EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| - EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
| + EXPECT_EQ(net::ERR_FAILED, result);
|
|
|
| MockJSBindings* bindings = resolver.mock_js_bindings();
|
| EXPECT_EQ(0U, bindings->alerts.size());
|
|
|
| - // We get two errors -- one during compilation, and then later when
|
| - // trying to run FindProxyForURL().
|
| - ASSERT_EQ(2U, bindings->errors.size());
|
| + // We get one error during compilation.
|
| + ASSERT_EQ(1U, bindings->errors.size());
|
|
|
| EXPECT_EQ("Uncaught SyntaxError: Unexpected end of input",
|
| bindings->errors[0]);
|
| EXPECT_EQ(-1, bindings->errors_line_number[0]);
|
| -
|
| - EXPECT_EQ("FindProxyForURL() is undefined.", bindings->errors[1]);
|
| - EXPECT_EQ(-1, bindings->errors_line_number[1]);
|
| }
|
|
|
| // Run a PAC script several times, which has side-effects.
|
| TEST(ProxyResolverV8Test, SideEffects) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("side_effects.js");
|
| + int result = resolver.SetPacScriptFromDisk("side_effects.js");
|
|
|
| // The PAC script increments a counter each time we invoke it.
|
| for (int i = 0; i < 3; ++i) {
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_EQ(StringPrintf("sideffect_%d:80", i),
|
| proxy_info.proxy_server().ToURI());
|
| @@ -242,11 +240,12 @@
|
|
|
| // Reload the script -- the javascript environment should be reset, hence
|
| // the counter starts over.
|
| - resolver.SetPacScriptFromDisk("side_effects.js");
|
| + result = resolver.SetPacScriptFromDisk("side_effects.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| for (int i = 0; i < 3; ++i) {
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_EQ(StringPrintf("sideffect_%d:80", i),
|
| proxy_info.proxy_server().ToURI());
|
| @@ -256,10 +255,11 @@
|
| // Execute a PAC script which throws an exception in FindProxyForURL.
|
| TEST(ProxyResolverV8Test, UnhandledException) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("unhandled_exception.js");
|
| + int result = resolver.SetPacScriptFromDisk("unhandled_exception.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| EXPECT_EQ(net::ERR_PAC_SCRIPT_FAILED, result);
|
|
|
| @@ -275,10 +275,11 @@
|
| // host/port doesn't check for non-ascii characters.
|
| TEST(ProxyResolverV8Test, DISABLED_ReturnUnicode) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("return_unicode.js");
|
| + int result = resolver.SetPacScriptFromDisk("return_unicode.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| // The result from this resolve was unparseable, because it
|
| // wasn't ascii.
|
| @@ -288,10 +289,11 @@
|
| // Test the PAC library functions that we expose in the JS environmnet.
|
| TEST(ProxyResolverV8Test, JavascriptLibrary) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("pac_library_unittest.js");
|
| + int result = resolver.SetPacScriptFromDisk("pac_library_unittest.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| // If the javascript side of this unit-test fails, it will throw a javascript
|
| // exception. Otherwise it will return "PROXY success:80".
|
| @@ -313,21 +315,23 @@
|
| EXPECT_EQ(net::ERR_FAILED, result);
|
|
|
| // Initialize it.
|
| - resolver.SetPacScriptFromDisk("direct.js");
|
| + result = resolver.SetPacScriptFromDisk("direct.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| // Resolve should now succeed.
|
| result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::OK, result);
|
|
|
| // Clear it, by initializing with an empty string.
|
| - resolver.SetPacScriptByData(std::string());
|
| + resolver.SetPacScriptByData(std::string(), NULL);
|
|
|
| // Resolve should fail again now.
|
| result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::ERR_FAILED, result);
|
|
|
| // Load a good script once more.
|
| - resolver.SetPacScriptFromDisk("direct.js");
|
| + result = resolver.SetPacScriptFromDisk("direct.js");
|
| + EXPECT_EQ(net::OK, result);
|
| result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| EXPECT_EQ(net::OK, result);
|
|
|
| @@ -338,10 +342,11 @@
|
| // Test marshalling/un-marshalling of values between C++/V8.
|
| TEST(ProxyResolverV8Test, V8Bindings) {
|
| ProxyResolverV8WithMockBindings resolver;
|
| - resolver.SetPacScriptFromDisk("bindings.js");
|
| + int result = resolver.SetPacScriptFromDisk("bindings.js");
|
| + EXPECT_EQ(net::OK, result);
|
|
|
| net::ProxyInfo proxy_info;
|
| - int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
| + result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL);
|
|
|
| EXPECT_EQ(net::OK, result);
|
| EXPECT_TRUE(proxy_info.is_direct());
|
|
|