1// Copyright (c) 2012 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
5#ifndef PPAPI_TESTS_TEST_WEBSOCKET_H_
6#define PPAPI_TESTS_TEST_WEBSOCKET_H_
7
8#include <string>
9#include <vector>
10
11#include "ppapi/c/ppb_core.h"
12#include "ppapi/c/ppb_var.h"
13#include "ppapi/c/ppb_var_array_buffer.h"
14#include "ppapi/c/ppb_websocket.h"
15#include "ppapi/tests/test_case.h"
16
17class TestWebSocket : public TestCase {
18 public:
19  explicit TestWebSocket(TestingInstance* instance) : TestCase(instance) {}
20
21 private:
22  // TestCase implementation.
23  virtual bool Init();
24  virtual void RunTests(const std::string& filter);
25
26  std::string GetFullURL(const char* url);
27  PP_Var CreateVarString(const std::string& string);
28  PP_Var CreateVarBinary(const std::vector<uint8_t>& binary);
29  void ReleaseVar(const PP_Var& var);
30  bool AreEqualWithString(const PP_Var& var, const std::string& string);
31  bool AreEqualWithBinary(const PP_Var& var,
32                          const std::vector<uint8_t>& binary);
33
34  PP_Resource Connect(const std::string& url,
35                      int32_t* result,
36                      const std::string& protocol);
37
38  void Send(int32_t result, PP_Resource ws, const std::string& message);
39
40  std::string TestIsWebSocket();
41  std::string TestUninitializedPropertiesAccess();
42  std::string TestInvalidConnect();
43  std::string TestProtocols();
44  std::string TestGetURL();
45  std::string TestValidConnect();
46  std::string TestInvalidClose();
47  std::string TestValidClose();
48  std::string TestGetProtocol();
49  std::string TestTextSendReceive();
50  std::string TestTextSendReceiveTwice();
51  std::string TestBinarySendReceive();
52  std::string TestStressedSendReceive();
53  std::string TestBufferedAmount();
54  std::string TestAbortCallsWithCallback();
55  std::string TestAbortSendMessageCall();
56  std::string TestAbortCloseCall();
57  std::string TestAbortReceiveMessageCall();
58  std::string TestClosedFromServerWhileSending();
59
60  std::string TestCcInterfaces();
61
62  std::string TestUtilityInvalidConnect();
63  std::string TestUtilityProtocols();
64  std::string TestUtilityGetURL();
65  std::string TestUtilityValidConnect();
66  std::string TestUtilityInvalidClose();
67  std::string TestUtilityValidClose();
68  std::string TestUtilityGetProtocol();
69  std::string TestUtilityTextSendReceive();
70  std::string TestUtilityBinarySendReceive();
71  std::string TestUtilityBufferedAmount();
72
73  // Keeps Pepper API interfaces. These are used by the tests that access the C
74  // API directly.
75  const PPB_WebSocket* websocket_interface_;
76  const PPB_Var* var_interface_;
77  const PPB_VarArrayBuffer* arraybuffer_interface_;
78  const PPB_Core* core_interface_;
79};
80
81#endif  // PPAPI_TESTS_TEST_WEBSOCKET_H_
82