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 |