190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From private/ppb_flash_drm.idl modified Tue Dec 3 15:22:00 2013. 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/pp_errors.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/private/ppb_flash_drm.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/thunk/enter.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h" 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/thunk/ppb_flash_drm_api.h" 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace ppapi { 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace thunk { 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace { 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PP_Resource Create(PP_Instance instance) { 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) VLOG(4) << "PPB_Flash_DRM::Create()"; 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EnterResourceCreation enter(instance); 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (enter.failed()) 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return 0; 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return enter.functions()->CreateFlashDRM(instance); 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int32_t GetDeviceID(PP_Resource drm, 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) struct PP_Var* id, 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) struct PP_CompletionCallback callback) { 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) VLOG(4) << "PPB_Flash_DRM::GetDeviceID()"; 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (enter.failed()) 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return enter.retval(); 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return enter.SetResult(enter.object()->GetDeviceID(id, enter.callback())); 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)PP_Bool GetHmonitor(PP_Resource drm, int64_t* hmonitor) { 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) VLOG(4) << "PPB_Flash_DRM::GetHmonitor()"; 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EnterResource<PPB_Flash_DRM_API> enter(drm, true); 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (enter.failed()) 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return PP_FALSE; 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return enter.object()->GetHmonitor(hmonitor); 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)int32_t GetVoucherFile(PP_Resource drm, 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) PP_Resource* file_ref, 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) struct PP_CompletionCallback callback) { 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) VLOG(4) << "PPB_Flash_DRM::GetVoucherFile()"; 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true); 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (enter.failed()) 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return enter.retval(); 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return enter.SetResult(enter.object()->GetVoucherFile(file_ref, 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) enter.callback())); 557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)int32_t MonitorIsExternal(PP_Resource drm, 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PP_Bool* is_external, 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) struct PP_CompletionCallback callback) { 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) VLOG(4) << "PPB_Flash_DRM::MonitorIsExternal()"; 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true); 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (enter.failed()) 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return enter.retval(); 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return enter.SetResult(enter.object()->MonitorIsExternal(is_external, 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) enter.callback())); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const PPB_Flash_DRM_1_0 g_ppb_flash_drm_thunk_1_0 = { 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) &Create, 707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) &GetDeviceID, 717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) &GetHmonitor, 727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) &GetVoucherFile 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)const PPB_Flash_DRM_1_1 g_ppb_flash_drm_thunk_1_1 = { 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) &Create, 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) &GetDeviceID, 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) &GetHmonitor, 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) &GetVoucherFile, 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) &MonitorIsExternal 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_0* GetPPB_Flash_DRM_1_0_Thunk() { 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return &g_ppb_flash_drm_thunk_1_0; 8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_1* GetPPB_Flash_DRM_1_1_Thunk() { 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return &g_ppb_flash_drm_thunk_1_1; 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace thunk 9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace ppapi 95