1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From dev/ppb_file_chooser_dev.idl modified Tue Aug 20 08:13:36 2013. 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/dev/ppb_file_chooser_dev.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/pp_errors.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/thunk/enter.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/thunk/ppb_file_chooser_api.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ppapi { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace thunk { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Resource Create(PP_Instance instance, 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_FileChooserMode_Dev mode, 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_Var accept_types) { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileChooser_Dev::Create()"; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResourceCreation enter(instance); 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return 0; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.functions()->CreateFileChooser(instance, mode, accept_types); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool IsFileChooser(PP_Resource resource) { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileChooser_Dev::IsFileChooser()"; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_FileChooser_API> enter(resource, false); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PP_FromBool(enter.succeeded()); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t Show_0_5(PP_Resource chooser, struct PP_CompletionCallback callback) { 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileChooser_Dev::Show()"; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_FileChooser_API> enter(chooser, callback, true); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.object()->Show0_5(enter.callback())); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Resource GetNextChosenFile(PP_Resource chooser) { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileChooser_Dev::GetNextChosenFile()"; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_FileChooser_API> enter(chooser, true); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return 0; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.object()->GetNextChosenFile(); 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t Show(PP_Resource chooser, 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback) { 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileChooser_Dev::Show()"; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResource<PPB_FileChooser_API> enter(chooser, callback, true); 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.object()->Show(output, enter.callback())); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_FileChooser_Dev_0_5 g_ppb_filechooser_dev_thunk_0_5 = { 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Create, 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &IsFileChooser, 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Show_0_5, 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetNextChosenFile 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_FileChooser_Dev_0_6 g_ppb_filechooser_dev_thunk_0_6 = { 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Create, 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &IsFileChooser, 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Show 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_FileChooser_Dev_0_5* 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetPPB_FileChooser_Dev_0_5_Thunk() { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_filechooser_dev_thunk_0_5; 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_FileChooser_Dev_0_6* 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetPPB_FileChooser_Dev_0_6_Thunk() { 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_filechooser_dev_thunk_0_6; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace thunk 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ppapi 89