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#ifndef EXTENSIONS_COMMON_PERMISSIONS_SOCKET_PERMISSION_H_
6#define EXTENSIONS_COMMON_PERMISSIONS_SOCKET_PERMISSION_H_
7
8#include <string>
9
10#include "extensions/common/permissions/api_permission.h"
11#include "extensions/common/permissions/set_disjunction_permission.h"
12#include "extensions/common/permissions/socket_permission_data.h"
13
14namespace extensions {
15
16class SocketPermission
17    : public SetDisjunctionPermission<SocketPermissionData, SocketPermission> {
18 public:
19  struct CheckParam : APIPermission::CheckParam {
20    CheckParam(content::SocketPermissionRequest::OperationType type,
21               const std::string& host,
22               int port)
23        : request(type, host, port) {}
24    content::SocketPermissionRequest request;
25  };
26
27  explicit SocketPermission(const APIPermissionInfo* info);
28
29  virtual ~SocketPermission();
30
31  // Returns the localized permission messages of this permission.
32  virtual PermissionMessages GetMessages() const OVERRIDE;
33
34 private:
35  bool AddAnyHostMessage(PermissionMessages& messages) const;
36  void AddSubdomainHostMessage(PermissionMessages& messages) const;
37  void AddSpecificHostMessage(PermissionMessages& messages) const;
38  void AddNetworkListMessage(PermissionMessages& messages) const;
39};
40
41}  // namespace extensions
42
43#endif  // EXTENSIONS_COMMON_PERMISSIONS_SOCKET_PERMISSION_H_
44