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#ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_SOCKET_PERMISSION_H_
6#define CHROME_COMMON_EXTENSIONS_PERMISSIONS_SOCKET_PERMISSION_H_
7
8#include <string>
9
10#include "chrome/common/extensions/permissions/api_permission.h"
11#include "chrome/common/extensions/permissions/set_disjunction_permission.h"
12#include "chrome/common/extensions/permissions/socket_permission_data.h"
13
14namespace extensions {
15
16class SocketPermission : public SetDisjunctionPermission<SocketPermissionData,
17                                                         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};
39
40}  // namespace extensions
41
42#endif  // CHROME_COMMON_EXTENSIONS_PERMISSIONS_SOCKET_PERMISSION_H_
43