Merge changes I913553e4,I178f6cde
am: ac54f2ff3e

Change-Id: Ia0b2e0bb03bbae1dd082fe026e211848b32d956e
diff --git a/Android.mk b/Android.mk
index fdd6e85..ae0e768 100644
--- a/Android.mk
+++ b/Android.mk
@@ -29,3 +29,5 @@
 LOCAL_CXX_STL := libc++
 
 include $(BUILD_SHARED_LIBRARY)
+
+include $(LOCAL_PATH)/test/Android.mk
diff --git a/test/Android.mk b/test/Android.mk
index 9c9722e..edf9107 100644
--- a/test/Android.mk
+++ b/test/Android.mk
@@ -18,6 +18,6 @@
 
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/../src $(LOCAL_PATH)/ external/v8
 
-LOCAL_SHARED_LIBRARIES := libpac libutils liblog
+LOCAL_SHARED_LIBRARIES := libpac libutils liblog libandroid_runtime
 
 include $(BUILD_NATIVE_TEST)
diff --git a/test/js-unittest/string_functions.js b/test/js-unittest/string_functions.js
new file mode 100644
index 0000000..a7c430f
--- /dev/null
+++ b/test/js-unittest/string_functions.js
@@ -0,0 +1,3 @@
+function FindProxyForURL(url, host) {
+  return "direct".toUpperCase();
+}
diff --git a/test/proxy_resolver_v8_unittest.cc b/test/proxy_resolver_v8_unittest.cc
index ad9c826..a13f5e5 100644
--- a/test/proxy_resolver_v8_unittest.cc
+++ b/test/proxy_resolver_v8_unittest.cc
@@ -544,5 +544,21 @@
   EXPECT_EQ("xn--bcher-kva.ch", bindings->dns_resolves_ex[0]);
 }
 
+TEST(ProxyResolverV8Test, StringPrototype) {
+  ProxyResolverV8WithMockBindings resolver(new MockJSBindings());
+  int result = resolver.SetPacScript(SCRIPT(STRING_FUNCTIONS_JS));
+  EXPECT_EQ(OK, result);
+
+  result = resolver.GetProxyForURL(kQueryUrl, kQueryHost, &kResults);
+
+  EXPECT_EQ(OK, result);
+  std::vector<std::string> proxies = string16ToProxyList(kResults);
+  EXPECT_EQ(proxies.size(), 1U);
+  EXPECT_EQ("DIRECT",proxies[0]);
+
+  EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
+  EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
+}
+
 }  // namespace
 }  // namespace net
diff --git a/test/proxy_test_script.h b/test/proxy_test_script.h
index 1042366..dc7bf3c 100644
--- a/test/proxy_test_script.h
+++ b/test/proxy_test_script.h
@@ -650,6 +650,12 @@
   "  return \"DIRECT\";\n" \
   "}\n" \
 
+#define STRING_FUNCTIONS_JS \
+  "function FindProxyForURL(url, host) {\n" \
+  "  return \"direct\".toUpperCase();\n" \
+  "}\n" \
+  "\n" \
+
 #define UNHANDLED_EXCEPTION_JS \
   "function FindProxyForURL(url, host) {\n" \
   "  // This will throw a runtime exception.\n" \