1// Copyright 2014 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 MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 6#define MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 7 8#include "base/macros.h" 9#include "base/memory/ref_counted.h" 10#include "base/memory/scoped_ptr.h" 11#include "base/native_library.h" 12#include "base/scoped_native_library.h" 13#include "ppapi/c/pp_module.h" 14#include "ppapi/c/ppp.h" 15 16namespace ppapi { 17class CallbackTracker; 18} 19 20namespace mojo { 21namespace examples { 22 23class PluginInstance; 24 25class PluginModule : public base::RefCounted<PluginModule> { 26 public: 27 PluginModule(); 28 29 scoped_ptr<PluginInstance> CreateInstance(); 30 31 const void* GetPluginInterface(const char* name) const; 32 33 PP_Module pp_module() const { return 1; } 34 ppapi::CallbackTracker* callback_tracker() { return callback_tracker_.get(); } 35 36 private: 37 friend class base::RefCounted<PluginModule>; 38 39 struct EntryPoints { 40 EntryPoints(); 41 42 PP_GetInterface_Func get_interface; 43 PP_InitializeModule_Func initialize_module; 44 PP_ShutdownModule_Func shutdown_module; // Optional, may be NULL. 45 }; 46 47 ~PluginModule(); 48 49 void Initialize(); 50 51 base::ScopedNativeLibrary plugin_module_; 52 EntryPoints entry_points_; 53 scoped_refptr<ppapi::CallbackTracker> callback_tracker_; 54 55 DISALLOW_COPY_AND_ASSIGN(PluginModule); 56}; 57 58} // namespace examples 59} // namespace mojo 60 61#endif // MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_MODULE_H_ 62