17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef PPAPI_TESTS_TEST_HOST_RESOLVER_H_
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define PPAPI_TESTS_TEST_HOST_RESOLVER_H_
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include <string>
97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_host_resolver.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ppapi/tests/test_case.h"
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace pp {
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass HostResolver;
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass NetAddress;
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass TCPSocket;
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace pp
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class TestHostResolver : public TestCase {
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  explicit TestHostResolver(TestingInstance* instance);
227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // TestCase implementation.
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual bool Init();
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void RunTests(const std::string& filter);
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private:
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string SyncConnect(pp::TCPSocket* socket,
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                          const pp::NetAddress& address);
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string SyncRead(pp::TCPSocket* socket,
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       char* buffer,
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       int32_t num_bytes,
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       int32_t* bytes_read);
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string SyncWrite(pp::TCPSocket* socket,
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                        const char* buffer,
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                        int32_t num_bytes,
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                        int32_t* bytes_written);
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string CheckHTTPResponse(pp::TCPSocket* socket,
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                const std::string& request,
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                const std::string& response);
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string SyncResolve(pp::HostResolver* host_resolver,
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                          const std::string& host,
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                          uint16_t port,
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                          const PP_HostResolver_Hint& hint);
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  std::string ParameterizedTestResolve(const PP_HostResolver_Hint& hint);
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  std::string TestEmpty();
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  std::string TestResolve();
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  std::string TestResolveIPv4();
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  std::string host_;
527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  uint16_t port_;
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif  // PPAPI_TESTS_TEST_HOST_RESOLVER_H_
56