// Copyright 2026 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_BROWSER_APIS_TAB_STRIP_TESTING_INJECTOR_H_
#define COMPONENTS_BROWSER_APIS_TAB_STRIP_TESTING_INJECTOR_H_

#include "components/browser_apis/tab_strip/adapters/platform_adapters_provider.h"
#include "components/browser_apis/tab_strip/testing/toy_tab_strip_browser_adapter.h"
#include "components/browser_apis/tab_strip/testing/toy_tab_strip_event_bridge.h"
#include "components/browser_apis/tab_strip/testing/toy_tab_strip_model_adapter.h"
#include "components/browser_apis/tab_strip/testing/toy_tab_strip_translation_adapter.h"

namespace tabs_api::testing {

class Injector : public PlatformAdaptersProvider {
 public:
  explicit Injector(ToyTabStrip& toy_tab_strip);
  ~Injector() override;

  // PlatformAdaptersProvider:
  BrowserAdapter& browser_adapter() override { return *browser_adapter_; }

  TabStripModelAdapter& tab_strip_model_adapter() override {
    return *tab_strip_model_adapter_;
  }

  TranslationAdapter& translation_adapter() override {
    return *translation_adapter_;
  }

  ToyTabStripEventBridge& event_bridge() override { return *event_bridge_; }

 private:
  std::unique_ptr<ToyTabStripBrowserAdapter> browser_adapter_;
  std::unique_ptr<ToyTabStripModelAdapter> tab_strip_model_adapter_;
  std::unique_ptr<ToyTabStripTranslationAdapter> translation_adapter_;
  std::unique_ptr<ToyTabStripEventBridge> event_bridge_;
};

}  // namespace tabs_api::testing

#endif  // COMPONENTS_BROWSER_APIS_TAB_STRIP_TESTING_INJECTOR_H_
