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

#ifndef EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_
#define EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_

#include "extensions/renderer/bindings/interaction_provider.h"

#include "v8/include/v8.h"

namespace extensions {
class TestInteractionProvider : public InteractionProvider {
 public:
  TestInteractionProvider();

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

  ~TestInteractionProvider() override;

  // InteractionProvider:
  std::unique_ptr<InteractionProvider::Token> GetCurrentToken(
      v8::Local<v8::Context> v8_context) const override;
  std::unique_ptr<InteractionProvider::Scope> CreateScopedInteraction(
      v8::Local<v8::Context> v8_context,
      std::unique_ptr<InteractionProvider::Token> token) const override;
  bool HasActiveInteraction(v8::Local<v8::Context> v8_context) const override;
};

// User activation mock for test: sets transient activation state on
// construction, resets on destruction.
class ScopedTestUserActivation {
 public:
  ScopedTestUserActivation();
  ~ScopedTestUserActivation();
};

}  // namespace extensions

#endif  // EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_