OLD | NEW |
| (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 #include "chrome/common/extensions/features/manifest_feature.h" | |
6 | |
7 #include "extensions/common/manifest.h" | |
8 | |
9 namespace extensions { | |
10 | |
11 ManifestFeature::ManifestFeature() { | |
12 } | |
13 | |
14 ManifestFeature::~ManifestFeature() { | |
15 } | |
16 | |
17 Feature::Availability ManifestFeature::IsAvailableToContext( | |
18 const Extension* extension, | |
19 Feature::Context context, | |
20 const GURL& url, | |
21 Feature::Platform platform) const { | |
22 Availability availability = SimpleFeature::IsAvailableToContext(extension, | |
23 context, | |
24 url, | |
25 platform); | |
26 if (!availability.is_available()) | |
27 return availability; | |
28 | |
29 // We know we can skip manifest()->GetKey() here because we just did the same | |
30 // validation it would do above. | |
31 if (extension && !extension->manifest()->value()->HasKey(name())) | |
32 return CreateAvailability(NOT_PRESENT, extension->GetType()); | |
33 | |
34 return CreateAvailability(IS_AVAILABLE); | |
35 } | |
36 | |
37 std::string ManifestFeature::Parse(const base::DictionaryValue* value) { | |
38 std::string error = SimpleFeature::Parse(value); | |
39 if (!error.empty()) | |
40 return error; | |
41 | |
42 if (extension_types()->empty()) { | |
43 return name() + ": Manifest features must specify at least one " + | |
44 "value for extension_types."; | |
45 } | |
46 | |
47 if (!GetContexts()->empty()) | |
48 return name() + ": Manifest features do not support contexts."; | |
49 | |
50 return std::string(); | |
51 } | |
52 | |
53 } // namespace extensions | |
OLD | NEW |