1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright 2022 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_PERMISSIONS_PREDICTION_MODEL_HANDLER_PROVIDER_H_
#define CHROME_BROWSER_PERMISSIONS_PREDICTION_MODEL_HANDLER_PROVIDER_H_
#include <memory>
#include "components/keyed_service/core/keyed_service.h"
#include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h"
#include "components/optimization_guide/machine_learning_tflite_buildflags.h"
#include "components/permissions/request_type.h"
class OptimizationGuideKeyedService;
namespace permissions {
class PredictionModelHandler;
class PermissionsAiv1Handler;
class PermissionsAiv3Handler;
class PredictionModelHandlerProvider : public KeyedService {
public:
explicit PredictionModelHandlerProvider(
OptimizationGuideKeyedService* optimization_guide);
~PredictionModelHandlerProvider() override;
PredictionModelHandlerProvider(const PredictionModelHandlerProvider&) =
delete;
PredictionModelHandlerProvider& operator=(
const PredictionModelHandlerProvider&) = delete;
PermissionsAiv1Handler* GetPermissionsAiv1Handler();
#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
PredictionModelHandler* GetPredictionModelHandler(RequestType request_type);
PermissionsAiv3Handler* GetPermissionsAiv3Handler(RequestType request_type);
void set_permissions_aiv3_handler_for_testing(
RequestType request_type,
std::unique_ptr<PermissionsAiv3Handler> handler);
#endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
private:
std::unique_ptr<PermissionsAiv1Handler> permissions_aiv1_handler_;
#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
std::unique_ptr<PredictionModelHandler>
notification_prediction_model_handler_;
std::unique_ptr<PredictionModelHandler> geolocation_prediction_model_handler_;
std::unique_ptr<PermissionsAiv3Handler> notification_aiv3_handler_;
std::unique_ptr<PermissionsAiv3Handler> geolocation_aiv3_handler_;
#endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
};
} // namespace permissions
#endif // CHROME_BROWSER_PERMISSIONS_PREDICTION_MODEL_HANDLER_PROVIDER_H_
|