// 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_
