1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file.
4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#ifndef PPAPI_NACL_IRT_PLUGIN_STARTUP_H_
6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define PPAPI_NACL_IRT_PLUGIN_STARTUP_H_
7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ppapi/proxy/ppapi_proxy_export.h"
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace base {
11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass Thread;
12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass WaitableEvent;
13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}  // namespace base
14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace ppapi {
16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ManifestService;
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Sets the IPC channels for the browser and the renderer by the given FD
20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// numbers. This will be used for non-SFI mode. Must be called before
21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// PpapiPluginMain is called.
22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochPPAPI_PROXY_EXPORT void SetIPCFileDescriptors(
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    int browser_ipc_fd, int renderer_ipc_fd, int manifest_service_fd);
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Runs start up procedure for the plugin.
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Specifically, start background IO thread for IPC, and prepare
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// shutdown event instance.
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochPPAPI_PROXY_EXPORT void StartUpPlugin();
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Returns IPC file descriptor for PPAPI to the browser.
31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochint GetBrowserIPCFileDescriptor();
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Returns IPC file descriptor for PPAPI to the renderer.
34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochint GetRendererIPCFileDescriptor();
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Returns the shutdown event instance for the plugin.
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Must be called after StartUpPlugin().
38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbase::WaitableEvent* GetShutdownEvent();
39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Returns the IOThread for the plugin. Must be called after StartUpPlugin().
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbase::Thread* GetIOThread();
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Returns the ManifestService interface. To use this, manifest_service_fd
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// needs to be set via SetIPCFileDescriptors. Must be called after
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// StartUpPlugin().
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// If not available, returns NULL.
470529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochManifestService* GetManifestService();
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}  // namespace ppapi
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif  // PPAPI_NACL_IRT_PLUGIN_STARTUP_H_
52