| // Copyright 2013 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. | |
| #ifndef PPAPI_TESTS_TEST_UDP_SOCKET_H_ | |
| #define PPAPI_TESTS_TEST_UDP_SOCKET_H_ | |
| #include <stddef.h> | |
| #include <string> | |
| #include "ppapi/c/pp_stdint.h" | |
| #include "ppapi/c/ppb_udp_socket.h" | |
| #include "ppapi/cpp/net_address.h" | |
| #include "ppapi/tests/test_case.h" | |
| namespace { | |
| typedef int32_t (*UDPSocketSetOption)(PP_Resource udp_socket, | |
| PP_UDPSocket_Option name, | |
| struct PP_Var value, | |
| struct PP_CompletionCallback callback); | |
| } | |
| namespace pp { | |
| class UDPSocket; | |
| } | |
| class TestUDPSocket: public TestCase { | |
| public: | |
| explicit TestUDPSocket(TestingInstance* instance); | |
| // TestCase implementation. | |
| virtual bool Init(); | |
| virtual void RunTests(const std::string& filter); | |
| private: | |
| std::string GetLocalAddress(pp::NetAddress* address); | |
| std::string SetBroadcastOptions(pp::UDPSocket* socket); | |
| std::string BindUDPSocket(pp::UDPSocket* socket, | |
| const pp::NetAddress& address); | |
| std::string LookupPortAndBindUDPSocket(pp::UDPSocket* socket, | |
| pp::NetAddress* address); | |
| std::string ReadSocket(pp::UDPSocket* socket, | |
| pp::NetAddress* address, | |
| size_t size, | |
| std::string* message); | |
| std::string PassMessage(pp::UDPSocket* target, | |
| pp::UDPSocket* source, | |
| const pp::NetAddress& target_address, | |
| const std::string& message, | |
| pp::NetAddress* recvfrom_address); | |
| std::string SetMulticastOptions(pp::UDPSocket* socket); | |
| std::string TestReadWrite(); | |
| std::string TestBroadcast(); | |
| int32_t SetOptionValue(UDPSocketSetOption func, | |
| PP_Resource socket, | |
| PP_UDPSocket_Option option, | |
| const PP_Var& value); | |
| std::string TestSetOption_1_0(); | |
| std::string TestSetOption_1_1(); | |
| std::string TestSetOption(); | |
| std::string TestParallelSend(); | |
| std::string TestMulticast(); | |
| // Error cases. It's up to the parent test fixture to ensure that these events | |
| // result in errors. | |
| std::string TestBindFails(); | |
| std::string TestSetBroadcastFails(); | |
| std::string TestSendToFails(); | |
| std::string TestReadFails(); | |
| pp::NetAddress address_; | |
| const PPB_UDPSocket_1_0* socket_interface_1_0_; | |
| const PPB_UDPSocket_1_1* socket_interface_1_1_; | |
| }; | |
| #endif // PPAPI_TESTS_TEST_UDP_SOCKET_H_ |