Index: content/renderer/pepper/pepper_websocket_host.cc |
diff --git a/content/renderer/pepper/pepper_websocket_host.cc b/content/renderer/pepper/pepper_websocket_host.cc |
index a88fdb54e47ddd8f211fe4e5ef4c296905c19cf9..7df7796c82f48ac4b4e15ae5fd91d2f6c7f38869 100644 |
--- a/content/renderer/pepper/pepper_websocket_host.cc |
+++ b/content/renderer/pepper/pepper_websocket_host.cc |
@@ -30,6 +30,40 @@ using blink::WebURL; |
namespace content { |
+#define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, np_name) \ |
+ COMPILE_ASSERT(static_cast<int>(WebSocket::webkit_name) \ |
+ == static_cast<int>(np_name), \ |
+ mismatching_enums) |
+ |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeNormalClosure, |
+ PP_WEBSOCKETSTATUSCODE_NORMAL_CLOSURE); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeGoingAway, |
+ PP_WEBSOCKETSTATUSCODE_GOING_AWAY); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeProtocolError, |
+ PP_WEBSOCKETSTATUSCODE_PROTOCOL_ERROR); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeUnsupportedData, |
+ PP_WEBSOCKETSTATUSCODE_UNSUPPORTED_DATA); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeNoStatusRcvd, |
+ PP_WEBSOCKETSTATUSCODE_NO_STATUS_RECEIVED); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeAbnormalClosure, |
+ PP_WEBSOCKETSTATUSCODE_ABNORMAL_CLOSURE); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeInvalidFramePayloadData, |
+ PP_WEBSOCKETSTATUSCODE_INVALID_FRAME_PAYLOAD_DATA); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodePolicyViolation, |
+ PP_WEBSOCKETSTATUSCODE_POLICY_VIOLATION); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeMessageTooBig, |
+ PP_WEBSOCKETSTATUSCODE_MESSAGE_TOO_BIG); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeMandatoryExt, |
+ PP_WEBSOCKETSTATUSCODE_MANDATORY_EXTENSION); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeInternalError, |
+ PP_WEBSOCKETSTATUSCODE_INTERNAL_SERVER_ERROR); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeTLSHandshake, |
+ PP_WEBSOCKETSTATUSCODE_TLS_HANDSHAKE); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeMinimumUserDefined, |
+ PP_WEBSOCKETSTATUSCODE_USER_REGISTERED_MIN); |
+COMPILE_ASSERT_MATCHING_ENUM(CloseEventCodeMaximumUserDefined, |
+ PP_WEBSOCKETSTATUSCODE_USER_PRIVATE_MAX); |
+ |
PepperWebSocketHost::PepperWebSocketHost( |
RendererPpapiHost* host, |
PP_Instance instance, |
@@ -253,8 +287,18 @@ int32_t PepperWebSocketHost::OnHostMsgClose( |
return PP_ERROR_FAILED; |
close_reply_ = context->MakeReplyMessageContext(); |
initiating_close_ = true; |
+ |
+ blink::WebSocket::CloseEventCode event_code = |
+ static_cast<blink::WebSocket::CloseEventCode>(code); |
+ if (code == PP_WEBSOCKETSTATUSCODE_NOT_SPECIFIED) { |
+ // PP_WEBSOCKETSTATUSCODE_NOT_SPECIFIED and CloseEventCodeNotSpecified are |
+ // assigned to different values. A conversion is needed if |
+ // PP_WEBSOCKETSTATUSCODE_NOT_SPECIFIED is specified. |
+ event_code = blink::WebSocket::CloseEventCodeNotSpecified; |
+ } |
+ |
WebString web_reason = WebString::fromUTF8(reason); |
- websocket_->close(code, web_reason); |
+ websocket_->close(event_code, web_reason); |
return PP_OK_COMPLETIONPENDING; |
} |