blob: 7c6711caad56210d09158cfe1ea44f2e94be5fdd [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "arc/keymaster/cert_store_instance.h"
#include <utility>
#include <base/bind.h>
#include <base/callback.h>
namespace arc {
namespace keymaster {
void CertStoreInstance::Init(mojom::CertStoreHostPtr host_ptr,
InitCallback callback) {
LOG(INFO) << "CertStoreInstance::Init";
host_ptr_ = std::move(host_ptr);
std::move(callback).Run();
RequestSecurityTokenOperation();
}
void CertStoreInstance::RequestSecurityTokenOperation() {
LOG(INFO) << "CertStoreInstance::RequestSecurityTokenOperation";
if (is_security_token_operation_proxy_ready_)
return;
mojo::InterfaceRequest<mojom::SecurityTokenOperation> request =
mojo::MakeRequest(&security_token_operation_proxy_);
security_token_operation_proxy_.set_connection_error_handler(
base::Bind(&CertStoreInstance::ResetSecurityTokenOperationProxy,
weak_ptr_factory_.GetWeakPtr()));
host_ptr_->GetSecurityTokenOperation(
std::move(request),
base::Bind(&CertStoreInstance::OnSecurityTokenOperationProxyReady,
weak_ptr_factory_.GetWeakPtr()));
}
void CertStoreInstance::ResetSecurityTokenOperationProxy() {
LOG(INFO) << "CertStoreInstance::ResetSecurityTokenOperationProxy";
is_security_token_operation_proxy_ready_ = false;
}
void CertStoreInstance::OnSecurityTokenOperationProxyReady() {
LOG(INFO) << "CertStoreInstance::OnSecurityTokenOperationProxyReady";
is_security_token_operation_proxy_ready_ = true;
}
} // namespace keymaster
} // namespace arc