// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_EXAMPLES_PEPPER_CONTAINER_APP_MOJO_PPAPI_GLOBALS_H_ #define MOJO_EXAMPLES_PEPPER_CONTAINER_APP_MOJO_PPAPI_GLOBALS_H_ #include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "mojo/public/cpp/system/core.h" #include "ppapi/shared_impl/ppapi_globals.h" #include "ppapi/shared_impl/resource_tracker.h" namespace base { class MessageLoopProxy; } namespace mojo { namespace examples { class PluginInstance; class MojoPpapiGlobals : public ppapi::PpapiGlobals { public: class Delegate { public: virtual ~Delegate() {} virtual ScopedMessagePipeHandle CreateGLES2Context() = 0; }; // |delegate| must live longer than this object. explicit MojoPpapiGlobals(Delegate* delegate); virtual ~MojoPpapiGlobals(); inline static MojoPpapiGlobals* Get() { return static_cast(PpapiGlobals::Get()); } PP_Instance AddInstance(PluginInstance* instance); void InstanceDeleted(PP_Instance instance); PluginInstance* GetInstance(PP_Instance instance); ScopedMessagePipeHandle CreateGLES2Context(); // ppapi::PpapiGlobals implementation. virtual ppapi::ResourceTracker* GetResourceTracker() OVERRIDE; virtual ppapi::VarTracker* GetVarTracker() OVERRIDE; virtual ppapi::CallbackTracker* GetCallbackTrackerForInstance( PP_Instance instance) OVERRIDE; virtual void LogWithSource(PP_Instance instance, PP_LogLevel level, const std::string& source, const std::string& value) OVERRIDE; virtual void BroadcastLogWithSource(PP_Module module, PP_LogLevel level, const std::string& source, const std::string& value) OVERRIDE; virtual ppapi::thunk::PPB_Instance_API* GetInstanceAPI( PP_Instance instance) OVERRIDE; virtual ppapi::thunk::ResourceCreationAPI* GetResourceCreationAPI( PP_Instance instance) OVERRIDE; virtual PP_Module GetModuleForInstance(PP_Instance instance) OVERRIDE; virtual ppapi::MessageLoopShared* GetCurrentMessageLoop() OVERRIDE; virtual base::TaskRunner* GetFileTaskRunner() OVERRIDE; virtual std::string GetCmdLine() OVERRIDE; virtual void PreCacheFontForFlash(const void* logfontw) OVERRIDE; private: class MainThreadMessageLoopResource; // Non-owning pointer. Delegate* const delegate_; // Non-owning pointer. PluginInstance* plugin_instance_; ppapi::ResourceTracker resource_tracker_; scoped_refptr main_thread_message_loop_resource_; DISALLOW_COPY_AND_ASSIGN(MojoPpapiGlobals); }; } // namespace examples } // namespace mojo #endif // MOJO_EXAMPLES_PEPPER_CONTAINER_APP_MOJO_PPAPI_GLOBALS_H_