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

#ifndef CONTENT_BROWSER_GPU_INTERFACE_PROVIDER_H_
#define CONTENT_BROWSER_GPU_INTERFACE_PROVIDER_H_

#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "content/common/content_export.h"
#include "services/ws/public/cpp/host/gpu_interface_provider.h"

namespace content {

// An implementation of GpuInterfaceProvider that forwards to the Gpu
// implementation in content.
class CONTENT_EXPORT GpuInterfaceProvider : public ws::GpuInterfaceProvider {
 public:
  GpuInterfaceProvider();
  ~GpuInterfaceProvider() override;

  // ws::GpuInterfaceProvider:
  void RegisterGpuInterfaces(
      service_manager::BinderRegistry* registry) override;
#if defined(USE_OZONE)
  void BindOzoneGpuInterface(const std::string& interface_name,
                             mojo::ScopedMessagePipeHandle handle) override;
#endif

 private:
  class InterfaceBinderImpl;

  scoped_refptr<InterfaceBinderImpl> interface_binder_impl_;

  DISALLOW_COPY_AND_ASSIGN(GpuInterfaceProvider);
};

}  // namespace content

#endif  // CONTENT_BROWSER_GPU_INTERFACE_PROVIDER_H_
