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

Unified Diff: extensions/common/manifest_handlers/permissions_parser.h

Issue 309533007: Refactor PermissionsData pt1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Latest master Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: extensions/common/manifest_handlers/permissions_parser.h
diff --git a/extensions/common/manifest_handlers/permissions_parser.h b/extensions/common/manifest_handlers/permissions_parser.h
new file mode 100644
index 0000000000000000000000000000000000000000..81ffe0ec70ee37f1429bdc44072e7d86e6a87485
--- /dev/null
+++ b/extensions/common/manifest_handlers/permissions_parser.h
@@ -0,0 +1,63 @@
+// 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.
+
+#ifndef EXTENSIONS_COMMON_MANIFEST_HANDLERS_PERMISSIONS_PARSER_H_
+#define EXTENSIONS_COMMON_MANIFEST_HANDLERS_PERMISSIONS_PARSER_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/string16.h"
+#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permission_set.h"
+
+namespace extensions {
+
+class Extension;
+class URLPatternSet;
+
+// The class for parsing the kPermissions and kOptionalPermissions keys in the
+// manifest. Because permissions are slightly different than other keys (they
+// are used in many different handlers and need to be the first and last key
+// touched), this is not an actual ManifestHandler (hence the difference in
+// name).
+class PermissionsParser {
+ public:
+ PermissionsParser();
+ ~PermissionsParser();
+
+ // Parse the manifest-specified permissions.
+ bool Parse(Extension* extension, base::string16* error);
+
+ // Finalize the permissions, setting the related manifest data on the
+ // extension.
+ void Finalize(Extension* extension);
+
+ // Modify the manifest permissions. These methods should only be used
+ // during initialization and will DCHECK() for safety.
+ static void AddAPIPermission(Extension* extension,
+ APIPermission::ID permission);
+ static void AddAPIPermission(Extension* extension, APIPermission* permission);
+ static bool HasAPIPermission(const Extension* extension,
+ APIPermission::ID permission);
+ static void SetScriptableHosts(Extension* extension,
+ const URLPatternSet& scriptable_hosts);
+
+ // Return the extension's manifest-specified permissions. In no cases should
+ // these permissions be used to determine if an action is allowed. Instead,
+ // use PermissionsData.
+ static scoped_refptr<const PermissionSet> GetRequiredPermissions(
+ const Extension* extension);
+ static scoped_refptr<const PermissionSet> GetOptionalPermissions(
+ const Extension* extension);
+
+ private:
+ struct InitialPermissions;
+
+ // The initial permissions for the extension, which can still be modified.
+ scoped_ptr<InitialPermissions> initial_required_permissions_;
+ scoped_ptr<InitialPermissions> initial_optional_permissions_;
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_COMMON_MANIFEST_HANDLERS_PERMISSIONS_PARSER_H_
« no previous file with comments | « extensions/common/manifest_handlers/offline_enabled_info.cc ('k') | extensions/common/manifest_handlers/permissions_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698