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 3 // found in the LICENSE file. 4 5 #include "nacl_io/pepper_interface.h" 6 #include <errno.h> 7 #include <ppapi/c/pp_errors.h> 8 9 namespace nacl_io { 10 11 ScopedResource::ScopedResource(PepperInterface* ppapi, PP_Resource resource) 12 : ppapi_(ppapi), 13 resource_(resource) { 14 } 15 16 ScopedResource::~ScopedResource() { 17 if (resource_) 18 ppapi_->ReleaseResource(resource_); 19 } 20 21 PP_Resource ScopedResource::Release() { 22 PP_Resource result = resource_; 23 resource_ = 0; 24 return result; 25 } 26 27 int PPErrorToErrno(int32_t err) { 28 switch (err) { 29 case PP_OK: return 0; 30 case PP_OK_COMPLETIONPENDING: return 0; 31 case PP_ERROR_FAILED: return EPERM; 32 case PP_ERROR_ABORTED: return EPERM; 33 case PP_ERROR_BADARGUMENT: return EINVAL; 34 case PP_ERROR_BADRESOURCE: return EBADF; 35 case PP_ERROR_NOINTERFACE: return ENOSYS; 36 case PP_ERROR_NOACCESS: return EACCES; 37 case PP_ERROR_NOMEMORY: return ENOMEM; 38 case PP_ERROR_NOSPACE: return ENOSPC; 39 case PP_ERROR_NOQUOTA: return ENOSPC; 40 case PP_ERROR_INPROGRESS: return EBUSY; 41 case PP_ERROR_NOTSUPPORTED: return ENOSYS; 42 case PP_ERROR_BLOCKS_MAIN_THREAD: return EPERM; 43 case PP_ERROR_FILENOTFOUND: return ENOENT; 44 case PP_ERROR_FILEEXISTS: return EEXIST; 45 case PP_ERROR_FILETOOBIG: return EFBIG; 46 case PP_ERROR_FILECHANGED: return EINVAL; 47 case PP_ERROR_TIMEDOUT: return EBUSY; 48 case PP_ERROR_USERCANCEL: return EPERM; 49 case PP_ERROR_NO_USER_GESTURE: return EPERM; 50 case PP_ERROR_CONTEXT_LOST: return EPERM; 51 case PP_ERROR_NO_MESSAGE_LOOP: return EPERM; 52 case PP_ERROR_WRONG_THREAD: return EPERM; 53 } 54 55 return EINVAL; 56 } 57 58 } // namespace nacl_io 59