blob: e601c0abc3e81153e8c4c0829c839d882038e605 [file] [log] [blame]
// 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.
#ifndef COMPONENTS_DATA_SHARING_INTERNAL_DATA_SHARING_SDK_DELEGATE_H_
#define COMPONENTS_DATA_SHARING_INTERNAL_DATA_SHARING_SDK_DELEGATE_H_
#include "base/functional/callback_forward.h"
#include "base/types/expected.h"
#include "components/data_sharing/internal/protocol/data_sharing_sdk.pb.h"
namespace data_sharing {
// Used by DataSharingService to provide access to SDK.
class DataSharingSDKDelegate {
public:
enum class Failure {
TRANSIENT_FAILURE,
PERSISTENT_FAILURE,
};
DataSharingSDKDelegate() = default;
DataSharingSDKDelegate(const DataSharingSDKDelegate&) = delete;
DataSharingSDKDelegate& operator=(const DataSharingSDKDelegate&) = delete;
DataSharingSDKDelegate(DataSharingSDKDelegate&&) = delete;
DataSharingSDKDelegate& operator=(DataSharingSDKDelegate&&) = delete;
virtual ~DataSharingSDKDelegate() = default;
virtual void CreateGroup(
const std::string& display_name,
base::OnceCallback<
void(base::expected<data_sharing_pb::CreateGroupResponse, Failure>)>
callback) = 0;
virtual void ReadGroups(
const std::vector<std::string>& group_ids,
base::OnceCallback<
void(base::expected<data_sharing_pb::ReadGroupsResponse, Failure>)>
callback) = 0;
virtual void ReadAllGroups(
base::OnceCallback<
void(base::expected<data_sharing_pb::ReadAllGroupsResponse, Failure>)>
callback) = 0;
virtual void UpdateGroup(
const std::string& group_id,
const std::vector<data_sharing_pb::GroupUpdate>& updates,
base::OnceCallback<
void(base::expected<data_sharing_pb::UpdateGroupResponse, Failure>)>
callback) = 0;
virtual void DeleteGroups(
const std::vector<std::string>& group_ids,
base::OnceCallback<
void(base::expected<data_sharing_pb::DeleteGroupsResponse, Failure>)>
callback) = 0;
virtual void LookupGaiaIdByEmail(
const std::string& email,
base::OnceCallback<void(base::expected<std::string /*email*/, Failure>)>
callback) = 0;
};
} // namespace data_sharing
#endif // COMPONENTS_DATA_SHARING_INTERNAL_DATA_SHARING_SDK_DELEGATE_H_