#include "components/data_sharing/internal/data_sharing_service_impl.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/notimplemented.h"
#include "base/notreached.h"
#include "base/task/single_thread_task_runner.h"
#include "base/version_info/channel.h"
#include "components/data_sharing/internal/collaboration_group_sync_bridge.h"
#include "components/data_sharing/internal/data_sharing_network_loader_impl.h"
#include "components/data_sharing/internal/group_data_proto_utils.h"
#include "components/data_sharing/public/data_sharing_sdk_delegate.h"
#include "components/data_sharing/public/data_sharing_service.h"
#include "components/data_sharing/public/features.h"
#include "components/data_sharing/public/group_data.h"
#include "components/data_sharing/public/protocol/data_sharing_sdk.pb.h"
#include "components/sync/base/data_type.h"
#include "components/sync/base/report_unrecoverable_error.h"
#include "components/sync/model/client_tag_based_data_type_processor.h"
#include "components/sync/model/data_type_store.h"
#include "components/sync/model/data_type_sync_bridge.h"
#include "net/base/url_util.h"
#include "third_party/abseil-cpp/absl/status/status.h"
namespace data_sharing {
namespace {
const char kGroupIdKey[] = …;
const char kTokenBlobKey[] = …;
DataSharingService::PeopleGroupActionFailure StatusToPeopleGroupActionFailure(
const absl::Status& status) { … }
DataSharingService::PeopleGroupActionOutcome StatusToPeopleGroupActionOutcome(
const absl::Status& status) { … }
}
DataSharingServiceImpl::DataSharingServiceImpl(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
signin::IdentityManager* identity_manager,
syncer::OnceDataTypeStoreFactory data_type_store_factory,
version_info::Channel channel,
std::unique_ptr<DataSharingSDKDelegate> sdk_delegate,
std::unique_ptr<DataSharingUIDelegate> ui_delegate)
: … { … }
DataSharingServiceImpl::~DataSharingServiceImpl() { … }
bool DataSharingServiceImpl::IsEmptyService() { … }
void DataSharingServiceImpl::AddObserver(
DataSharingService::Observer* observer) { … }
void DataSharingServiceImpl::RemoveObserver(
DataSharingService::Observer* observer) { … }
DataSharingNetworkLoader*
DataSharingServiceImpl::GetDataSharingNetworkLoader() { … }
base::WeakPtr<syncer::DataTypeControllerDelegate>
DataSharingServiceImpl::GetCollaborationGroupControllerDelegate() { … }
void DataSharingServiceImpl::ReadAllGroups(
base::OnceCallback<void(const GroupsDataSetOrFailureOutcome&)> callback) { … }
void DataSharingServiceImpl::ReadGroup(
const GroupId& group_id,
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback) { … }
void DataSharingServiceImpl::CreateGroup(
const std::string& group_name,
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback) { … }
void DataSharingServiceImpl::DeleteGroup(
const GroupId& group_id,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback) { … }
void DataSharingServiceImpl::InviteMember(
const GroupId& group_id,
const std::string& invitee_email,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback) { … }
void DataSharingServiceImpl::AddMember(
const GroupId& group_id,
const std::string& access_token,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback) { … }
void DataSharingServiceImpl::RemoveMember(
const GroupId& group_id,
const std::string& member_email,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback) { … }
void DataSharingServiceImpl::OnGroupsUpdated(
const std::vector<GroupId>& added_group_ids,
const std::vector<GroupId>& updated_group_ids,
const std::vector<GroupId>& deleted_group_ids) { … }
void DataSharingServiceImpl::OnDataLoaded() { … }
void DataSharingServiceImpl::Shutdown() { … }
void DataSharingServiceImpl::OnReadSingleGroupCompleted(
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback,
const base::expected<data_sharing_pb::ReadGroupsResult, absl::Status>&
result) { … }
void DataSharingServiceImpl::OnReadAllGroupsCompleted(
base::OnceCallback<void(const GroupsDataSetOrFailureOutcome&)> callback,
const base::expected<data_sharing_pb::ReadGroupsResult, absl::Status>&
result) { … }
void DataSharingServiceImpl::OnCreateGroupCompleted(
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback,
const base::expected<data_sharing_pb::CreateGroupResult, absl::Status>&
result) { … }
void DataSharingServiceImpl::OnGaiaIdLookupForAddMemberCompleted(
const GroupId& group_id,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback,
const base::expected<data_sharing_pb::LookupGaiaIdByEmailResult,
absl::Status>& result) { … }
void DataSharingServiceImpl::OnGaiaIdLookupForRemoveMemberCompleted(
const GroupId& group_id,
base::OnceCallback<void(PeopleGroupActionOutcome)> callback,
const base::expected<data_sharing_pb::LookupGaiaIdByEmailResult,
absl::Status>& result) { … }
void DataSharingServiceImpl::OnReadGroupsToNotifyObserversCompleted(
const std::set<GroupId>& added_group_ids,
const std::set<GroupId>& updated_group_ids,
const base::expected<data_sharing_pb::ReadGroupsResult, absl::Status>&
read_groups_result) { … }
void DataSharingServiceImpl::OnSimpleGroupActionCompleted(
base::OnceCallback<void(PeopleGroupActionOutcome)> callback,
const absl::Status& status) { … }
CollaborationGroupSyncBridge*
DataSharingServiceImpl::GetCollaborationGroupSyncBridgeForTesting() { … }
bool DataSharingServiceImpl::ShouldInterceptNavigationForShareURL(
const GURL& url) { … }
void DataSharingServiceImpl::HandleShareURLNavigationIntercepted(
const GURL& url) { … }
std::unique_ptr<GURL> DataSharingServiceImpl::GetDataSharingURL(
const GroupData& group_data) { … }
DataSharingService::ParseURLResult DataSharingServiceImpl::ParseDataSharingURL(
const GURL& url) { … }
void DataSharingServiceImpl::EnsureGroupVisibility(
const GroupId& group_id,
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback) { … }
void DataSharingServiceImpl::GetSharedEntitiesPreview(
const GroupToken& group_token,
base::OnceCallback<void(const SharedDataPreviewOrFailureOutcome&)>
callback) { … }
DataSharingUIDelegate* DataSharingServiceImpl::GetUIDelegate() { … }
void DataSharingServiceImpl::OnAccessTokenAdded(
base::OnceCallback<void(const GroupDataOrFailureOutcome&)> callback,
const base::expected<data_sharing_pb::AddAccessTokenResult, absl::Status>&
result) { … }
}