| // Copyright 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_SHARED_IMPL_RESOURCE_VAR_H_ | |
| #define PPAPI_SHARED_IMPL_RESOURCE_VAR_H_ | |
| #include "base/macros.h" | |
| #include "ppapi/c/pp_resource.h" | |
| #include "ppapi/c/pp_var.h" | |
| #include "ppapi/shared_impl/ppapi_shared_export.h" | |
| #include "ppapi/shared_impl/var.h" | |
| namespace IPC { | |
| class Message; | |
| } | |
| namespace ppapi { | |
| // Represents a resource Var. | |
| class PPAPI_SHARED_EXPORT ResourceVar : public Var { | |
| public: | |
| // Gets the resource ID associated with this var. | |
| // This is 0 if a resource is still pending (only possible on the host side). | |
| // NOTE: This can return a PP_Resource with a reference count of 0 on the | |
| // plugin side. It should be AddRef'd if the resource is passed to the user. | |
| virtual PP_Resource GetPPResource() const = 0; | |
| // Gets the pending resource host ID in the renderer. | |
| virtual int GetPendingRendererHostId() const; | |
| // Gets the pending resource host ID in the browser. | |
| virtual int GetPendingBrowserHostId() const; | |
| // Gets the message for creating a plugin-side resource. Returns NULL if the | |
| // message is empty (which is always true on the plugin side). | |
| virtual const IPC::Message* GetCreationMessage() const; | |
| // Determines whether this is a pending resource. | |
| // This is true if, on the host side, the there is a creation_message and no | |
| // PP_Resource. | |
| virtual bool IsPending() const = 0; | |
| // Var override. | |
| ResourceVar* AsResourceVar() override; | |
| PP_VarType GetType() const override; | |
| // Helper function that converts a PP_Var to a ResourceVar. This will | |
| // return NULL if the PP_Var is not of Resource type. | |
| static ResourceVar* FromPPVar(PP_Var var); | |
| protected: | |
| ResourceVar(); | |
| ~ResourceVar() override; | |
| private: | |
| DISALLOW_COPY_AND_ASSIGN(ResourceVar); | |
| }; | |
| } // namespace ppapi | |
| #endif // PPAPI_SHARED_IMPL_RESOURCE_VAR_H_ |