// Copyright (c) 2013 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 PPAPI_PROXY_EXTENSIONS_COMMON_RESOURCE_H_ #define PPAPI_PROXY_EXTENSIONS_COMMON_RESOURCE_H_ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "ppapi/proxy/connection.h" #include "ppapi/proxy/plugin_resource.h" #include "ppapi/thunk/extensions_common_api.h" namespace base { class ListValue; } namespace ppapi { namespace proxy { class ResourceMessageReplyParams; class ExtensionsCommonResource : public PluginResource, public thunk::ExtensionsCommon_API { public: ExtensionsCommonResource(Connection connection, PP_Instance instance); virtual ~ExtensionsCommonResource(); // Resource overrides. virtual thunk::ExtensionsCommon_API* AsExtensionsCommon_API() OVERRIDE; // ExtensionsCommon_API implementation. virtual int32_t CallRenderer( const std::string& request_name, const std::vector& input_args, const std::vector& output_args, scoped_refptr callback) OVERRIDE; virtual void PostRenderer(const std::string& request_name, const std::vector& args) OVERRIDE; virtual int32_t CallBrowser(const std::string& request_name, const std::vector& input_args, const std::vector& output_args, scoped_refptr callback) OVERRIDE; virtual void PostBrowser(const std::string& request_name, const std::vector& args) OVERRIDE; private: int32_t CommonCall(Destination dest, const std::string& request_name, const std::vector& input_args, const std::vector& output_args, scoped_refptr callback); void CommonPost(Destination dest, const std::string& request_name, const std::vector& args); void OnPluginMsgCallReply(const std::vector& output_args, scoped_refptr callback, const ResourceMessageReplyParams& params, const base::ListValue& output); DISALLOW_COPY_AND_ASSIGN(ExtensionsCommonResource); }; } // namespace proxy } // namespace ppapi #endif // PPAPI_PROXY_EXTENSIONS_COMMON_RESOURCE_H_