blob: c5719aa6477880ce260447cba65bbb1402c18ec1 [file] [log] [blame]
// 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.
#include "ppapi/shared_impl/resource_var.h"
#include "ppapi/shared_impl/ppapi_globals.h"
#include "ppapi/shared_impl/var_tracker.h"
namespace ppapi {
ResourceVar::ResourceVar() : pp_resource_(0) {}
ResourceVar::ResourceVar(PP_Resource pp_resource) : pp_resource_(pp_resource) {}
ResourceVar::ResourceVar(const IPC::Message& creation_message)
: pp_resource_(0),
creation_message_(creation_message) {}
ResourceVar::~ResourceVar() {}
bool ResourceVar::IsPending() const {
return pp_resource_ == 0 && creation_message_.type() != 0;
}
ResourceVar* ResourceVar::AsResourceVar() {
return this;
}
PP_VarType ResourceVar::GetType() const {
return PP_VARTYPE_RESOURCE;
}
// static
ResourceVar* ResourceVar::FromPPVar(PP_Var var) {
if (var.type != PP_VARTYPE_RESOURCE)
return NULL;
scoped_refptr<Var> var_object(
PpapiGlobals::Get()->GetVarTracker()->GetVar(var));
if (!var_object.get())
return NULL;
return var_object->AsResourceVar();
}
} // namespace ppapi