optimization_guide_decision.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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_OPTIMIZATION_GUIDE_CORE_OPTIMIZATION_GUIDE_DECISION_H_
  5. #define COMPONENTS_OPTIMIZATION_GUIDE_CORE_OPTIMIZATION_GUIDE_DECISION_H_
  6. #include "base/callback_forward.h"
  7. #include "base/containers/flat_map.h"
  8. #include "components/optimization_guide/core/optimization_metadata.h"
  9. #include "url/gurl.h"
  10. namespace optimization_guide {
  11. // Represents the decision made by the optimization guide.
  12. // Keep in sync with OptimizationGuideOptimizationGuideDecision in enums.xml.
  13. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.optimization_guide
  14. enum class OptimizationGuideDecision {
  15. // The necessary information to make the decision is not yet available.
  16. kUnknown,
  17. // The necessary information to make the decision is available and the
  18. // decision is affirmative.
  19. kTrue,
  20. // The necessary information to make the decision is available and the
  21. // decision is negative.
  22. kFalse,
  23. // New values above this line.
  24. kMaxValue = kFalse,
  25. };
  26. using OptimizationGuideDecisionCallback =
  27. base::OnceCallback<void(OptimizationGuideDecision,
  28. const OptimizationMetadata&)>;
  29. struct OptimizationGuideDecisionWithMetadata {
  30. // The decision made by the optimization guide.
  31. OptimizationGuideDecision decision;
  32. // The metadata for the optimization type, if applicable.
  33. OptimizationMetadata metadata;
  34. };
  35. using OnDemandOptimizationGuideDecisionRepeatingCallback =
  36. base::RepeatingCallback<void(
  37. const GURL&,
  38. const base::flat_map<proto::OptimizationType,
  39. OptimizationGuideDecisionWithMetadata>&)>;
  40. } // namespace optimization_guide
  41. #endif // COMPONENTS_OPTIMIZATION_GUIDE_CORE_OPTIMIZATION_GUIDE_DECISION_H_