1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_ 6#define CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_ 7 8#include "base/callback.h" 9#include "base/memory/ref_counted.h" 10#include "content/public/browser/gpu_data_manager_observer.h" 11#include "gpu/config/gpu_feature_type.h" 12 13namespace content { 14class GpuDataManager; 15} // namespace content 16 17class GPUFeatureChecker : public base::RefCountedThreadSafe<GPUFeatureChecker>, 18 public content::GpuDataManagerObserver { 19 public: 20 typedef base::Callback<void(bool feature_available)> FeatureAvailableCallback; 21 22 GPUFeatureChecker(gpu::GpuFeatureType feature, 23 FeatureAvailableCallback callback); 24 25 // Check to see if |feature_| is available on the current GPU. |callback_| 26 // will be called to indicate the availability of the feature. Must be called 27 // from the the UI thread. 28 void CheckGPUFeatureAvailability(); 29 30 // content::GpuDataManagerObserver 31 virtual void OnGpuInfoUpdate() OVERRIDE; 32 private: 33 friend class base::RefCountedThreadSafe<GPUFeatureChecker>; 34 35 virtual ~GPUFeatureChecker(); 36 37 gpu::GpuFeatureType feature_; 38 FeatureAvailableCallback callback_; 39 40 DISALLOW_COPY_AND_ASSIGN(GPUFeatureChecker); 41}; 42 43#endif // CHROME_BROWSER_GPU_GPU_FEATURE_CHECKER_H_ 44