// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_UI_SELECTOR_H_
#define COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_UI_SELECTOR_H_

#include "components/permissions/prediction_service/permission_ui_selector.h"

// Test implementation of PermissionUiSelector that always returns a canned
// decision.
class MockPermissionUiSelector : public permissions::PermissionUiSelector {
 public:
  explicit MockPermissionUiSelector(const Decision& canned_decision)
      : canned_decision_(canned_decision) {}

  MockPermissionUiSelector(const MockPermissionUiSelector&) = delete;
  MockPermissionUiSelector& operator=(const MockPermissionUiSelector&) = delete;

  ~MockPermissionUiSelector() override = default;

  std::optional<permissions::PermissionUiSelector::PredictionGrantLikelihood>
      last_request_grant_likelihood_;
  std::optional<permissions::PermissionRequestRelevance>
      last_permission_request_relevance_;
  std::optional<bool> was_decision_held_back_;

 protected:
  // permissions::PermissionUiSelector:
  void SelectUiToUse(content::WebContents* web_contents,
                     permissions::PermissionRequest* request,
                     DecisionMadeCallback callback) override;

  bool IsPermissionRequestSupported(
      permissions::RequestType request_type) override;

  std::optional<permissions::PermissionUiSelector::PredictionGrantLikelihood>
  PredictedGrantLikelihoodForUKM() override;

  std::optional<permissions::PermissionRequestRelevance>
  PermissionRequestRelevanceForUKM() override;

  std::optional<bool> WasSelectorDecisionHeldback() override;

 private:
  Decision canned_decision_;
};

#endif  // COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_UI_SELECTOR_H_
