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

Side by Side Diff: ppapi/proxy/serialized_structs.cc

Issue 11894003: PPAPI/NaCl: Move handle extraction code to ppapi/proxy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/proxy/serialized_structs.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/proxy/serialized_structs.h" 5 #include "ppapi/proxy/serialized_structs.h"
6 6
7 #include "base/pickle.h" 7 #include "base/pickle.h"
8 #include "base/platform_file.h"
9 #include "base/shared_memory.h"
10 #include "build/build_config.h" 8 #include "build/build_config.h"
11 #include "ipc/ipc_platform_file.h"
12 #include "ppapi/c/dev/ppb_font_dev.h" 9 #include "ppapi/c/dev/ppb_font_dev.h"
13 #include "ppapi/c/pp_file_info.h" 10 #include "ppapi/c/pp_file_info.h"
14 #include "ppapi/c/pp_rect.h" 11 #include "ppapi/c/pp_rect.h"
15 #include "ppapi/c/trusted/ppb_browser_font_trusted.h" 12 #include "ppapi/c/trusted/ppb_browser_font_trusted.h"
16 #include "ppapi/shared_impl/var.h" 13 #include "ppapi/shared_impl/var.h"
17 14
18 #if defined(OS_NACL)
19 #include <unistd.h>
20 #endif
21
22 namespace ppapi { 15 namespace ppapi {
23 namespace proxy { 16 namespace proxy {
24 17
25 SerializedFontDescription::SerializedFontDescription() 18 SerializedFontDescription::SerializedFontDescription()
26 : face(), 19 : face(),
27 family(0), 20 family(0),
28 size(0), 21 size(0),
29 weight(0), 22 weight(0),
30 italic(PP_FALSE), 23 italic(PP_FALSE),
31 small_caps(PP_FALSE), 24 small_caps(PP_FALSE),
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 clip.point.y = 0; 88 clip.point.y = 0;
96 clip.size.height = 0; 89 clip.size.height = 0;
97 clip.size.width = 0; 90 clip.size.width = 0;
98 position.x = 0; 91 position.x = 0;
99 position.y = 0; 92 position.y = 0;
100 allow_subpixel_aa = PP_FALSE; 93 allow_subpixel_aa = PP_FALSE;
101 } 94 }
102 95
103 PPBFlash_DrawGlyphs_Params::~PPBFlash_DrawGlyphs_Params() {} 96 PPBFlash_DrawGlyphs_Params::~PPBFlash_DrawGlyphs_Params() {}
104 97
105 SerializedHandle::SerializedHandle()
106 : type_(INVALID),
107 shm_handle_(base::SharedMemory::NULLHandle()),
108 size_(0),
109 descriptor_(IPC::InvalidPlatformFileForTransit()) {
110 }
111
112 SerializedHandle::SerializedHandle(Type type_param)
113 : type_(type_param),
114 shm_handle_(base::SharedMemory::NULLHandle()),
115 size_(0),
116 descriptor_(IPC::InvalidPlatformFileForTransit()) {
117 }
118
119 SerializedHandle::SerializedHandle(const base::SharedMemoryHandle& handle,
120 uint32_t size)
121 : type_(SHARED_MEMORY),
122 shm_handle_(handle),
123 size_(size),
124 descriptor_(IPC::InvalidPlatformFileForTransit()) {
125 }
126
127 SerializedHandle::SerializedHandle(
128 Type type,
129 const IPC::PlatformFileForTransit& socket_descriptor)
130 : type_(type),
131 shm_handle_(base::SharedMemory::NULLHandle()),
132 size_(0),
133 descriptor_(socket_descriptor) {
134 }
135
136 bool SerializedHandle::IsHandleValid() const {
137 switch (type_) {
138 case SHARED_MEMORY:
139 return base::SharedMemory::IsHandleValid(shm_handle_);
140 case SOCKET:
141 case CHANNEL_HANDLE:
142 case FILE:
143 return !(IPC::InvalidPlatformFileForTransit() == descriptor_);
144 case INVALID:
145 return false;
146 // No default so the compiler will warn us if a new type is added.
147 }
148 return false;
149 }
150
151 void SerializedHandle::Close() {
152 if (IsHandleValid()) {
153 switch (type_) {
154 case INVALID:
155 NOTREACHED();
156 break;
157 case SHARED_MEMORY:
158 base::SharedMemory::CloseHandle(shm_handle_);
159 break;
160 case SOCKET:
161 case CHANNEL_HANDLE:
162 case FILE:
163 base::PlatformFile file =
164 IPC::PlatformFileForTransitToPlatformFile(descriptor_);
165 #if !defined(OS_NACL)
166 base::ClosePlatformFile(file);
167 #else
168 close(file);
169 #endif
170 break;
171 // No default so the compiler will warn us if a new type is added.
172 }
173 }
174 *this = SerializedHandle();
175 }
176
177 // static
178 bool SerializedHandle::WriteHeader(const Header& hdr, Pickle* pickle) {
179 if (!pickle->WriteInt(hdr.type))
180 return false;
181 if (hdr.type == SHARED_MEMORY) {
182 if (!pickle->WriteUInt32(hdr.size))
183 return false;
184 }
185 return true;
186 }
187
188 // static
189 bool SerializedHandle::ReadHeader(PickleIterator* iter, Header* hdr) {
190 *hdr = Header(INVALID, 0);
191 int type = 0;
192 if (!iter->ReadInt(&type))
193 return false;
194 bool valid_type = false;
195 switch (type) {
196 case SHARED_MEMORY: {
197 uint32_t size = 0;
198 if (!iter->ReadUInt32(&size))
199 return false;
200 hdr->size = size;
201 valid_type = true;
202 break;
203 }
204 case SOCKET:
205 case CHANNEL_HANDLE:
206 case FILE:
207 case INVALID:
208 valid_type = true;
209 break;
210 // No default so the compiler will warn us if a new type is added.
211 }
212 if (valid_type)
213 hdr->type = Type(type);
214 return valid_type;
215 }
216
217 } // namespace proxy 98 } // namespace proxy
218 } // namespace ppapi 99 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/serialized_structs.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698