| Index: ppapi/cpp/private/tcp_socket_private.cc
|
| diff --git a/ppapi/cpp/private/tcp_socket_private.cc b/ppapi/cpp/private/tcp_socket_private.cc
|
| index e15f5378b9a5347b5c61b0ce0d92ab685dd37392..990684fec4d23fcea7b82cc764c5c27782f98cfa 100644
|
| --- a/ppapi/cpp/private/tcp_socket_private.cc
|
| +++ b/ppapi/cpp/private/tcp_socket_private.cc
|
| @@ -19,10 +19,15 @@ template <> const char* interface_name<PPB_TCPSocket_Private>() {
|
| return PPB_TCPSOCKET_PRIVATE_INTERFACE;
|
| }
|
|
|
| +template <> const char* interface_name<PPB_TCPSocket_Private_0_3>() {
|
| + return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_3;
|
| +}
|
| +
|
| } // namespace
|
|
|
| TCPSocketPrivate::TCPSocketPrivate(const InstanceHandle& instance) {
|
| - if (has_interface<PPB_TCPSocket_Private>()) {
|
| + if ((has_interface<PPB_TCPSocket_Private>() ||
|
| + has_interface<PPB_TCPSocket_Private_0_3>()) && instance.pp_instance()) {
|
| PassRefFromConstructor(get_interface<PPB_TCPSocket_Private>()->Create(
|
| instance.pp_instance()));
|
| }
|
| @@ -34,13 +39,15 @@ TCPSocketPrivate::TCPSocketPrivate(PassRef, PP_Resource resource)
|
|
|
| // static
|
| bool TCPSocketPrivate::IsAvailable() {
|
| - return has_interface<PPB_TCPSocket_Private>();
|
| + return has_interface<PPB_TCPSocket_Private>() ||
|
| + has_interface<PPB_TCPSocket_Private_0_3>();
|
| }
|
|
|
| int32_t TCPSocketPrivate::Connect(const char* host,
|
| uint16_t port,
|
| const CompletionCallback& callback) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| return get_interface<PPB_TCPSocket_Private>()->Connect(
|
| pp_resource(), host, port, callback.pp_completion_callback());
|
| @@ -49,14 +56,16 @@ int32_t TCPSocketPrivate::Connect(const char* host,
|
| int32_t TCPSocketPrivate::ConnectWithNetAddress(
|
| const PP_NetAddress_Private* addr,
|
| const CompletionCallback& callback) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| return get_interface<PPB_TCPSocket_Private>()->ConnectWithNetAddress(
|
| pp_resource(), addr, callback.pp_completion_callback());
|
| }
|
|
|
| bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return false;
|
|
|
| PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetLocalAddress(
|
| @@ -65,7 +74,8 @@ bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) {
|
| }
|
|
|
| bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return false;
|
| PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetRemoteAddress(
|
| pp_resource(), remote_addr);
|
| @@ -75,17 +85,37 @@ bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) {
|
| int32_t TCPSocketPrivate::SSLHandshake(const char* server_name,
|
| uint16_t server_port,
|
| const CompletionCallback& callback) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| return get_interface<PPB_TCPSocket_Private>()->SSLHandshake(
|
| pp_resource(), server_name, server_port,
|
| callback.pp_completion_callback());
|
| }
|
|
|
| +X509Certificate TCPSocketPrivate::GetServerCertificate() {
|
| + if (!has_interface<PPB_TCPSocket_Private>())
|
| + return X509Certificate();
|
| + return X509Certificate(
|
| + get_interface<PPB_TCPSocket_Private>()->GetServerCertificate(
|
| + pp_resource()));
|
| +}
|
| +
|
| +bool TCPSocketPrivate::AddChainBuildingCertificate(const X509Certificate& cert,
|
| + bool trusted) {
|
| + if (!has_interface<PPB_TCPSocket_Private>())
|
| + return false;
|
| + return get_interface<PPB_TCPSocket_Private>()->AddChainBuildingCertificate(
|
| + pp_resource(),
|
| + cert.pp_resource(),
|
| + PP_FromBool(trusted));
|
| +}
|
| +
|
| int32_t TCPSocketPrivate::Read(char* buffer,
|
| int32_t bytes_to_read,
|
| const CompletionCallback& callback) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| return get_interface<PPB_TCPSocket_Private>()->Read(
|
| pp_resource(), buffer, bytes_to_read, callback.pp_completion_callback());
|
| @@ -94,14 +124,16 @@ int32_t TCPSocketPrivate::Read(char* buffer,
|
| int32_t TCPSocketPrivate::Write(const char* buffer,
|
| int32_t bytes_to_write,
|
| const CompletionCallback& callback) {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return callback.MayForce(PP_ERROR_NOINTERFACE);
|
| return get_interface<PPB_TCPSocket_Private>()->Write(
|
| pp_resource(), buffer, bytes_to_write, callback.pp_completion_callback());
|
| }
|
|
|
| void TCPSocketPrivate::Disconnect() {
|
| - if (!has_interface<PPB_TCPSocket_Private>())
|
| + if (!has_interface<PPB_TCPSocket_Private>() &&
|
| + !has_interface<PPB_TCPSocket_Private_0_3>())
|
| return;
|
| return get_interface<PPB_TCPSocket_Private>()->Disconnect(pp_resource());
|
| }
|
|
|