// Copyright 2017 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_GPU_FEATURE_CHECKER_IMPL_H_
#define CONTENT_BROWSER_GPU_GPU_FEATURE_CHECKER_IMPL_H_

#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "content/public/browser/gpu_data_manager_observer.h"
#include "content/public/browser/gpu_feature_checker.h"
#include "gpu/config/gpu_feature_type.h"

namespace content {

class CONTENT_EXPORT GpuFeatureCheckerImpl : public GpuFeatureChecker,
                                             public GpuDataManagerObserver {
 public:
  GpuFeatureCheckerImpl(gpu::GpuFeatureType feature,
                        FeatureAvailableCallback callback);

  // GpuFeatureChecker implementation.
  void CheckGpuFeatureAvailability() override;

  // GpuDataManagerObserver implementation.
  void OnGpuInfoUpdate() override;

 private:
  ~GpuFeatureCheckerImpl() override;

  gpu::GpuFeatureType feature_;
  FeatureAvailableCallback callback_;

  DISALLOW_COPY_AND_ASSIGN(GpuFeatureCheckerImpl);
};

}  // namespace content

#endif  // CONTENT_BROWSER_GPU_GPU_FEATURE_CHECKER_IMPL_H_
