summaryrefslogtreecommitdiff
path: root/chromium/extensions/common/features/permission_feature.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/extensions/common/features/permission_feature.cc')
-rw-r--r--chromium/extensions/common/features/permission_feature.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/chromium/extensions/common/features/permission_feature.cc b/chromium/extensions/common/features/permission_feature.cc
new file mode 100644
index 00000000000..529ecd1188a
--- /dev/null
+++ b/chromium/extensions/common/features/permission_feature.cc
@@ -0,0 +1,52 @@
+// Copyright 2014 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.
+
+#include "extensions/common/features/permission_feature.h"
+
+#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
+
+namespace extensions {
+
+PermissionFeature::PermissionFeature() {
+}
+
+PermissionFeature::~PermissionFeature() {
+}
+
+Feature::Availability PermissionFeature::IsAvailableToContext(
+ const Extension* extension,
+ Feature::Context context,
+ const GURL& url,
+ Feature::Platform platform) const {
+ Availability availability = SimpleFeature::IsAvailableToContext(extension,
+ context,
+ url,
+ platform);
+ if (!availability.is_available())
+ return availability;
+
+ if (extension && !extension->permissions_data()->HasAPIPermission(name()))
+ return CreateAvailability(NOT_PRESENT, extension->GetType());
+
+ return CreateAvailability(IS_AVAILABLE);
+}
+
+std::string PermissionFeature::Parse(const base::DictionaryValue* value) {
+ std::string error = SimpleFeature::Parse(value);
+ if (!error.empty())
+ return error;
+
+ if (extension_types()->empty()) {
+ return name() + ": Permission features must specify at least one " +
+ "value for extension_types.";
+ }
+
+ if (value->HasKey("contexts"))
+ return name() + ": Permission features do not support contexts.";
+
+ return std::string();
+}
+
+} // namespace extensions