blob: e828a0192d7f192cbb550a59b712967482afcc13 [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 CHROME_BROWSER_OPTIMIZATION_GUIDE_CHROME_MODEL_QUALITY_LOGS_UPLOADER_SERVICE_H_
#define CHROME_BROWSER_OPTIMIZATION_GUIDE_CHROME_MODEL_QUALITY_LOGS_UPLOADER_SERVICE_H_
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "components/optimization_guide/core/model_execution/feature_keys.h"
#include "components/optimization_guide/core/model_quality/model_quality_logs_uploader_service.h"
class PrefService;
namespace network {
class SharedURLLoaderFactory;
} // namespace network
namespace optimization_guide {
class ModelExecutionFeaturesController;
// This class represents Chrome side wrapper for
// ModelQualityLOgsUploaderService.
class ChromeModelQualityLogsUploaderService
: public ModelQualityLogsUploaderService {
public:
ChromeModelQualityLogsUploaderService(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
PrefService* pref_service,
base::WeakPtr<ModelExecutionFeaturesController>
model_execution_features_controller);
~ChromeModelQualityLogsUploaderService() override;
ChromeModelQualityLogsUploaderService(
const ChromeModelQualityLogsUploaderService&) = delete;
ChromeModelQualityLogsUploaderService& operator=(
const ChromeModelQualityLogsUploaderService&) = delete;
// Checks user consent, enterprise check for logging. Returns false if any one
// of the check is not enabled.
bool CanUploadLogs(UserVisibleFeatureKey feature) override;
// Sets system profile proto for logging.
void SetSystemProfileProto(proto::LoggingMetadata* logging_metadata) override;
private:
// This allows checking for enterprise policy on upload.
base::WeakPtr<ModelExecutionFeaturesController>
model_execution_feature_controller_;
};
} // namespace optimization_guide
#endif // CHROME_BROWSER_OPTIMIZATION_GUIDE_CHROME_MODEL_QUALITY_LOGS_UPLOADER_SERVICE_H_