prediction_model_handler.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_PERMISSIONS_PREDICTION_SERVICE_PREDICTION_MODEL_HANDLER_H_
  5. #define COMPONENTS_PERMISSIONS_PREDICTION_SERVICE_PREDICTION_MODEL_HANDLER_H_
  6. #include "base/run_loop.h"
  7. #include "components/keyed_service/core/keyed_service.h"
  8. #include "components/optimization_guide/core/model_handler.h"
  9. #include "components/permissions/prediction_service/prediction_model_executor.h"
  10. #include "components/permissions/prediction_service/prediction_service_messages.pb.h"
  11. namespace permissions {
  12. class PredictionModelHandler : public KeyedService,
  13. public optimization_guide::ModelHandler<
  14. GeneratePredictionsResponse,
  15. const GeneratePredictionsRequest&> {
  16. public:
  17. explicit PredictionModelHandler(
  18. optimization_guide::OptimizationGuideModelProvider* model_provider,
  19. scoped_refptr<base::SequencedTaskRunner> background_task_runner);
  20. ~PredictionModelHandler() override = default;
  21. PredictionModelHandler(const PredictionModelHandler&) = delete;
  22. PredictionModelHandler& operator=(const PredictionModelHandler&) = delete;
  23. // optimization_guide::ModelHandler overrides.
  24. void OnModelUpdated(
  25. optimization_guide::proto::OptimizationTarget optimization_target,
  26. const optimization_guide::ModelInfo& model_info) override;
  27. void WaitForModelLoadForTesting();
  28. private:
  29. base::RunLoop model_load_run_loop_;
  30. };
  31. } // namespace permissions
  32. #endif // COMPONENTS_PERMISSIONS_PREDICTION_SERVICE_PREDICTION_MODEL_HANDLER_H_