| OLD | NEW |
| 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/c/pp_errors.h" | 5 #include "ppapi/c/pp_errors.h" |
| 6 #include "ppapi/c/pp_var.h" | 6 #include "ppapi/c/pp_var.h" |
| 7 #include "ppapi/thunk/common.h" | |
| 8 #include "ppapi/thunk/thunk.h" | 7 #include "ppapi/thunk/thunk.h" |
| 9 #include "ppapi/thunk/enter.h" | 8 #include "ppapi/thunk/enter.h" |
| 10 #include "ppapi/thunk/ppb_websocket_api.h" | 9 #include "ppapi/thunk/ppb_websocket_api.h" |
| 11 #include "ppapi/thunk/resource_creation_api.h" | 10 #include "ppapi/thunk/resource_creation_api.h" |
| 12 | 11 |
| 13 namespace ppapi { | 12 namespace ppapi { |
| 14 namespace thunk { | 13 namespace thunk { |
| 15 | 14 |
| 16 namespace { | 15 namespace { |
| 17 | 16 |
| 17 typedef EnterResource<PPB_WebSocket_API> EnterWebSocket; |
| 18 |
| 18 PP_Resource Create(PP_Instance instance) { | 19 PP_Resource Create(PP_Instance instance) { |
| 19 EnterFunction<ResourceCreationAPI> enter(instance, true); | 20 EnterResourceCreation enter(instance); |
| 20 if (enter.failed()) | 21 if (enter.failed()) |
| 21 return 0; | 22 return 0; |
| 22 return enter.functions()->CreateWebSocket(instance); | 23 return enter.functions()->CreateWebSocket(instance); |
| 23 } | 24 } |
| 24 | 25 |
| 25 PP_Bool IsWebSocket(PP_Resource resource) { | 26 PP_Bool IsWebSocket(PP_Resource resource) { |
| 26 EnterResource<PPB_WebSocket_API> enter(resource, false); | 27 EnterWebSocket enter(resource, false); |
| 27 return PP_FromBool(enter.succeeded()); | 28 return PP_FromBool(enter.succeeded()); |
| 28 } | 29 } |
| 29 | 30 |
| 30 int32_t Connect(PP_Resource resource, | 31 int32_t Connect(PP_Resource resource, |
| 31 PP_Var url, | 32 PP_Var url, |
| 32 const PP_Var protocols[], | 33 const PP_Var protocols[], |
| 33 uint32_t protocol_count, | 34 uint32_t protocol_count, |
| 34 PP_CompletionCallback callback) { | 35 PP_CompletionCallback callback) { |
| 35 EnterResource<PPB_WebSocket_API> enter(resource, false); | 36 EnterWebSocket enter(resource, callback, false); |
| 36 if (enter.failed()) | 37 if (enter.failed()) |
| 37 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 38 return enter.retval(); |
| 38 int32_t result = | 39 return enter.SetResult(enter.object()->Connect( |
| 39 enter.object()->Connect(url, protocols, protocol_count, callback); | 40 url, protocols, protocol_count, callback)); |
| 40 return MayForceCallback(callback, result); | |
| 41 } | 41 } |
| 42 | 42 |
| 43 int32_t Close(PP_Resource resource, | 43 int32_t Close(PP_Resource resource, |
| 44 uint16_t code, | 44 uint16_t code, |
| 45 PP_Var reason, | 45 PP_Var reason, |
| 46 PP_CompletionCallback callback) { | 46 PP_CompletionCallback callback) { |
| 47 EnterResource<PPB_WebSocket_API> enter(resource, false); | 47 EnterWebSocket enter(resource, callback, false); |
| 48 if (enter.failed()) | 48 if (enter.failed()) |
| 49 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 49 return enter.retval(); |
| 50 int32_t result = enter.object()->Close(code, reason, callback); | 50 return enter.SetResult(enter.object()->Close(code, reason, callback)); |
| 51 return MayForceCallback(callback, result); | |
| 52 } | 51 } |
| 53 | 52 |
| 54 int32_t ReceiveMessage(PP_Resource resource, | 53 int32_t ReceiveMessage(PP_Resource resource, |
| 55 PP_Var* message, | 54 PP_Var* message, |
| 56 PP_CompletionCallback callback) { | 55 PP_CompletionCallback callback) { |
| 57 EnterResource<PPB_WebSocket_API> enter(resource, false); | 56 EnterWebSocket enter(resource, callback, false); |
| 58 if (enter.failed()) | 57 if (enter.failed()) |
| 59 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 58 return enter.retval(); |
| 60 int32_t result = enter.object()->ReceiveMessage(message, callback); | 59 return enter.SetResult(enter.object()->ReceiveMessage(message, callback)); |
| 61 return MayForceCallback(callback, result); | |
| 62 } | 60 } |
| 63 | 61 |
| 64 int32_t SendMessage(PP_Resource resource, PP_Var message) { | 62 int32_t SendMessage(PP_Resource resource, PP_Var message) { |
| 65 EnterResource<PPB_WebSocket_API> enter(resource, false); | 63 EnterWebSocket enter(resource, false); |
| 66 if (enter.failed()) | 64 if (enter.failed()) |
| 67 return PP_ERROR_BADRESOURCE; | 65 return enter.retval(); |
| 68 return enter.object()->SendMessage(message); | 66 return enter.object()->SendMessage(message); |
| 69 } | 67 } |
| 70 | 68 |
| 71 uint64_t GetBufferedAmount(PP_Resource resource) { | 69 uint64_t GetBufferedAmount(PP_Resource resource) { |
| 72 EnterResource<PPB_WebSocket_API> enter(resource, false); | 70 EnterWebSocket enter(resource, false); |
| 73 if (enter.failed()) | 71 if (enter.failed()) |
| 74 return 0; | 72 return 0; |
| 75 return enter.object()->GetBufferedAmount(); | 73 return enter.object()->GetBufferedAmount(); |
| 76 } | 74 } |
| 77 | 75 |
| 78 uint16_t GetCloseCode(PP_Resource resource) { | 76 uint16_t GetCloseCode(PP_Resource resource) { |
| 79 EnterResource<PPB_WebSocket_API> enter(resource, false); | 77 EnterWebSocket enter(resource, false); |
| 80 if (enter.failed()) | 78 if (enter.failed()) |
| 81 return 0; | 79 return 0; |
| 82 return enter.object()->GetCloseCode(); | 80 return enter.object()->GetCloseCode(); |
| 83 } | 81 } |
| 84 | 82 |
| 85 PP_Var GetCloseReason(PP_Resource resource) { | 83 PP_Var GetCloseReason(PP_Resource resource) { |
| 86 EnterResource<PPB_WebSocket_API> enter(resource, false); | 84 EnterWebSocket enter(resource, false); |
| 87 if (enter.failed()) | 85 if (enter.failed()) |
| 88 return PP_MakeUndefined(); | 86 return PP_MakeUndefined(); |
| 89 return enter.object()->GetCloseReason(); | 87 return enter.object()->GetCloseReason(); |
| 90 } | 88 } |
| 91 | 89 |
| 92 PP_Bool GetCloseWasClean(PP_Resource resource) { | 90 PP_Bool GetCloseWasClean(PP_Resource resource) { |
| 93 EnterResource<PPB_WebSocket_API> enter(resource, false); | 91 EnterWebSocket enter(resource, false); |
| 94 if (enter.failed()) | 92 if (enter.failed()) |
| 95 return PP_FALSE; | 93 return PP_FALSE; |
| 96 return enter.object()->GetCloseWasClean(); | 94 return enter.object()->GetCloseWasClean(); |
| 97 } | 95 } |
| 98 | 96 |
| 99 PP_Var GetExtensions(PP_Resource resource) { | 97 PP_Var GetExtensions(PP_Resource resource) { |
| 100 EnterResource<PPB_WebSocket_API> enter(resource, false); | 98 EnterWebSocket enter(resource, false); |
| 101 if (enter.failed()) | 99 if (enter.failed()) |
| 102 return PP_MakeUndefined(); | 100 return PP_MakeUndefined(); |
| 103 return enter.object()->GetExtensions(); | 101 return enter.object()->GetExtensions(); |
| 104 } | 102 } |
| 105 | 103 |
| 106 PP_Var GetProtocol(PP_Resource resource) { | 104 PP_Var GetProtocol(PP_Resource resource) { |
| 107 EnterResource<PPB_WebSocket_API> enter(resource, false); | 105 EnterWebSocket enter(resource, false); |
| 108 if (enter.failed()) | 106 if (enter.failed()) |
| 109 return PP_MakeUndefined(); | 107 return PP_MakeUndefined(); |
| 110 return enter.object()->GetProtocol(); | 108 return enter.object()->GetProtocol(); |
| 111 } | 109 } |
| 112 | 110 |
| 113 PP_WebSocketReadyState GetReadyState(PP_Resource resource) { | 111 PP_WebSocketReadyState GetReadyState(PP_Resource resource) { |
| 114 EnterResource<PPB_WebSocket_API> enter(resource, false); | 112 EnterWebSocket enter(resource, false); |
| 115 if (enter.failed()) | 113 if (enter.failed()) |
| 116 return PP_WEBSOCKETREADYSTATE_INVALID; | 114 return PP_WEBSOCKETREADYSTATE_INVALID; |
| 117 return enter.object()->GetReadyState(); | 115 return enter.object()->GetReadyState(); |
| 118 } | 116 } |
| 119 | 117 |
| 120 PP_Var GetURL(PP_Resource resource) { | 118 PP_Var GetURL(PP_Resource resource) { |
| 121 EnterResource<PPB_WebSocket_API> enter(resource, false); | 119 EnterWebSocket enter(resource, false); |
| 122 if (enter.failed()) | 120 if (enter.failed()) |
| 123 return PP_MakeUndefined(); | 121 return PP_MakeUndefined(); |
| 124 return enter.object()->GetURL(); | 122 return enter.object()->GetURL(); |
| 125 } | 123 } |
| 126 | 124 |
| 127 const PPB_WebSocket_1_0 g_ppb_websocket_1_0_thunk = { | 125 const PPB_WebSocket_1_0 g_ppb_websocket_1_0_thunk = { |
| 128 &Create, | 126 &Create, |
| 129 &IsWebSocket, | 127 &IsWebSocket, |
| 130 &Connect, | 128 &Connect, |
| 131 &Close, | 129 &Close, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 142 }; | 140 }; |
| 143 | 141 |
| 144 } // namespace | 142 } // namespace |
| 145 | 143 |
| 146 const PPB_WebSocket_1_0* GetPPB_WebSocket_1_0_Thunk() { | 144 const PPB_WebSocket_1_0* GetPPB_WebSocket_1_0_Thunk() { |
| 147 return &g_ppb_websocket_1_0_thunk; | 145 return &g_ppb_websocket_1_0_thunk; |
| 148 } | 146 } |
| 149 | 147 |
| 150 } // namespace thunk | 148 } // namespace thunk |
| 151 } // namespace ppapi | 149 } // namespace ppapi |
| OLD | NEW |