// Copyright (c) 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_PROXY_LOCKING_RESOURCE_RELEASER_H_
#define PPAPI_PROXY_LOCKING_RESOURCE_RELEASER_H_

#include "base/macros.h"
#include "ppapi/shared_impl/ppapi_globals.h"
#include "ppapi/shared_impl/proxy_lock.h"
#include "ppapi/shared_impl/resource_tracker.h"

namespace ppapi {
namespace proxy {

// LockingResourceReleaser is a simple RAII class for releasing a resource at
// the end of scope. This acquires the ProxyLock before releasing the resource.
// It is for use in unit tests. Most proxy or implementation code should use
// ScopedPPResource instead. Unit tests sometimes can't use ScopedPPResource
// because it asserts that the ProxyLock is already held.
class LockingResourceReleaser {
 public:
  explicit LockingResourceReleaser(PP_Resource resource)
      : resource_(resource) {
  }
  ~LockingResourceReleaser() {
    ProxyAutoLock lock;
    PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(resource_);
  }

  PP_Resource get() { return resource_; }

 private:
  PP_Resource resource_;

  DISALLOW_COPY_AND_ASSIGN(LockingResourceReleaser);
};

}  // namespace proxy
}  // namespace ppapi

#endif  // PPAPI_PROXY_LOCKING_RESOURCE_RELEASER_H_
