#include "chromeos/ash/services/ime/user_data_c_api_impl.h"
#include "chromeos/ash/services/ime/ime_shared_library_wrapper.h"
#include "chromeos/ash/services/ime/public/cpp/shared_lib/interfaces.h"
#include "chromeos/ash/services/ime/public/cpp/shared_lib/proto/user_data_service.pb.h"
namespace ash::ime {
UserDataCApiImpl::~UserDataCApiImpl() = default;
UserDataCApiImpl::UserDataCApiImpl(
ImeCrosPlatform* platform,
ImeSharedLibraryWrapper::EntryPoints shared_library_entry_points)
: shared_library_entry_points_(shared_library_entry_points) {
shared_library_entry_points_.init_user_data_service(platform);
}
chromeos_input::UserDataResponse UserDataCApiImpl::ProcessUserDataRequest(
const chromeos_input::UserDataRequest& request) {
std::vector<uint8_t> bytes(request.ByteSizeLong());
request.SerializeToArray(bytes.data(),
static_cast<int>(request.ByteSizeLong()));
C_SerializedProto c_request{ bytes.data(),
bytes.size()};
C_SerializedProto c_response =
shared_library_entry_points_.process_user_data_request(c_request);
chromeos_input::UserDataResponse response;
response.ParseFromArray(c_response.buffer, c_response.size);
shared_library_entry_points_.delete_serialized_proto(c_response);
return response;
}
}