| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "crypto/scoped_lacontext.h" |
| |
| #include <memory> |
| |
| #include <LocalAuthentication/LocalAuthentication.h> |
| |
| #include "base/check.h" |
| |
| namespace crypto { |
| |
| struct ScopedLAContext::ObjCStorage { |
| LAContext* __strong context; |
| }; |
| |
| ScopedLAContext::ScopedLAContext(LAContext* lacontext) |
| : storage_(std::make_unique<ObjCStorage>()) { |
| storage_->context = lacontext; |
| } |
| |
| ScopedLAContext::ScopedLAContext(ScopedLAContext&&) = default; |
| ScopedLAContext& ScopedLAContext::operator=(ScopedLAContext&& other) = default; |
| ScopedLAContext::~ScopedLAContext() = default; |
| |
| LAContext* ScopedLAContext::release() { |
| CHECK(storage_); |
| LAContext* context = storage_->context; |
| storage_.reset(); |
| return context; |
| } |
| |
| } // namespace crypto |