Reset on-screen keyboard on a change to the active user.
[chromium-blink-merge.git] / ppapi / shared_impl / scoped_pp_var.cc
blobf612aa1a2ac765dd0652b53b92c6d86b88b9d548
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.
5 #include "ppapi/shared_impl/scoped_pp_var.h"
7 #include "ppapi/shared_impl/ppapi_globals.h"
8 #include "ppapi/shared_impl/var_tracker.h"
10 namespace ppapi {
12 namespace {
14 void CallAddRef(const PP_Var& v) {
15 PpapiGlobals::Get()->GetVarTracker()->AddRefVar(v);
18 void CallRelease(const PP_Var& v) {
19 PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(v);
22 } // namespace
24 ScopedPPVar::ScopedPPVar() : var_(PP_MakeUndefined()) {}
26 ScopedPPVar::ScopedPPVar(const PP_Var& v) : var_(v) { CallAddRef(var_); }
28 ScopedPPVar::ScopedPPVar(const PassRef&, const PP_Var& v) : var_(v) {}
30 ScopedPPVar::ScopedPPVar(const ScopedPPVar& other) : var_(other.var_) {
31 CallAddRef(var_);
34 ScopedPPVar::~ScopedPPVar() { CallRelease(var_); }
36 ScopedPPVar& ScopedPPVar::operator=(const PP_Var& v) {
37 CallAddRef(v);
38 CallRelease(var_);
39 var_ = v;
40 return *this;
43 PP_Var ScopedPPVar::Release() {
44 PP_Var result = var_;
45 var_ = PP_MakeUndefined();
46 return result;
49 } // namespace ppapi