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

Unified Diff: webkit/plugins/ppapi/ppb_transport_impl.cc

Issue 7713021: Add SetProperty() in the PPB_Transport_Dev interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 4 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
« no previous file with comments | « webkit/plugins/ppapi/ppb_transport_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/ppapi/ppb_transport_impl.cc
diff --git a/webkit/plugins/ppapi/ppb_transport_impl.cc b/webkit/plugins/ppapi/ppb_transport_impl.cc
index d4ba8dfa660065cc2e95f6724a2929664f582233..fe8a38ab714ff9d9e9749562f828f48d851157eb 100644
--- a/webkit/plugins/ppapi/ppb_transport_impl.cc
+++ b/webkit/plugins/ppapi/ppb_transport_impl.cc
@@ -30,6 +30,9 @@ namespace {
const char kUdpProtocolName[] = "udp";
const char kTcpProtocolName[] = "tcp";
+const int kMinBufferSize = 1024;
+const int kMaxBufferSize = 1024 * 1024;
+
int MapNetError(int result) {
if (result > 0)
return result;
@@ -101,6 +104,70 @@ PP_Bool PPB_Transport_Impl::IsWritable() {
return PP_FromBool(writable_);
}
+int32_t PPB_Transport_Impl::SetProperty(PP_TransportProperty property,
+ PP_Var value) {
+ // SetProperty() may be called only before Connect().
+ if (started_)
+ return PP_ERROR_FAILED;
+
+ switch (property) {
+ case PP_TRANSPORTPROPERTY_STUN_SERVER: {
+ StringVar* value_str = StringVar::FromPPVar(value);
+ if (!value_str)
+ return PP_ERROR_BADARGUMENT;
+ config_.stun_server = value_str->value();
+ break;
+ }
+
+ case PP_TRANSPORTPROPERTY_RELAY_SERVER: {
+ StringVar* value_str = StringVar::FromPPVar(value);
+ if (!value_str)
+ return PP_ERROR_BADARGUMENT;
+ config_.relay_server = value_str->value();
+ break;
+ }
+
+ case PP_TRANSPORTPROPERTY_RELAY_TOKEN: {
+ StringVar* value_str = StringVar::FromPPVar(value);
+ if (!value_str)
+ return PP_ERROR_BADARGUMENT;
+ config_.relay_token = value_str->value();
+ break;
+ }
+
+ case PP_TRANSPORTPROPERTY_TCP_RECEIVE_WINDOW: {
+ if (!use_tcp_)
+ return PP_ERROR_BADARGUMENT;
+
+ int32_t int_value = value.value.as_int;
+ if (value.type != PP_VARTYPE_INT32 || int_value < kMinBufferSize ||
+ int_value > kMaxBufferSize) {
+ return PP_ERROR_BADARGUMENT;
+ }
+ config_.tcp_receive_window = int_value;
+ break;
+ }
+
+ case PP_TRANSPORTPROPERTY_TCP_SEND_WINDOW: {
+ if (!use_tcp_)
+ return PP_ERROR_BADARGUMENT;
+
+ int32_t int_value = value.value.as_int;
+ if (value.type != PP_VARTYPE_INT32 || int_value < kMinBufferSize ||
+ int_value > kMaxBufferSize) {
+ return PP_ERROR_BADARGUMENT;
+ }
+ config_.tcp_send_window = int_value;
+ break;
+ }
+
+ default:
+ return PP_ERROR_BADARGUMENT;
+ }
+
+ return PP_OK;
+}
+
int32_t PPB_Transport_Impl::Connect(PP_CompletionCallback callback) {
if (!p2p_transport_.get())
return PP_ERROR_FAILED;
@@ -112,7 +179,7 @@ int32_t PPB_Transport_Impl::Connect(PP_CompletionCallback callback) {
P2PTransport::Protocol protocol = use_tcp_ ?
P2PTransport::PROTOCOL_TCP : P2PTransport::PROTOCOL_UDP;
- if (!p2p_transport_->Init(name_, protocol, "", this))
+ if (!p2p_transport_->Init(name_, protocol, config_, this))
return PP_ERROR_FAILED;
started_ = true;
« no previous file with comments | « webkit/plugins/ppapi/ppb_transport_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698