1// Copyright (c) 2011 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#ifndef PPAPI_CPP_MODULE_EMBEDDER_H_
6#define PPAPI_CPP_MODULE_EMBEDDER_H_
7
8#include "ppapi/c/ppp.h"
9
10/// @file
11/// This file defines the APIs for creating a Module object.
12namespace pp {
13
14class Module;
15
16/// This function creates the <code>pp::Module</code> object associated with
17/// this module.
18///
19/// <strong>Note: </strong>NaCl module developers must implement this function.
20///
21/// @return Returns the module if it was successfully created, or NULL on
22/// failure. Upon failure, the module will be unloaded.
23pp::Module* CreateModule();
24
25/// Sets the get interface function in the broker process.
26///
27/// This function is only relevant when you're using the PPB_Broker interface
28/// in a trusted native plugin. In this case, you may need to implement
29/// PPP_GetInterface when the plugin is loaded in the unsandboxed process.
30/// Normally the C++ wrappers implement PPP_GetInterface for you but this
31/// doesn't work in the context of the broker process.
32//
33/// So if you need to implement PPP_* interfaces in the broker process, call
34/// this function in your PPP_InitializeBroker implementation which will set
35/// up the given function as implementing PPP_GetInterface.
36void SetBrokerGetInterfaceFunc(PP_GetInterface_Func broker_get_interface);
37
38}  // namespace pp
39
40#endif  // PPAPI_CPP_MODULE_EMBEDDER_H_
41