| Index: chrome/common/extensions/api/sockets/sockets_manifest_permission.h
|
| diff --git a/chrome/common/extensions/api/sockets/sockets_manifest_permission.h b/chrome/common/extensions/api/sockets/sockets_manifest_permission.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ca65b0ffb102bdeb85fb1fb54a107f03adb7761d
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/api/sockets/sockets_manifest_permission.h
|
| @@ -0,0 +1,100 @@
|
| +// Copyright 2013 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 CHROME_COMMON_EXTENSIONS_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_
|
| +#define CHROME_COMMON_EXTENSIONS_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_
|
| +
|
| +#include <set>
|
| +#include <vector>
|
| +
|
| +#include "chrome/common/extensions/permissions/socket_permission_entry.h"
|
| +#include "extensions/common/install_warning.h"
|
| +#include "extensions/common/permissions/manifest_permission.h"
|
| +
|
| +namespace content {
|
| +struct SocketPermissionRequest;
|
| +}
|
| +
|
| +namespace extensions {
|
| +class Extension;
|
| +}
|
| +
|
| +namespace extensions {
|
| +
|
| +class SocketsManifestPermission : public ManifestPermission {
|
| + public:
|
| + typedef std::set<SocketPermissionEntry> SocketPermissionEntrySet;
|
| + enum PermissionKind {
|
| + kNone = 0,
|
| + kTcpPermission = 1 << 0,
|
| + kUdpPermission = 1 << 1,
|
| + kTcpServerPermission = 1 << 2
|
| + };
|
| +
|
| + SocketsManifestPermission();
|
| + virtual ~SocketsManifestPermission();
|
| +
|
| + // Tries to construct the info based on |value|, as it would have appeared in
|
| + // the manifest. Sets |error| and returns an empty scoped_ptr on failure.
|
| + static scoped_ptr<SocketsManifestPermission> FromValue(
|
| + const base::Value& value,
|
| + string16* error);
|
| +
|
| + bool CheckRequest(const Extension* extension,
|
| + const content::SocketPermissionRequest& request) const;
|
| +
|
| + // extensions::ManifestPermission overrides.
|
| + virtual std::string name() const OVERRIDE;
|
| + virtual std::string id() const OVERRIDE;
|
| + virtual bool HasMessages() const OVERRIDE;
|
| + virtual PermissionMessages GetMessages() const OVERRIDE;
|
| + virtual bool FromValue(const base::Value* value) OVERRIDE;
|
| + virtual scoped_ptr<base::Value> ToValue() const OVERRIDE;
|
| + virtual ManifestPermission* Clone() const OVERRIDE;
|
| + virtual ManifestPermission* Diff(const ManifestPermission* rhs) const
|
| + OVERRIDE;
|
| + virtual ManifestPermission* Union(const ManifestPermission* rhs) const
|
| + OVERRIDE;
|
| + virtual ManifestPermission* Intersect(const ManifestPermission* rhs) const
|
| + OVERRIDE;
|
| + virtual bool Contains(const ManifestPermission* rhs) const OVERRIDE;
|
| + virtual bool Equal(const ManifestPermission* rhs) const OVERRIDE;
|
| + virtual void Write(IPC::Message* m) const OVERRIDE;
|
| + virtual bool Read(const IPC::Message* m, PickleIterator* iter) OVERRIDE;
|
| + virtual void Log(std::string* log) const OVERRIDE;
|
| +
|
| + bool has_udp() const { return (kinds_ & kUdpPermission) != 0; }
|
| + bool has_tcp() const { return (kinds_ & kTcpPermission) != 0; }
|
| + bool has_tcp_server() const { return (kinds_ & kTcpServerPermission) != 0; }
|
| + const SocketPermissionEntrySet& entries() const { return permissions_; }
|
| +
|
| + private:
|
| + static bool ParseHostPattern(
|
| + SocketsManifestPermission* manifest_data,
|
| + content::SocketPermissionRequest::OperationType operation_type,
|
| + const scoped_ptr<std::string>& value,
|
| + string16* error);
|
| +
|
| + static PermissionKind HasOperationType(
|
| + const SocketPermissionEntrySet& set,
|
| + content::SocketPermissionRequest::OperationType operation_type,
|
| + PermissionKind kind);
|
| +
|
| + scoped_ptr<std::string> CreateHostPattern(
|
| + content::SocketPermissionRequest::OperationType operation_type) const;
|
| +
|
| + void AddPermission(const SocketPermissionEntry& entry);
|
| +
|
| + bool AddAnyHostMessage(PermissionMessages& messages) const;
|
| + void AddSubdomainHostMessage(PermissionMessages& messages) const;
|
| + void AddSpecificHostMessage(PermissionMessages& messages) const;
|
| + void AddNetworkListMessage(PermissionMessages& messages) const;
|
| +
|
| + SocketPermissionEntrySet permissions_;
|
| + int kinds_; // PermissionKind bits
|
| +};
|
| +
|
| +} // namespace extensions
|
| +
|
| +#endif // CHROME_COMMON_EXTENSIONS_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_
|
|
|