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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
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..fce08b8bd0e1f9e4b265ed25a7cfb3a8992dc070 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;
yzshen1 2012/04/06 19:24:33 ditto.
raymes 2012/04/06 23:22:47 Done.
}
+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()) {
yzshen1 2012/04/06 19:24:33 I used to be told to not validate instance here. B
raymes 2012/04/06 23:22:47 Done.
PassRefFromConstructor(get_interface<PPB_TCPSocket_Private>()->Create(
instance.pp_instance()));
}
@@ -34,76 +39,129 @@ 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>())
- return callback.MayForce(PP_ERROR_NOINTERFACE);
- return get_interface<PPB_TCPSocket_Private>()->Connect(
- pp_resource(), host, port, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private>())
+ return get_interface<PPB_TCPSocket_Private>()->Connect(
+ pp_resource(), host, port, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private_0_3>())
+ return get_interface<PPB_TCPSocket_Private_0_3>()->Connect(
+ pp_resource(), host, port, callback.pp_completion_callback());
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
}
int32_t TCPSocketPrivate::ConnectWithNetAddress(
const PP_NetAddress_Private* addr,
const CompletionCallback& callback) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return callback.MayForce(PP_ERROR_NOINTERFACE);
- return get_interface<PPB_TCPSocket_Private>()->ConnectWithNetAddress(
- pp_resource(), addr, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private>())
+ return get_interface<PPB_TCPSocket_Private>()->ConnectWithNetAddress(
+ pp_resource(), addr, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private_0_3>())
+ return get_interface<PPB_TCPSocket_Private_0_3>()->ConnectWithNetAddress(
+ pp_resource(), addr, callback.pp_completion_callback());
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
}
bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return false;
-
- PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetLocalAddress(
- pp_resource(), local_addr);
- return PP_ToBool(result);
+ if (has_interface<PPB_TCPSocket_Private>()) {
+ PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetLocalAddress(
+ pp_resource(), local_addr);
+ return PP_ToBool(result);
+ }
+ if (has_interface<PPB_TCPSocket_Private_0_3>()) {
+ PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()->
+ GetLocalAddress(pp_resource(), local_addr);
+ return PP_ToBool(result);
+ }
+ return false;
}
bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return false;
- PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetRemoteAddress(
- pp_resource(), remote_addr);
- return PP_ToBool(result);
+ if (has_interface<PPB_TCPSocket_Private>()) {
+ PP_Bool result = get_interface<PPB_TCPSocket_Private>()->GetRemoteAddress(
+ pp_resource(), remote_addr);
+ return PP_ToBool(result);
+ }
+ if (has_interface<PPB_TCPSocket_Private_0_3>()) {
+ PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()->
+ GetRemoteAddress(pp_resource(), remote_addr);
+ return PP_ToBool(result);
+ }
+ return false;
}
int32_t TCPSocketPrivate::SSLHandshake(const char* server_name,
uint16_t server_port,
const CompletionCallback& callback) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return callback.MayForce(PP_ERROR_NOINTERFACE);
- return get_interface<PPB_TCPSocket_Private>()->SSLHandshake(
- pp_resource(), server_name, server_port,
- callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private>()) {
+ return get_interface<PPB_TCPSocket_Private>()->SSLHandshake(
+ pp_resource(), server_name, server_port,
yzshen1 2012/04/06 19:24:33 wrong indent. (and also line 108)
raymes 2012/04/06 23:22:47 Done.
+ callback.pp_completion_callback());
+ }
+ if (has_interface<PPB_TCPSocket_Private_0_3>()) {
+ return get_interface<PPB_TCPSocket_Private_0_3>()->SSLHandshake(
+ pp_resource(), server_name, server_port,
+ callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
+}
+
+X509Certificate TCPSocketPrivate::GetServerCertificate() {
+ if (has_interface<PPB_TCPSocket_Private>())
yzshen1 2012/04/06 19:24:33 Use {} for more-than-one-line body, please. (And p
raymes 2012/04/06 23:22:47 Done.
+ return X509Certificate(
+ get_interface<PPB_TCPSocket_Private>()->GetServerCertificate(
yzshen1 2012/04/06 19:24:33 The handling of ref count here is probably incorre
raymes 2012/04/06 23:22:47 Thanks, I actually didn't know the regular constru
+ pp_resource()));
+ return X509Certificate();
+}
+
+bool TCPSocketPrivate::AddChainBuildingCertificate(const X509Certificate& cert,
+ bool trusted) {
+ if (has_interface<PPB_TCPSocket_Private>())
+ return PP_ToBool(get_interface<PPB_TCPSocket_Private>()->
+ AddChainBuildingCertificate(pp_resource(), cert.pp_resource(),
+ PP_FromBool(trusted)));
+ return false;
}
int32_t TCPSocketPrivate::Read(char* buffer,
int32_t bytes_to_read,
const CompletionCallback& callback) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return callback.MayForce(PP_ERROR_NOINTERFACE);
- return get_interface<PPB_TCPSocket_Private>()->Read(
- pp_resource(), buffer, bytes_to_read, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private>())
+ return get_interface<PPB_TCPSocket_Private>()->Read(
+ pp_resource(), buffer, bytes_to_read,
+ callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private_0_3>())
+ return get_interface<PPB_TCPSocket_Private_0_3>()->Read(
+ pp_resource(), buffer, bytes_to_read,
+ callback.pp_completion_callback());
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
}
int32_t TCPSocketPrivate::Write(const char* buffer,
int32_t bytes_to_write,
const CompletionCallback& callback) {
- if (!has_interface<PPB_TCPSocket_Private>())
- return callback.MayForce(PP_ERROR_NOINTERFACE);
- return get_interface<PPB_TCPSocket_Private>()->Write(
- pp_resource(), buffer, bytes_to_write, callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private>())
+ return get_interface<PPB_TCPSocket_Private>()->Write(
+ pp_resource(), buffer, bytes_to_write,
+ callback.pp_completion_callback());
+ if (has_interface<PPB_TCPSocket_Private_0_3>())
+ return get_interface<PPB_TCPSocket_Private_0_3>()->Write(
+ pp_resource(), buffer, bytes_to_write,
+ callback.pp_completion_callback());
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
}
void TCPSocketPrivate::Disconnect() {
- if (!has_interface<PPB_TCPSocket_Private>())
- return;
- return get_interface<PPB_TCPSocket_Private>()->Disconnect(pp_resource());
+ if (has_interface<PPB_TCPSocket_Private>())
+ return get_interface<PPB_TCPSocket_Private>()->Disconnect(pp_resource());
+ if (has_interface<PPB_TCPSocket_Private_0_3>())
+ return get_interface<PPB_TCPSocket_Private_0_3>()->Disconnect(
+ pp_resource());
}
} // namespace pp

Powered by Google App Engine
This is Rietveld 408576698