| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/pdf_resource.h" | 5 #include "ppapi/proxy/pdf_resource.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 IPC::Message reply; | 157 IPC::Message reply; |
| 158 ResourceMessageReplyParams reply_params; | 158 ResourceMessageReplyParams reply_params; |
| 159 int32_t result = GenericSyncCall( | 159 int32_t result = GenericSyncCall( |
| 160 RENDERER, PpapiHostMsg_PDF_GetResourceImage(image_id, scale), &reply, | 160 RENDERER, PpapiHostMsg_PDF_GetResourceImage(image_id, scale), &reply, |
| 161 &reply_params); | 161 &reply_params); |
| 162 if (result != PP_OK) | 162 if (result != PP_OK) |
| 163 return 0; | 163 return 0; |
| 164 | 164 |
| 165 HostResource resource; | 165 HostResource resource; |
| 166 std::string image_data_desc; | 166 std::string image_data_desc; |
| 167 int fd; |
| 167 if (!UnpackMessage<PpapiPluginMsg_PDF_GetResourceImageReply>( | 168 if (!UnpackMessage<PpapiPluginMsg_PDF_GetResourceImageReply>( |
| 168 reply, &resource, &image_data_desc)) { | 169 reply, &resource, &image_data_desc, &fd)) { |
| 169 return 0; | 170 return 0; |
| 170 } | 171 } |
| 171 | 172 |
| 172 if (resource.is_null() || image_data_desc.size() != sizeof(PP_ImageDataDesc)) | 173 if (resource.is_null() || image_data_desc.size() != sizeof(PP_ImageDataDesc)) |
| 173 return 0; | 174 return 0; |
| 174 | 175 |
| 175 // We serialize the PP_ImageDataDesc just by copying to a string. | 176 // We serialize the PP_ImageDataDesc just by copying to a string. |
| 176 PP_ImageDataDesc desc; | 177 PP_ImageDataDesc desc; |
| 177 memcpy(&desc, image_data_desc.data(), sizeof(PP_ImageDataDesc)); | 178 memcpy(&desc, image_data_desc.data(), sizeof(PP_ImageDataDesc)); |
| 178 | 179 |
| 179 base::SharedMemoryHandle handle; | |
| 180 if (!reply_params.TakeSharedMemoryHandleAtIndex(0, &handle)) | |
| 181 return 0; | |
| 182 // We always succeed after this point (on non-android platforms, so we don't | |
| 183 // have to worry about leaking |handle|. | |
| 184 | |
| 185 #if defined(OS_ANDROID) | 180 #if defined(OS_ANDROID) |
| 186 // This is compiled into android for tests only. | 181 // This is compiled into android for tests only. |
| 187 return 0; | 182 return 0; |
| 188 #elif defined(OS_WIN) || defined(OS_MACOSX) | 183 #elif defined(OS_WIN) || defined(OS_MACOSX) |
| 184 base::SharedMemoryHandle handle; |
| 185 if (!reply_params.TakeSharedMemoryHandleAtIndex(0, &handle)) |
| 186 return 0; |
| 189 return (new ImageData(resource, desc, handle))->GetReference(); | 187 return (new ImageData(resource, desc, handle))->GetReference(); |
| 188 #elif defined(OS_LINUX) |
| 189 return (new ImageData(resource, desc, fd))->GetReference(); |
| 190 #else | 190 #else |
| 191 return (new ImageData(resource, desc, handle.fd))->GetReference(); | 191 #error Not implemented. |
| 192 #endif | 192 #endif |
| 193 } | 193 } |
| 194 | 194 |
| 195 PP_Resource PDFResource::GetResourceImage(PP_ResourceImage image_id) { | 195 PP_Resource PDFResource::GetResourceImage(PP_ResourceImage image_id) { |
| 196 return GetResourceImageForScale(image_id, 1.0f); | 196 return GetResourceImageForScale(image_id, 1.0f); |
| 197 } | 197 } |
| 198 | 198 |
| 199 } // namespace proxy | 199 } // namespace proxy |
| 200 } // namespace ppapi | 200 } // namespace ppapi |
| OLD | NEW |