[go: nahoru, domu]

[PPAPI] ResourceVar now reference counts its Resource in the plugin.

ResourceVar is now an abstract base class with subclasses
HostResourceVar and PluginResourceVar. The PluginResourceVar has a
reference counted Resource instead of a PP_Resource.

VarTracker has MakeResourceVar and MakeResourcePPVar methods, to
abstract over the creation of a resource var of the correct subclass.

Also, the creation_message is now NULL when empty, instead of being an
empty message object.

BUG=290713

Review URL: https://chromiumcodereview.appspot.com/23809016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224717 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ppapi/proxy/plugin_resource_var.h b/ppapi/proxy/plugin_resource_var.h
new file mode 100644
index 0000000..b02718b6
--- /dev/null
+++ b/ppapi/proxy/plugin_resource_var.h
@@ -0,0 +1,39 @@
+// 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_PROXY_PLUGIN_RESOURCE_VAR_H_
+#define PPAPI_PROXY_PLUGIN_RESOURCE_VAR_H_
+
+#include "ppapi/c/pp_resource.h"
+#include "ppapi/proxy/ppapi_proxy_export.h"
+#include "ppapi/shared_impl/resource.h"
+#include "ppapi/shared_impl/resource_var.h"
+#include "ppapi/shared_impl/var.h"
+
+// Represents a resource Var, usable on the plugin side.
+class PPAPI_PROXY_EXPORT PluginResourceVar : public ppapi::ResourceVar {
+ public:
+  // Makes a null resource var.
+  PluginResourceVar();
+
+  // Makes a resource var with an existing resource.
+  // Takes one reference to the given resource.
+  explicit PluginResourceVar(ppapi::Resource* resource);
+
+  // ResourceVar override.
+  virtual PP_Resource GetPPResource() const OVERRIDE;
+  virtual bool IsPending() const OVERRIDE;
+
+  scoped_refptr<ppapi::Resource> resource() const { return resource_; }
+
+ protected:
+  virtual ~PluginResourceVar();
+
+ private:
+  scoped_refptr<ppapi::Resource> resource_;
+
+  DISALLOW_COPY_AND_ASSIGN(PluginResourceVar);
+};
+
+#endif