Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Side by Side Diff: ppapi/cpp/private/tcp_socket_private.cc

Issue 9699100: Add functionality to pppapi TCPSocket to support secure sockets in flash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/cpp/private/tcp_socket_private.h" 5 #include "ppapi/cpp/private/tcp_socket_private.h"
6 6
7 #include "ppapi/c/pp_bool.h" 7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/completion_callback.h" 9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
11 #include "ppapi/cpp/module.h" 11 #include "ppapi/cpp/module.h"
12 #include "ppapi/cpp/module_impl.h" 12 #include "ppapi/cpp/module_impl.h"
13 13
14 namespace pp { 14 namespace pp {
15 15
16 namespace { 16 namespace {
17 17
18 template <> const char* interface_name<PPB_TCPSocket_Private>() { 18 template <> const char* interface_name<PPB_TCPSocket_Private>() {
19 return PPB_TCPSOCKET_PRIVATE_INTERFACE; 19 return PPB_TCPSOCKET_PRIVATE_INTERFACE;
20 } 20 }
21 21
22 template <> const char* interface_name<PPB_TCPSocket_Private_0_3>() {
23 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_3;
24 }
25
22 } // namespace 26 } // namespace
23 27
24 TCPSocketPrivate::TCPSocketPrivate(const InstanceHandle& instance) { 28 TCPSocketPrivate::TCPSocketPrivate(const InstanceHandle& instance) {
25 if (has_interface<PPB_TCPSocket_Private>()) { 29 if ((has_interface<PPB_TCPSocket_Private>() ||
30 has_interface<PPB_TCPSocket_Private_0_3>()) && instance.pp_instance()) {
26 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private>()->Create( 31 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private>()->Create(
27 instance.pp_instance())); 32 instance.pp_instance()));
28 } 33 }
29 } 34 }
30 35
31 TCPSocketPrivate::TCPSocketPrivate(PassRef, PP_Resource resource) 36 TCPSocketPrivate::TCPSocketPrivate(PassRef, PP_Resource resource)
32 : Resource(PASS_REF, resource) { 37 : Resource(PASS_REF, resource) {
33 } 38 }
34 39
35 // static 40 // static
36 bool TCPSocketPrivate::IsAvailable() { 41 bool TCPSocketPrivate::IsAvailable() {
37 return has_interface<PPB_TCPSocket_Private>(); 42 return has_interface<PPB_TCPSocket_Private>() ||
43 has_interface<PPB_TCPSocket_Private_0_3>();
38 } 44 }
39 45
40 int32_t TCPSocketPrivate::Connect(const char* host, 46 int32_t TCPSocketPrivate::Connect(const char* host,
41 uint16_t port, 47 uint16_t port,
42 const CompletionCallback& callback) { 48 const CompletionCallback& callback) {
43 if (!has_interface<PPB_TCPSocket_Private>()) 49 if (!has_interface<PPB_TCPSocket_Private>() &&
50 !has_interface<PPB_TCPSocket_Private_0_3>())
44 return callback.MayForce(PP_ERROR_NOINTERFACE); 51 return callback.MayForce(PP_ERROR_NOINTERFACE);
45 return get_interface<PPB_TCPSocket_Private>()->Connect( 52 return get_interface<PPB_TCPSocket_Private>()->Connect(
46 pp_resource(), host, port, callback.pp_completion_callback()); 53 pp_resource(), host, port, callback.pp_completion_callback());
47 } 54 }
48 55
49 int32_t TCPSocketPrivate::ConnectWithNetAddress( 56 int32_t TCPSocketPrivate::ConnectWithNetAddress(
50 const PP_NetAddress_Private* addr, 57 const PP_NetAddress_Private* addr,
51 const CompletionCallback& callback) { 58 const CompletionCallback& callback) {
52 if (!has_interface<PPB_TCPSocket_Private>()) 59 if (!has_interface<PPB_TCPSocket_Private>() &&
60 !has_interface<PPB_TCPSocket_Private_0_3>())
53 return callback.MayForce(PP_ERROR_NOINTERFACE); 61 return callback.MayForce(PP_ERROR_NOINTERFACE);
54 return get_interface<PPB_TCPSocket_Private>()->ConnectWithNetAddress( 62 return get_interface<PPB_TCPSocket_Private>()->ConnectWithNetAddress(
55 pp_resource(), addr, callback.pp_completion_callback()); 63 pp_resource(), addr, callback.pp_completion_callback());
56 } 64 }
57 65
58 bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) { 66 bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) {
59 if (!has_interface<PPB_TCPSocket_Private>()) 67 if (!has_interface<PPB_TCPSocket_Private>() &&
68 !has_interface<PPB_TCPSocket_Private_0_3>())
60 return false; 69 return false;
61 70
62 PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetLocalAddress( 71 PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetLocalAddress(
63 pp_resource(), local_addr); 72 pp_resource(), local_addr);
64 return PP_ToBool(result); 73 return PP_ToBool(result);
65 } 74 }
66 75
67 bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) { 76 bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) {
68 if (!has_interface<PPB_TCPSocket_Private>()) 77 if (!has_interface<PPB_TCPSocket_Private>() &&
78 !has_interface<PPB_TCPSocket_Private_0_3>())
69 return false; 79 return false;
70 PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetRemoteAddress( 80 PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetRemoteAddress(
71 pp_resource(), remote_addr); 81 pp_resource(), remote_addr);
72 return PP_ToBool(result); 82 return PP_ToBool(result);
73 } 83 }
74 84
75 int32_t TCPSocketPrivate::SSLHandshake(const char* server_name, 85 int32_t TCPSocketPrivate::SSLHandshake(const char* server_name,
76 uint16_t server_port, 86 uint16_t server_port,
77 const CompletionCallback& callback) { 87 const CompletionCallback& callback) {
78 if (!has_interface<PPB_TCPSocket_Private>()) 88 if (!has_interface<PPB_TCPSocket_Private>() &&
89 !has_interface<PPB_TCPSocket_Private_0_3>())
79 return callback.MayForce(PP_ERROR_NOINTERFACE); 90 return callback.MayForce(PP_ERROR_NOINTERFACE);
80 return get_interface<PPB_TCPSocket_Private>()->SSLHandshake( 91 return get_interface<PPB_TCPSocket_Private>()->SSLHandshake(
81 pp_resource(), server_name, server_port, 92 pp_resource(), server_name, server_port,
82 callback.pp_completion_callback()); 93 callback.pp_completion_callback());
83 } 94 }
84 95
96 X509Certificate TCPSocketPrivate::GetServerCertificate() {
97 if (!has_interface<PPB_TCPSocket_Private>())
98 return X509Certificate();
99 return X509Certificate(
100 get_interface<PPB_TCPSocket_Private>()->GetServerCertificate(
101 pp_resource()));
102 }
103
104 bool TCPSocketPrivate::AddChainBuildingCertificate(const X509Certificate& cert,
105 bool trusted) {
106 if (!has_interface<PPB_TCPSocket_Private>())
107 return false;
108 return get_interface<PPB_TCPSocket_Private>()->AddChainBuildingCertificate(
109 pp_resource(),
110 cert.pp_resource(),
111 PP_FromBool(trusted));
112 }
113
85 int32_t TCPSocketPrivate::Read(char* buffer, 114 int32_t TCPSocketPrivate::Read(char* buffer,
86 int32_t bytes_to_read, 115 int32_t bytes_to_read,
87 const CompletionCallback& callback) { 116 const CompletionCallback& callback) {
88 if (!has_interface<PPB_TCPSocket_Private>()) 117 if (!has_interface<PPB_TCPSocket_Private>() &&
118 !has_interface<PPB_TCPSocket_Private_0_3>())
89 return callback.MayForce(PP_ERROR_NOINTERFACE); 119 return callback.MayForce(PP_ERROR_NOINTERFACE);
90 return get_interface<PPB_TCPSocket_Private>()->Read( 120 return get_interface<PPB_TCPSocket_Private>()->Read(
91 pp_resource(), buffer, bytes_to_read, callback.pp_completion_callback()); 121 pp_resource(), buffer, bytes_to_read, callback.pp_completion_callback());
92 } 122 }
93 123
94 int32_t TCPSocketPrivate::Write(const char* buffer, 124 int32_t TCPSocketPrivate::Write(const char* buffer,
95 int32_t bytes_to_write, 125 int32_t bytes_to_write,
96 const CompletionCallback& callback) { 126 const CompletionCallback& callback) {
97 if (!has_interface<PPB_TCPSocket_Private>()) 127 if (!has_interface<PPB_TCPSocket_Private>() &&
128 !has_interface<PPB_TCPSocket_Private_0_3>())
98 return callback.MayForce(PP_ERROR_NOINTERFACE); 129 return callback.MayForce(PP_ERROR_NOINTERFACE);
99 return get_interface<PPB_TCPSocket_Private>()->Write( 130 return get_interface<PPB_TCPSocket_Private>()->Write(
100 pp_resource(), buffer, bytes_to_write, callback.pp_completion_callback()); 131 pp_resource(), buffer, bytes_to_write, callback.pp_completion_callback());
101 } 132 }
102 133
103 void TCPSocketPrivate::Disconnect() { 134 void TCPSocketPrivate::Disconnect() {
104 if (!has_interface<PPB_TCPSocket_Private>()) 135 if (!has_interface<PPB_TCPSocket_Private>() &&
136 !has_interface<PPB_TCPSocket_Private_0_3>())
105 return; 137 return;
106 return get_interface<PPB_TCPSocket_Private>()->Disconnect(pp_resource()); 138 return get_interface<PPB_TCPSocket_Private>()->Disconnect(pp_resource());
107 } 139 }
108 140
109 } // namespace pp 141 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/cpp/private/tcp_socket_private.h ('k') | ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698