scoped_pp_var.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#include "ppapi/shared_impl/scoped_pp_var.h" 6 7#include "ppapi/shared_impl/ppapi_globals.h" 8#include "ppapi/shared_impl/var_tracker.h" 9 10namespace ppapi { 11 12namespace { 13 14void CallAddRef(const PP_Var& v) { 15 PpapiGlobals::Get()->GetVarTracker()->AddRefVar(v); 16} 17 18void CallRelease(const PP_Var& v) { 19 PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(v); 20} 21 22} // namespace 23 24ScopedPPVar::ScopedPPVar() : var_(PP_MakeUndefined()) { 25} 26 27ScopedPPVar::ScopedPPVar(const PP_Var& v) : var_(v) { 28 CallAddRef(var_); 29} 30 31ScopedPPVar::ScopedPPVar(const PassRef&, const PP_Var& v) : var_(v) { 32} 33 34ScopedPPVar::ScopedPPVar(const ScopedPPVar& other) 35 : var_(other.var_) { 36 CallAddRef(var_); 37} 38 39ScopedPPVar::~ScopedPPVar() { 40 CallRelease(var_); 41} 42 43ScopedPPVar& ScopedPPVar::operator=(const PP_Var& v) { 44 CallAddRef(v); 45 CallRelease(var_); 46 var_ = v; 47 return *this; 48} 49 50} // namespace ppapi 51