Home | History | Annotate | Download | only in nacl_io
      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