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