blob: b000a67f88d8b9ddca7bf9fb153bb37bc3e43ee9 [file] [log] [blame]
// Copyright 2023 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_MOCK_OPTIMIZATION_GUIDE_KEYED_SERVICE_H_
#define CHROME_BROWSER_OPTIMIZATION_GUIDE_MOCK_OPTIMIZATION_GUIDE_KEYED_SERVICE_H_
#include "base/test/gmock_callback_support.h"
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
#include "components/optimization_guide/core/model_execution/feature_keys.h"
#include "components/optimization_guide/proto/model_quality_service.pb.h"
#include "testing/gmock/include/gmock/gmock.h"
class TestingPrefServiceSimple;
// Mocks the opt guide service, to be used in unittests.
//
// Can be used with `ChromeRenderViewHostTestHarness` based tests.
//
// For non ChromeRenderViewHostTestHarness based tests set the local state using
// `MockOptimizationGuideKeyedService::Initialize()` and then reset using
// `MockOptimizationGuideKeyedService::TearDown()`.
class MockOptimizationGuideKeyedService : public OptimizationGuideKeyedService {
public:
static void Initialize(TestingPrefServiceSimple* local_state);
static void InitializeWithExistingTestLocalState();
static void TearDown();
static void ResetForTesting();
MockOptimizationGuideKeyedService();
~MockOptimizationGuideKeyedService() override;
void Shutdown() override;
MOCK_METHOD(void,
RegisterOptimizationTypes,
(const std::vector<optimization_guide::proto::OptimizationType>&),
(override));
MOCK_METHOD(optimization_guide::OptimizationGuideDecision,
CanApplyOptimization,
(const GURL&,
optimization_guide::proto::OptimizationType,
optimization_guide::OptimizationMetadata*),
(override));
MOCK_METHOD(void,
CanApplyOptimization,
(const GURL&,
optimization_guide::proto::OptimizationType,
optimization_guide::OptimizationGuideDecisionCallback),
(override));
MOCK_METHOD(
void,
CanApplyOptimizationOnDemand,
(const std::vector<GURL>& urls,
const base::flat_set<optimization_guide::proto::OptimizationType>&
optimization_types,
optimization_guide::proto::RequestContext request_context,
optimization_guide::OnDemandOptimizationGuideDecisionRepeatingCallback
callback,
std::optional<optimization_guide::proto::RequestContextMetadata>
request_context_metadata),
(override));
MOCK_METHOD(std::unique_ptr<Session>,
StartSession,
(optimization_guide::ModelBasedCapabilityKey feature,
const std::optional<optimization_guide::SessionConfigParams>&
config_params));
MOCK_METHOD(
void,
ExecuteModel,
(optimization_guide::ModelBasedCapabilityKey,
const google::protobuf::MessageLite&,
const std::optional<base::TimeDelta>&,
optimization_guide::OptimizationGuideModelExecutionResultCallback));
MOCK_METHOD(void,
AddOnDeviceModelAvailabilityChangeObserver,
(optimization_guide::ModelBasedCapabilityKey feature,
optimization_guide::OnDeviceModelAvailabilityObserver* observer),
(override));
MOCK_METHOD(void,
RemoveOnDeviceModelAvailabilityChangeObserver,
(optimization_guide::ModelBasedCapabilityKey feature,
optimization_guide::OnDeviceModelAvailabilityObserver* observer),
(override));
MOCK_METHOD(on_device_model::Capabilities,
GetOnDeviceCapabilities,
(),
(override));
MOCK_METHOD(bool,
ShouldFeatureBeCurrentlyEnabledForUser,
(optimization_guide::UserVisibleFeatureKey),
(const, override));
MOCK_METHOD(bool,
ShouldFeatureAllowModelExecutionForSignedInUser,
(optimization_guide::UserVisibleFeatureKey),
(const, override));
MOCK_METHOD(bool,
ShouldModelExecutionBeAllowedForUser,
(),
(const, override));
MOCK_METHOD(
bool,
ShouldFeatureBeCurrentlyAllowedForFeedback,
(optimization_guide::proto::LogAiDataRequest::FeatureCase feature),
(const));
MOCK_METHOD(void,
UploadModelQualityLogs,
(std::unique_ptr<optimization_guide::ModelQualityLogEntry>));
MOCK_METHOD(void,
AddObserverForOptimizationTargetModel,
(optimization_guide::proto::OptimizationTarget,
const std::optional<optimization_guide::proto::Any>&,
optimization_guide::OptimizationTargetModelObserver*),
(override));
MOCK_METHOD(void,
RemoveObserverForOptimizationTargetModel,
(optimization_guide::proto::OptimizationTarget,
optimization_guide::OptimizationTargetModelObserver*),
(override));
MOCK_METHOD(void,
OnNavigationStartOrRedirect,
(OptimizationGuideNavigationData*),
(override));
MOCK_METHOD(void, OnNavigationFinish, (const std::vector<GURL>&), (override));
MOCK_METHOD(optimization_guide::OnDeviceModelEligibilityReason,
GetOnDeviceModelEligibility,
(optimization_guide::ModelBasedCapabilityKey),
(override));
MOCK_METHOD(std::optional<optimization_guide::SamplingParamsConfig>,
GetSamplingParamsConfig,
(optimization_guide::ModelBasedCapabilityKey),
(override));
MOCK_METHOD(std::optional<const optimization_guide::proto::Any>,
GetFeatureMetadata,
(optimization_guide::ModelBasedCapabilityKey),
(override));
};
#endif // CHROME_BROWSER_OPTIMIZATION_GUIDE_MOCK_OPTIMIZATION_GUIDE_KEYED_SERVICE_H_