Chromium Code Reviews| Index: chrome/browser/extensions/requirements_provider.h |
| diff --git a/chrome/browser/extensions/requirements_provider.h b/chrome/browser/extensions/requirements_provider.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8ef94ded2fa737b26d39a8db557d4bed498e0598 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/requirements_provider.h |
| @@ -0,0 +1,64 @@ |
| +// Copyright (c) 2012 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 CHROME_BROWSER_EXTENSIONS_REQUIREMENTS_PROVIDER_H_ |
| +#define CHROME_BROWSER_EXTENSIONS_REQUIREMENTS_PROVIDER_H_ |
| + |
| +#include <deque> |
| +#include <list> |
| + |
| +#include "base/memory/ref_counted.h" |
| +#include "base/memory/weak_ptr.h" |
| +#include "base/string16.h" |
| +#include "chrome/browser/extensions/extension_service.h" |
| + |
| +class ExtensionService; |
| +class GPUFeatureChecker; |
| + |
| +namespace extensions { |
| +class Extension; |
| + |
| +class RequirementsProvider { |
|
Aaron Boodman
2012/07/22 17:46:25
Since this class isn't 'providing' things right no
|
| + public: |
| + RequirementsProvider(); |
| + ~RequirementsProvider(); |
| + |
| + // A false return is always valid, however a true one is only pending. |
| + // ExtensionService::UnsupportedRequirements will be called on |service| |
| + // if the requirements are not fullfilled. |async| will inform the caller |
| + // if check is incomplete. |
| + bool Supports(const Extension* extsnion, std::list<string16>* errors, |
|
Aaron Boodman
2012/07/22 17:46:25
This is a kind of odd interface. How about making
|
| + bool* async, ExtensionService* service); |
| + |
| + // Answer all the pending requirement checks. |
| + void IsWebGLAvailable(bool available); |
| + void IsCSS3dAvailable(bool available); |
| + |
| + private: |
| + struct GPUFeatureRequest { |
| + GPUFeatureRequest(const std::string& id, |
| + base::WeakPtr<ExtensionService> service); |
| + GPUFeatureRequest(); |
| + ~GPUFeatureRequest(); |
| + |
| + std::string extension_id; |
| + base::WeakPtr<ExtensionService> weak_service; |
| + }; |
| + |
| + scoped_refptr<GPUFeatureChecker> webgl_checker_; |
| + bool checked_for_webgl_; |
| + bool webgl_supported_; |
| + std::deque<GPUFeatureRequest> async_webgl_checks_; |
| + |
| + scoped_refptr<GPUFeatureChecker> css3d_checker_; |
| + bool checked_for_css3d_; |
| + bool css3d_supported_; |
| + std::deque<GPUFeatureRequest> async_css3d_checks_; |
| + |
| + base::WeakPtrFactory<RequirementsProvider> weak_factory_; |
| +}; |
| + |
| +} // namespace extensions |
| + |
| +#endif // CHROME_BROWSER_EXTENSIONS_REQUIREMENTS_PROVIDER_H_ |