1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file. 4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/macros.h" 9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/memory/ref_counted.h" 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/memory/scoped_ptr.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/native_library.h" 12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/scoped_native_library.h" 13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/pp_module.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/ppp.h" 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace ppapi { 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass CallbackTracker; 18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace mojo { 21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace examples { 22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PluginInstance; 24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PluginModule : public base::RefCounted<PluginModule> { 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public: 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PluginModule(); 28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch scoped_ptr<PluginInstance> CreateInstance(); 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const void* GetPluginInterface(const char* name) const; 32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PP_Module pp_module() const { return 1; } 34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ppapi::CallbackTracker* callback_tracker() { return callback_tracker_.get(); } 35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private: 37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch friend class base::RefCounted<PluginModule>; 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch struct EntryPoints { 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EntryPoints(); 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PP_GetInterface_Func get_interface; 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PP_InitializeModule_Func initialize_module; 44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PP_ShutdownModule_Func shutdown_module; // Optional, may be NULL. 45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch }; 46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ~PluginModule(); 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void Initialize(); 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::ScopedNativeLibrary plugin_module_; 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EntryPoints entry_points_; 53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch scoped_refptr<ppapi::CallbackTracker> callback_tracker_; 54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DISALLOW_COPY_AND_ASSIGN(PluginModule); 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}; 57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} // namespace examples 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} // namespace mojo 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 62