// Copyright 2021 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_OMNIBOX_BROWSER_FAKE_TAB_MATCHER_H_
#define COMPONENTS_OMNIBOX_BROWSER_FAKE_TAB_MATCHER_H_

#include <string>
#include <vector>

#include "components/omnibox/browser/tab_matcher.h"

// Fake implementation of TabMatcher, allowing arbitrary string matching for use
// with tests.
class FakeTabMatcher : public TabMatcher {
 public:
  FakeTabMatcher();
  ~FakeTabMatcher() override;

  // A test calls this to establish the set of URLs that will return
  // true from IsTabOpenWithURL() above. It's a simple substring match
  // of the URL.
  void set_url_substring_match(const std::string& substr) {
    substring_to_match_ = substr;
  }

  void AddOpenTab(TabMatcher::TabWrapper open_tab);

  // TabMatcher implementation.
  bool IsTabOpenWithURL(const GURL& url,
                        const AutocompleteInput* input) const override;
  std::vector<TabMatcher::TabWrapper> GetOpenTabs(
      const AutocompleteInput* input,
      bool exclude_active_tab = true) const override;

 private:
  // Substring used to match URLs for IsTabOpenWithURL().
  std::string substring_to_match_;
  std::vector<TabMatcher::TabWrapper> open_tabs_;
};

#endif  // COMPONENTS_OMNIBOX_BROWSER_FAKE_TAB_MATCHER_H_
