diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 16:34:49 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 16:34:49 +0000 |
commit | 7d791652c7ede4209a2014d885148e2713f49bce (patch) | |
tree | c26baf12593bed381c631b81c736106809d46b44 /chrome/browser/ui/cocoa/scoped_authorizationref.h | |
parent | 3b94427c99bdf12836fd455eeb1499fdde511e26 (diff) | |
download | chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.zip chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.tar.gz chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.tar.bz2 |
Move browser/cocoa to browser/ui/cocoa
BUG=none
TEST=none
TBR=brettw
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67854 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/cocoa/scoped_authorizationref.h')
-rw-r--r-- | chrome/browser/ui/cocoa/scoped_authorizationref.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/scoped_authorizationref.h b/chrome/browser/ui/cocoa/scoped_authorizationref.h new file mode 100644 index 0000000..ae7edb3 --- /dev/null +++ b/chrome/browser/ui/cocoa/scoped_authorizationref.h @@ -0,0 +1,80 @@ +// Copyright (c) 2009 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 CHROME_BROWSER_UI_COCOA_SCOPED_AUTHORIZATIONREF_H_ +#define CHROME_BROWSER_UI_COCOA_SCOPED_AUTHORIZATIONREF_H_ +#pragma once + +#include <Security/Authorization.h> + +#include "base/basictypes.h" +#include "base/compiler_specific.h" + +// scoped_AuthorizationRef maintains ownership of an AuthorizationRef. It is +// patterned after the scoped_ptr interface. + +class scoped_AuthorizationRef { + public: + explicit scoped_AuthorizationRef(AuthorizationRef authorization = NULL) + : authorization_(authorization) { + } + + ~scoped_AuthorizationRef() { + if (authorization_) { + AuthorizationFree(authorization_, kAuthorizationFlagDestroyRights); + } + } + + void reset(AuthorizationRef authorization = NULL) { + if (authorization_ != authorization) { + if (authorization_) { + AuthorizationFree(authorization_, kAuthorizationFlagDestroyRights); + } + authorization_ = authorization; + } + } + + bool operator==(AuthorizationRef that) const { + return authorization_ == that; + } + + bool operator!=(AuthorizationRef that) const { + return authorization_ != that; + } + + operator AuthorizationRef() const { + return authorization_; + } + + AuthorizationRef* operator&() { + return &authorization_; + } + + AuthorizationRef get() const { + return authorization_; + } + + void swap(scoped_AuthorizationRef& that) { + AuthorizationRef temp = that.authorization_; + that.authorization_ = authorization_; + authorization_ = temp; + } + + // scoped_AuthorizationRef::release() is like scoped_ptr<>::release. It is + // NOT a wrapper for AuthorizationFree(). To force a + // scoped_AuthorizationRef object to call AuthorizationFree(), use + // scoped_AuthorizaitonRef::reset(). + AuthorizationRef release() WARN_UNUSED_RESULT { + AuthorizationRef temp = authorization_; + authorization_ = NULL; + return temp; + } + + private: + AuthorizationRef authorization_; + + DISALLOW_COPY_AND_ASSIGN(scoped_AuthorizationRef); +}; + +#endif // CHROME_BROWSER_UI_COCOA_SCOPED_AUTHORIZATIONREF_H_ |