Home | History | Annotate | Download | only in private
      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 #include "ppapi/shared_impl/private/tcp_socket_private_impl.h"
      6 
      7 #include "base/logging.h"
      8 #include "ppapi/c/pp_errors.h"
      9 
     10 namespace ppapi {
     11 
     12 TCPSocketPrivateImpl::TCPSocketPrivateImpl(PP_Instance instance,
     13                                            uint32 socket_id)
     14     : Resource(OBJECT_IS_IMPL, instance),
     15       TCPSocketShared(OBJECT_IS_IMPL, socket_id) {
     16 }
     17 
     18 TCPSocketPrivateImpl::TCPSocketPrivateImpl(const HostResource& resource,
     19                                            uint32 socket_id)
     20     : Resource(OBJECT_IS_PROXY, resource),
     21       TCPSocketShared(OBJECT_IS_PROXY, socket_id) {
     22 }
     23 
     24 TCPSocketPrivateImpl::~TCPSocketPrivateImpl() {
     25 }
     26 
     27 thunk::PPB_TCPSocket_Private_API*
     28 TCPSocketPrivateImpl::AsPPB_TCPSocket_Private_API() {
     29   return this;
     30 }
     31 
     32 int32_t TCPSocketPrivateImpl::Connect(const char* host,
     33                                       uint16_t port,
     34                                       scoped_refptr<TrackedCallback> callback) {
     35   return ConnectImpl(host, port, callback);
     36 }
     37 
     38 int32_t TCPSocketPrivateImpl::ConnectWithNetAddress(
     39     const PP_NetAddress_Private* addr,
     40     scoped_refptr<TrackedCallback> callback) {
     41   return ConnectWithNetAddressImpl(addr, callback);
     42 }
     43 
     44 PP_Bool TCPSocketPrivateImpl::GetLocalAddress(
     45     PP_NetAddress_Private* local_addr) {
     46   return GetLocalAddressImpl(local_addr);
     47 }
     48 
     49 PP_Bool TCPSocketPrivateImpl::GetRemoteAddress(
     50     PP_NetAddress_Private* remote_addr) {
     51   return GetRemoteAddressImpl(remote_addr);
     52 }
     53 
     54 int32_t TCPSocketPrivateImpl::SSLHandshake(
     55     const char* server_name,
     56     uint16_t server_port,
     57     scoped_refptr<TrackedCallback> callback) {
     58   return SSLHandshakeImpl(server_name, server_port, callback);
     59 }
     60 
     61 PP_Resource TCPSocketPrivateImpl::GetServerCertificate() {
     62   return GetServerCertificateImpl();
     63 }
     64 
     65 PP_Bool TCPSocketPrivateImpl::AddChainBuildingCertificate(
     66     PP_Resource certificate,
     67     PP_Bool trusted) {
     68   return AddChainBuildingCertificateImpl(certificate, trusted);
     69 }
     70 
     71 int32_t TCPSocketPrivateImpl::Read(char* buffer,
     72                                    int32_t bytes_to_read,
     73                                    scoped_refptr<TrackedCallback> callback) {
     74   return ReadImpl(buffer, bytes_to_read, callback);
     75 }
     76 
     77 int32_t TCPSocketPrivateImpl::Write(const char* buffer,
     78                                     int32_t bytes_to_write,
     79                                     scoped_refptr<TrackedCallback> callback) {
     80   return WriteImpl(buffer, bytes_to_write, callback);
     81 }
     82 
     83 void TCPSocketPrivateImpl::Disconnect() {
     84   DisconnectImpl();
     85 }
     86 
     87 int32_t TCPSocketPrivateImpl::SetOption(
     88     PP_TCPSocketOption_Private name,
     89     const PP_Var& value,
     90     scoped_refptr<TrackedCallback> callback) {
     91   switch (name) {
     92     case PP_TCPSOCKETOPTION_PRIVATE_INVALID:
     93       return PP_ERROR_BADARGUMENT;
     94     case PP_TCPSOCKETOPTION_PRIVATE_NO_DELAY:
     95       return SetOptionImpl(PP_TCPSOCKET_OPTION_NO_DELAY, value, callback);
     96     default:
     97       NOTREACHED();
     98       return PP_ERROR_BADARGUMENT;
     99   }
    100 }
    101 
    102 Resource* TCPSocketPrivateImpl::GetOwnerResource() {
    103   return this;
    104 }
    105 
    106 int32_t TCPSocketPrivateImpl::OverridePPError(int32_t pp_error) {
    107   // PPB_TCPSocket_Private treats all errors from the browser process as
    108   // PP_ERROR_FAILED.
    109   if (pp_error < 0)
    110     return PP_ERROR_FAILED;
    111 
    112   return pp_error;
    113 }
    114 
    115 }  // namespace ppapi
    116