Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Unified Diff: ppapi/shared_impl/resource_var.h

Issue 23809016: [PPAPI] ResourceVar now reference counts its PP_Resource in the plugin. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix Windows compile. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/proxy/plugin_var_tracker.cc ('k') | ppapi/shared_impl/resource_var.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/shared_impl/resource_var.h
diff --git a/ppapi/shared_impl/resource_var.h b/ppapi/shared_impl/resource_var.h
index 70eabc6cfb56ab426618ea14ba3ed1ae4595e62b..0b8bab2354cddd74d62607a1fcf461a71bbc27e0 100644
--- a/ppapi/shared_impl/resource_var.h
+++ b/ppapi/shared_impl/resource_var.h
@@ -5,42 +5,34 @@
#ifndef PPAPI_SHARED_IMPL_RESOURCE_VAR_H_
#define PPAPI_SHARED_IMPL_RESOURCE_VAR_H_
-#include "ipc/ipc_message.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:
- // Makes a null resource var.
- ResourceVar();
-
- // Makes a resource var with an existing plugin-side resource.
- explicit ResourceVar(PP_Resource pp_resource);
-
- // Makes a resource var with a pending resource host.
- // The |creation_message| contains instructions on how to create the
- // plugin-side resource. Its type depends on the type of resource.
- explicit ResourceVar(const IPC::Message& creation_message);
-
- virtual ~ResourceVar();
-
// Gets the resource ID associated with this var.
- // This is 0 if a resource is still pending.
- PP_Resource pp_resource() const { return pp_resource_; }
+ // 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 message for creating a plugin-side resource.
- // May be an empty message.
- const IPC::Message& creation_message() const { return creation_message_; }
+ // 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 the pp_resource is 0 and there is a non-empty
- // creation_message.
- bool IsPending() const;
+ // 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.
virtual ResourceVar* AsResourceVar() OVERRIDE;
@@ -50,16 +42,12 @@ class PPAPI_SHARED_EXPORT ResourceVar : public Var {
// return NULL if the PP_Var is not of Resource type.
static ResourceVar* FromPPVar(PP_Var var);
- private:
- // Real resource ID in the plugin. 0 if one has not yet been created
- // (indicating that there is a pending host resource).
- PP_Resource pp_resource_;
+ protected:
+ ResourceVar();
- // If the plugin-side resource has not yet been created, carries a message to
- // create a resource of the specific type on the plugin side.
- // Otherwise, carries an empty message.
- IPC::Message creation_message_;
+ virtual ~ResourceVar();
+ private:
DISALLOW_COPY_AND_ASSIGN(ResourceVar);
};
« no previous file with comments | « ppapi/proxy/plugin_var_tracker.cc ('k') | ppapi/shared_impl/resource_var.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698