#ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_SERVICE_H_
#define CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_SERVICE_H_
#include <memory>
#include "base/gtest_prod_util.h"
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "chrome/browser/enterprise/connectors/connectors_manager.h"
#include "chrome/browser/profiles/profile.h"
#include "components/enterprise/common/proto/connectors.pb.h"
#include "components/enterprise/connectors/core/connectors_manager_base.h"
#include "components/enterprise/connectors/core/connectors_service_base.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/browser_context.h"
namespace base {
template <typename T>
struct DefaultSingletonTraits;
}
namespace storage {
class FileSystemURL;
}
namespace enterprise_connectors {
class ConnectorsService : public ConnectorsServiceBase, public KeyedService {
public:
ConnectorsService(content::BrowserContext* context,
std::unique_ptr<ConnectorsManagerBase> manager);
~ConnectorsService() override;
std::optional<ReportingSettings> GetReportingSettings() override;
std::optional<AnalysisSettings> GetAnalysisSettings(
const GURL& url,
AnalysisConnector connector);
#if BUILDFLAG(IS_CHROMEOS)
std::optional<AnalysisSettings> GetAnalysisSettings(
const storage::FileSystemURL& source_url,
const storage::FileSystemURL& destination_url,
AnalysisConnector connector);
#endif
std::string GetRealTimeUrlCheckIdentifier() const;
std::string GetManagementDomain();
std::optional<std::string> GetBrowserDmToken() const override;
std::unique_ptr<ClientMetadata> BuildClientMetadata(bool is_cloud) override;
private:
FRIEND_TEST_ALL_PREFIXES(ConnectorsServiceProfileTypeBrowserTest, IsEnabled);
FRIEND_TEST_ALL_PREFIXES(ConnectorsServiceReportingFeatureTest,
ChromeOsManagedGuestSessionFlagSetInMgs);
FRIEND_TEST_ALL_PREFIXES(ConnectorsServiceReportingFeatureTest,
ChromeOsManagedGuestSessionFlagNotSetInUserSession);
std::optional<AnalysisSettings> GetCommonAnalysisSettings(
std::optional<AnalysisSettings> settings,
AnalysisConnector connector);
std::optional<DmToken> GetDmToken(const char* scope_pref) const override;
bool ConnectorsEnabled() const override;
PrefService* GetPrefs() override;
const PrefService* GetPrefs() const override;
policy::CloudPolicyManager* GetManagedUserCloudPolicyManager() const override;
policy::PolicyScope GetPolicyScope(const char* scope_pref) const;
std::unique_ptr<ClientMetadata> GetBasicClientMetadata(Profile* profile);
raw_ptr<content::BrowserContext> context_;
};
class ConnectorsServiceFactory : public BrowserContextKeyedServiceFactory {
public:
static ConnectorsServiceFactory* GetInstance();
static ConnectorsService* GetForBrowserContext(
content::BrowserContext* context);
private:
ConnectorsServiceFactory();
~ConnectorsServiceFactory() override;
friend struct base::DefaultSingletonTraits<ConnectorsServiceFactory>;
std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
};
}
#endif