extensions_api_permissions.cc revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 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 "extensions/common/permissions/extensions_api_permissions.h"
6
7#include "extensions/common/permissions/api_permission.h"
8#include "extensions/common/permissions/permission_message.h"
9#include "extensions/common/permissions/socket_permission.h"
10#include "grit/extensions_strings.h"
11
12namespace extensions {
13
14namespace {
15
16template <typename T>
17APIPermission* CreateAPIPermission(const APIPermissionInfo* permission) {
18  return new T(permission);
19}
20
21}  // namespace
22
23std::vector<APIPermissionInfo*> ExtensionsAPIPermissions::GetAllPermissions()
24    const {
25  APIPermissionInfo::InitInfo permissions_to_register[] = {
26      {APIPermission::kDns, "dns"},
27      // Because warning messages for the "socket" permission vary based
28      // on the permissions parameters, no message ID or message text is
29      // specified here.  The message ID and text used will be
30      // determined at run-time in the |SocketPermission| class.
31      {APIPermission::kSocket, "socket",
32       APIPermissionInfo::kFlagCannotBeOptional, 0, PermissionMessage::kNone,
33       &CreateAPIPermission<SocketPermission>},
34      {APIPermission::kStorage, "storage"},
35      {APIPermission::kUsb, "usb", APIPermissionInfo::kFlagNone,
36       IDS_EXTENSION_PROMPT_WARNING_USB, PermissionMessage::kUsb},
37  };
38
39  std::vector<APIPermissionInfo*> permissions;
40  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(permissions_to_register); ++i)
41    permissions.push_back(new APIPermissionInfo(permissions_to_register[i]));
42  return permissions;
43}
44
45std::vector<PermissionsProvider::AliasInfo>
46ExtensionsAPIPermissions::GetAllAliases() const {
47  return std::vector<PermissionsProvider::AliasInfo>();
48}
49
50}  // namespace extensions
51