Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: chrome/browser/extensions/requirements_provider.h

Issue 10689097: Enforce the 'requirements' field in manifests. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: All New! (Removed sync tracing code) Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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_EXTENSIONS_REQUIREMENTS_PROVIDER_H_
6 #define CHROME_BROWSER_EXTENSIONS_REQUIREMENTS_PROVIDER_H_
7
8 #include <deque>
9 #include <list>
10
11 #include "base/memory/ref_counted.h"
12 #include "base/memory/weak_ptr.h"
13 #include "base/string16.h"
14 #include "chrome/browser/extensions/extension_service.h"
15
16 class ExtensionService;
17 class GPUFeatureChecker;
18
19 namespace extensions {
20 class Extension;
21
22 class RequirementsProvider {
Aaron Boodman 2012/07/22 17:46:25 Since this class isn't 'providing' things right no
23 public:
24 RequirementsProvider();
25 ~RequirementsProvider();
26
27 // A false return is always valid, however a true one is only pending.
28 // ExtensionService::UnsupportedRequirements will be called on |service|
29 // if the requirements are not fullfilled. |async| will inform the caller
30 // if check is incomplete.
31 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
32 bool* async, ExtensionService* service);
33
34 // Answer all the pending requirement checks.
35 void IsWebGLAvailable(bool available);
36 void IsCSS3dAvailable(bool available);
37
38 private:
39 struct GPUFeatureRequest {
40 GPUFeatureRequest(const std::string& id,
41 base::WeakPtr<ExtensionService> service);
42 GPUFeatureRequest();
43 ~GPUFeatureRequest();
44
45 std::string extension_id;
46 base::WeakPtr<ExtensionService> weak_service;
47 };
48
49 scoped_refptr<GPUFeatureChecker> webgl_checker_;
50 bool checked_for_webgl_;
51 bool webgl_supported_;
52 std::deque<GPUFeatureRequest> async_webgl_checks_;
53
54 scoped_refptr<GPUFeatureChecker> css3d_checker_;
55 bool checked_for_css3d_;
56 bool css3d_supported_;
57 std::deque<GPUFeatureRequest> async_css3d_checks_;
58
59 base::WeakPtrFactory<RequirementsProvider> weak_factory_;
60 };
61
62 } // namespace extensions
63
64 #endif // CHROME_BROWSER_EXTENSIONS_REQUIREMENTS_PROVIDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698