1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PPAPI_PROXY_PLUGIN_RESOURCE_VAR_H_
6#define PPAPI_PROXY_PLUGIN_RESOURCE_VAR_H_
7
8#include "ppapi/c/pp_resource.h"
9#include "ppapi/proxy/ppapi_proxy_export.h"
10#include "ppapi/shared_impl/resource.h"
11#include "ppapi/shared_impl/resource_var.h"
12#include "ppapi/shared_impl/var.h"
13
14// Represents a resource Var, usable on the plugin side.
15class PPAPI_PROXY_EXPORT PluginResourceVar : public ppapi::ResourceVar {
16 public:
17  // Makes a null resource var.
18  PluginResourceVar();
19
20  // Makes a resource var with an existing resource.
21  // Takes one reference to the given resource.
22  explicit PluginResourceVar(ppapi::Resource* resource);
23
24  // ResourceVar override.
25  virtual PP_Resource GetPPResource() const OVERRIDE;
26  virtual bool IsPending() const OVERRIDE;
27
28  scoped_refptr<ppapi::Resource> resource() const { return resource_; }
29
30 protected:
31  virtual ~PluginResourceVar();
32
33 private:
34  // If NULL, this represents the PP_Resource 0.
35  scoped_refptr<ppapi::Resource> resource_;
36
37  DISALLOW_COPY_AND_ASSIGN(PluginResourceVar);
38};
39
40#endif
41