OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/proxy/ppb_broker_proxy.h" | 5 #include "ppapi/proxy/ppb_broker_proxy.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "ppapi/c/pp_errors.h" | 8 #include "ppapi/c/pp_errors.h" |
9 #include "ppapi/c/trusted/ppb_broker_trusted.h" | 9 #include "ppapi/c/trusted/ppb_broker_trusted.h" |
10 #include "ppapi/proxy/enter_proxy.h" | 10 #include "ppapi/proxy/enter_proxy.h" |
11 #include "ppapi/proxy/plugin_dispatcher.h" | 11 #include "ppapi/proxy/plugin_dispatcher.h" |
12 #include "ppapi/proxy/ppapi_messages.h" | 12 #include "ppapi/proxy/ppapi_messages.h" |
| 13 #include "ppapi/shared_impl/platform_file.h" |
13 #include "ppapi/thunk/ppb_broker_api.h" | 14 #include "ppapi/thunk/ppb_broker_api.h" |
14 #include "ppapi/thunk/enter.h" | 15 #include "ppapi/thunk/enter.h" |
15 #include "ppapi/thunk/resource_creation_api.h" | 16 #include "ppapi/thunk/resource_creation_api.h" |
16 #include "ppapi/thunk/thunk.h" | 17 #include "ppapi/thunk/thunk.h" |
17 | 18 |
| 19 using ppapi::IntToPlatformFile; |
| 20 using ppapi::PlatformFileToInt; |
18 using ppapi::thunk::PPB_Broker_API; | 21 using ppapi::thunk::PPB_Broker_API; |
19 | 22 |
20 namespace ppapi { | 23 namespace ppapi { |
21 namespace proxy { | 24 namespace proxy { |
22 | 25 |
23 namespace { | |
24 | |
25 base::PlatformFile IntToPlatformFile(int32_t handle) { | |
26 #if defined(OS_WIN) | |
27 return reinterpret_cast<HANDLE>(static_cast<intptr_t>(handle)); | |
28 #elif defined(OS_POSIX) | |
29 return handle; | |
30 #else | |
31 #error Not implemented. | |
32 #endif | |
33 } | |
34 | |
35 int32_t PlatformFileToInt(base::PlatformFile handle) { | |
36 #if defined(OS_WIN) | |
37 return static_cast<int32_t>(reinterpret_cast<intptr_t>(handle)); | |
38 #elif defined(OS_POSIX) | |
39 return handle; | |
40 #else | |
41 #error Not implemented. | |
42 #endif | |
43 } | |
44 | |
45 } // namespace | |
46 | |
47 class Broker : public PPB_Broker_API, public Resource { | 26 class Broker : public PPB_Broker_API, public Resource { |
48 public: | 27 public: |
49 explicit Broker(const HostResource& resource); | 28 explicit Broker(const HostResource& resource); |
50 virtual ~Broker(); | 29 virtual ~Broker(); |
51 | 30 |
52 // Resource overries. | 31 // Resource overrides. |
53 virtual PPB_Broker_API* AsPPB_Broker_API() OVERRIDE; | 32 virtual PPB_Broker_API* AsPPB_Broker_API() OVERRIDE; |
54 | 33 |
55 // PPB_Broker_API implementation. | 34 // PPB_Broker_API implementation. |
56 virtual int32_t Connect(PP_CompletionCallback connect_callback) OVERRIDE; | 35 virtual int32_t Connect(PP_CompletionCallback connect_callback) OVERRIDE; |
57 virtual int32_t GetHandle(int32_t* handle) OVERRIDE; | 36 virtual int32_t GetHandle(int32_t* handle) OVERRIDE; |
58 | 37 |
59 // Called by the proxy when the host side has completed the request. | 38 // Called by the proxy when the host side has completed the request. |
60 void ConnectComplete(IPC::PlatformFileForTransit socket_handle, | 39 void ConnectComplete(IPC::PlatformFileForTransit socket_handle, |
61 int32_t result); | 40 int32_t result); |
62 | 41 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 // The easiest way to clean it up is to just put it in an object | 234 // The easiest way to clean it up is to just put it in an object |
256 // and then close it. This failure case is not performance critical. | 235 // and then close it. This failure case is not performance critical. |
257 // The handle could still leak if Send succeeded but the IPC later failed. | 236 // The handle could still leak if Send succeeded but the IPC later failed. |
258 base::SyncSocket temp_socket( | 237 base::SyncSocket temp_socket( |
259 IPC::PlatformFileForTransitToPlatformFile(foreign_socket_handle)); | 238 IPC::PlatformFileForTransitToPlatformFile(foreign_socket_handle)); |
260 } | 239 } |
261 } | 240 } |
262 | 241 |
263 } // namespace proxy | 242 } // namespace proxy |
264 } // namespace ppapi | 243 } // namespace ppapi |
OLD | NEW |