1// Copyright (c) 2012 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 CONTENT_PUBLIC_COMMON_PEPPER_PLUGIN_INFO_H_ 6#define CONTENT_PUBLIC_COMMON_PEPPER_PLUGIN_INFO_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/files/file_path.h" 12#include "content/common/content_export.h" 13#include "content/public/common/webplugininfo.h" 14#include "ppapi/c/pp_module.h" 15#include "ppapi/c/ppb.h" 16 17#if !defined(ENABLE_PLUGINS) 18#error "Plugins should be enabled" 19#endif 20 21namespace content { 22 23struct CONTENT_EXPORT PepperPluginInfo { 24 typedef const void* (*GetInterfaceFunc)(const char*); 25 typedef int (*PPP_InitializeModuleFunc)(PP_Module, PPB_GetInterface); 26 typedef void (*PPP_ShutdownModuleFunc)(); 27 28 struct EntryPoints { 29 // This structure is POD, with the constructor initializing to NULL. 30 CONTENT_EXPORT EntryPoints(); 31 32 GetInterfaceFunc get_interface; 33 PPP_InitializeModuleFunc initialize_module; 34 PPP_ShutdownModuleFunc shutdown_module; // Optional, may be NULL. 35 }; 36 37 PepperPluginInfo(); 38 ~PepperPluginInfo(); 39 40 WebPluginInfo ToWebPluginInfo() const; 41 42 // Indicates internal plugins for which there's not actually a library. 43 // These plugins are implemented in the Chrome binary using a separate set 44 // of entry points (see internal_entry_points below). 45 // Defaults to false. 46 bool is_internal; 47 48 // True when this plugin should be run out of process. Defaults to false. 49 bool is_out_of_process; 50 51 // True when an out-of-process plugin should also be run within sandbox. 52 // Defaults to true. 53 bool is_sandboxed; 54 55 base::FilePath path; // Internal plugins have "internal-[name]" as path. 56 std::string name; 57 std::string description; 58 std::string version; 59 std::vector<WebPluginMimeType> mime_types; 60 61 // When is_internal is set, this contains the function pointers to the 62 // entry points for the internal plugins. 63 EntryPoints internal_entry_points; 64 65 // Permission bits from ppapi::Permission. 66 uint32 permissions; 67}; 68 69} // namespace content 70 71#endif // CONTENT_PUBLIC_COMMON_PEPPER_PLUGIN_INFO_H_ 72