blob: 7e56d380dc86b669c9464474735e69ff6d24c17d [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OPTIMIZATION_GUIDE_TEST_OPTIMIZATION_GUIDE_DECIDER_H_
#define COMPONENTS_OPTIMIZATION_GUIDE_TEST_OPTIMIZATION_GUIDE_DECIDER_H_
#include "components/optimization_guide/optimization_guide_decider.h"
namespace optimization_guide {
// An implementation of |OptimizationGuideDecider| that can be selectively
// mocked out for unit testing features that rely on the Optimization Guide in
// //components/...
class TestOptimizationGuideDecider : public OptimizationGuideDecider {
public:
TestOptimizationGuideDecider();
~TestOptimizationGuideDecider() override;
TestOptimizationGuideDecider(const TestOptimizationGuideDecider&) = delete;
TestOptimizationGuideDecider& operator=(const TestOptimizationGuideDecider&) =
delete;
// OptimizationGuideDecider implementation:
void RegisterOptimizationTargets(const std::vector<proto::OptimizationTarget>&
optimization_targets) override;
void ShouldTargetNavigationAsync(
content::NavigationHandle* navigation_handle,
proto::OptimizationTarget optimization_target,
const base::flat_map<proto::ClientModelFeature, float>&
client_model_feature_values,
OptimizationGuideTargetDecisionCallback callback) override;
void AddObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) override;
void RemoveObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) override;
void RegisterOptimizationTypes(
const std::vector<proto::OptimizationType>& optimization_types) override;
void CanApplyOptimizationAsync(
content::NavigationHandle* navigation_handle,
proto::OptimizationType optimization_type,
OptimizationGuideDecisionCallback callback) override;
OptimizationGuideDecision CanApplyOptimization(
const GURL& url,
proto::OptimizationType optimization_type,
OptimizationMetadata* optimization_metadata) override;
};
} // namespace optimization_guide
#endif // COMPONENTS_OPTIMIZATION_GUIDE_TEST_OPTIMIZATION_GUIDE_DECIDER_H_