Home | History | Annotate | Download | only in thunk
      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 "ppapi/c/pp_errors.h"
      6 #include "ppapi/c/private/ppb_flash_file.h"
      7 #include "ppapi/thunk/enter.h"
      8 #include "ppapi/thunk/ppb_file_ref_api.h"
      9 #include "ppapi/thunk/ppb_flash_file_api.h"
     10 #include "ppapi/thunk/thunk.h"
     11 
     12 namespace ppapi {
     13 namespace thunk {
     14 
     15 namespace {
     16 
     17 // Returns 0 on failure.
     18 PP_Instance GetInstanceFromFileRef(PP_Resource file_ref) {
     19   thunk::EnterResource<thunk::PPB_FileRef_API> enter(file_ref, true);
     20   if (enter.failed())
     21     return 0;
     22   return enter.resource()->pp_instance();
     23 }
     24 
     25 int32_t OpenFile(PP_Resource file_ref_id, int32_t mode, PP_FileHandle* file) {
     26   // TODO(brettw): this function should take an instance.
     27   // To work around this, use the PP_Instance from the resource.
     28   PP_Instance instance = GetInstanceFromFileRef(file_ref_id);
     29   EnterInstanceAPI<PPB_Flash_File_API> enter(instance);
     30   if (enter.failed())
     31     return PP_ERROR_BADARGUMENT;
     32   return enter.functions()->OpenFileRef(instance, file_ref_id, mode, file);
     33 }
     34 
     35 int32_t QueryFile(PP_Resource file_ref_id, struct PP_FileInfo* info) {
     36   // TODO(brettw): this function should take an instance.
     37   // To work around this, use the PP_Instance from the resource.
     38   PP_Instance instance = GetInstanceFromFileRef(file_ref_id);
     39   EnterInstanceAPI<PPB_Flash_File_API> enter(instance);
     40   if (enter.failed())
     41     return PP_ERROR_BADARGUMENT;
     42   return enter.functions()->QueryFileRef(instance, file_ref_id, info);
     43 }
     44 
     45 const PPB_Flash_File_FileRef g_ppb_flash_file_fileref_thunk = {
     46   &OpenFile,
     47   &QueryFile
     48 };
     49 
     50 }  // namespace
     51 
     52 const PPB_Flash_File_FileRef* GetPPB_Flash_File_FileRef_Thunk() {
     53   return &g_ppb_flash_file_fileref_thunk;
     54 }
     55 
     56 }  // namespace thunk
     57 }  // namespace ppapi
     58