// 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 CHROME_BROWSER_GLIC_SUGGESTIONS_MOCK_CONTEXTUAL_CUEING_SERVICE_H_
#define CHROME_BROWSER_GLIC_SUGGESTIONS_MOCK_CONTEXTUAL_CUEING_SERVICE_H_

#include <optional>
#include <string>
#include <vector>

#include "base/memory/raw_ptr.h"
#include "chrome/browser/glic/suggestions/contextual_cueing_service.h"
#include "testing/gmock/include/gmock/gmock.h"

namespace glic {

class MockContextualCueingService : public ContextualCueingService {
 public:
  MockContextualCueingService();
  ~MockContextualCueingService() override;

  MOCK_METHOD(void, ReportPageLoad, ());
  MOCK_METHOD(void,
              OnNudgeActivity,
              (content::WebContents*,
               base::TimeTicks,
               glic::GlicNudgeActivity));
  MOCK_METHOD(void, CueingNudgeShown, (const GURL&));
  MOCK_METHOD(void, CueingNudgeDismissed, ());
  MOCK_METHOD(void, CueingNudgeClicked, ());
  MOCK_METHOD(NudgeDecision, CanShowNudge, (const GURL&));
  MOCK_METHOD(void,
              PrepareToFetchContextualGlicZeroStateSuggestions,
              (content::WebContents*));
  MOCK_METHOD(void,
              GetContextualGlicZeroStateSuggestionsForFocusedTab,
              (content::WebContents*,
               bool,
               std::optional<std::vector<std::string>>,
               GlicSuggestionsCallback));
  MOCK_METHOD(bool,
              GetContextualGlicZeroStateSuggestionsForPinnedTabs,
              (std::vector<raw_ptr<content::WebContents>>,
               bool,
               std::optional<std::vector<std::string>>,
               const content::WebContents*,
               GlicSuggestionsCallback));
};

}  // namespace glic

#endif  // CHROME_BROWSER_GLIC_SUGGESTIONS_MOCK_CONTEXTUAL_CUEING_SERVICE_H_
