test_network_proxy.cc 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright (c) 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ppapi/tests/test_network_proxy.h"
  5. #include "ppapi/cpp/instance.h"
  6. #include "ppapi/cpp/network_proxy.h"
  7. #include "ppapi/cpp/var.h"
  8. #include "ppapi/tests/testing_instance.h"
  9. REGISTER_TEST_CASE(NetworkProxy);
  10. TestNetworkProxy::TestNetworkProxy(TestingInstance* instance)
  11. : TestCase(instance) {
  12. }
  13. void TestNetworkProxy::RunTests(const std::string& filter) {
  14. RUN_CALLBACK_TEST(TestNetworkProxy, GetProxyForURL, filter);
  15. }
  16. std::string TestNetworkProxy::TestGetProxyForURL() {
  17. TestCompletionCallbackWithOutput<pp::Var> callback(instance_->pp_instance(),
  18. callback_type());
  19. callback.WaitForResult(
  20. pp::NetworkProxy::GetProxyForURL(instance_,
  21. pp::Var("http://127.0.0.1/foobar/"),
  22. callback.GetCallback()));
  23. CHECK_CALLBACK_BEHAVIOR(callback);
  24. ASSERT_EQ(PP_OK, callback.result());
  25. pp::Var output = callback.output();
  26. ASSERT_TRUE(output.is_string());
  27. // Assume no one configures a proxy for localhost.
  28. ASSERT_EQ("DIRECT", callback.output().AsString());
  29. callback.WaitForResult(
  30. pp::NetworkProxy::GetProxyForURL(instance_,
  31. pp::Var("http://www.google.com"),
  32. callback.GetCallback()));
  33. CHECK_CALLBACK_BEHAVIOR(callback);
  34. ASSERT_EQ(PP_OK, callback.result());
  35. output = callback.output();
  36. // Don't know what the proxy might be, but it should be a valid result.
  37. ASSERT_TRUE(output.is_string());
  38. callback.WaitForResult(
  39. pp::NetworkProxy::GetProxyForURL(instance_,
  40. pp::Var("file:///tmp"),
  41. callback.GetCallback()));
  42. CHECK_CALLBACK_BEHAVIOR(callback);
  43. ASSERT_EQ(PP_OK, callback.result());
  44. output = callback.output();
  45. ASSERT_TRUE(output.is_string());
  46. // Should get "DIRECT" for file:// URLs.
  47. ASSERT_EQ("DIRECT", output.AsString());
  48. callback.WaitForResult(
  49. pp::NetworkProxy::GetProxyForURL(instance_,
  50. pp::Var("this isn't a url"),
  51. callback.GetCallback()));
  52. CHECK_CALLBACK_BEHAVIOR(callback);
  53. ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result());
  54. ASSERT_TRUE(callback.output().is_undefined());
  55. callback.WaitForResult(
  56. pp::NetworkProxy::GetProxyForURL(instance_,
  57. pp::Var(42), // non-string Var
  58. callback.GetCallback()));
  59. CHECK_CALLBACK_BEHAVIOR(callback);
  60. ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result());
  61. ASSERT_TRUE(callback.output().is_undefined());
  62. PASS();
  63. }