15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 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)#ifndef PPAPI_CPP_MODULE_EMBEDDER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_CPP_MODULE_EMBEDDER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppp.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// @file
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// This file defines the APIs for creating a Module object.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Module;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// This function creates the <code>pp::Module</code> object associated with
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// this module.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// <strong>Note: </strong>NaCl module developers must implement this function.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// @return Returns the module if it was successfully created, or NULL on
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// failure. Upon failure, the module will be unloaded.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pp::Module* CreateModule();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// Sets the get interface function in the broker process.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// This function is only relevant when you're using the PPB_Broker interface
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// in a trusted native plugin. In this case, you may need to implement
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// PPP_GetInterface when the plugin is loaded in the unsandboxed process.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// Normally the C++ wrappers implement PPP_GetInterface for you but this
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// doesn't work in the context of the broker process.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// So if you need to implement PPP_* interfaces in the broker process, call
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// this function in your PPP_InitializeBroker implementation which will set
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// up the given function as implementing PPP_GetInterface.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetBrokerGetInterfaceFunc(PP_GetInterface_Func broker_get_interface);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace pp
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_CPP_MODULE_EMBEDDER_H_
41