15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* From private/ppb_flash_message_loop.idl modified Tue Jan 17 17:48:30 2012. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPB_FLASH_MESSAGE_LOOP_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PRIVATE_PPB_FLASH_MESSAGE_LOOP_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_FLASH_MESSAGELOOP_INTERFACE_0_1 "PPB_Flash_MessageLoop;0.1" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_FLASH_MESSAGELOOP_INTERFACE PPB_FLASH_MESSAGELOOP_INTERFACE_0_1 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file contains the <code>PPB_Flash_MessageLoop</code> interface. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_Flash_MessageLoop</code> interface supports Pepper Flash to run 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * nested message loops. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_Flash_MessageLoop_0_1 { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allocates a Flash message loop resource. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of a module. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Resource</code> that can be used to run a nested message 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * loop if successful; 0 if failed. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource (*Create)(PP_Instance instance); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Determines if a given resource is a Flash message loop. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a generic 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Bool</code> that is <code>PP_TRUE</code> if the given 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource is a Flash message loop, otherwise <code>PP_FALSE</code>. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsFlashMessageLoop)(PP_Resource resource); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Runs a nested message loop. The plugin will be reentered from this call. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This function is used in places where Flash would normally enter a nested 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * message loop (e.g., when displaying context menus), but Pepper provides 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * only an asynchronous call. After performing that asynchronous call, call 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>Run()</code>. In the callback, call <code>Quit()</code>. 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For a given message loop resource, only the first call to 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>Run()</code> will start a nested message loop. The subsequent calls 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * will return <code>PP_ERROR_FAILED</code> immediately. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] flash_message_loop The Flash message loop. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return <code>PP_ERROR_ABORTED</code> if the message loop quits because the 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource is destroyed; <code>PP_OK</code> if the message loop quits because 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of other reasons (e.g., <code>Quit()</code> is called); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_ERROR_FAILED</code> if this is not the first call to 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>Run()</code>. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*Run)(PP_Resource flash_message_loop); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Signals to quit the outermost nested message loop. Use this to exit and 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * return back to the caller after you call <code>Run()</code>. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If <code>Quit()</code> is not called to balance the call to 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>Run()</code>, the outermost nested message loop will be quitted 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * implicitly when the resource is destroyed. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] flash_message_loop The Flash message loop. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*Quit)(PP_Resource flash_message_loop); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_Flash_MessageLoop_0_1 PPB_Flash_MessageLoop; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_PRIVATE_PPB_FLASH_MESSAGE_LOOP_H_ */ 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95