Index: chrome/common/extensions/api/sockets/sockets_handler.h |
diff --git a/chrome/common/extensions/api/sockets/sockets_handler.h b/chrome/common/extensions/api/sockets/sockets_handler.h |
index 28594071754ed847da758d280c58f7f9f1e8085a..e8ad2c94dbf3b6a811192aa2dcb3efdbcfd8f39f 100644 |
--- a/chrome/common/extensions/api/sockets/sockets_handler.h |
+++ b/chrome/common/extensions/api/sockets/sockets_handler.h |
@@ -19,6 +19,9 @@ class SocketsHandler : public ManifestHandler { |
virtual ~SocketsHandler(); |
virtual bool Parse(Extension* extension, string16* error) OVERRIDE; |
+ virtual ManifestPermission* CreatePermission() OVERRIDE; |
+ virtual ManifestPermission* CreateInitialRequiredPermission( |
+ const Extension* extension) OVERRIDE; |
private: |
virtual const std::vector<std::string> Keys() const OVERRIDE; |
@@ -29,10 +32,18 @@ class SocketsHandler : public ManifestHandler { |
// The parsed form of the "sockets" manifest entry. |
class SocketsManifestData : public Extension::ManifestData { |
public: |
+ typedef std::set<SocketPermissionEntry> SocketPermissionEntrySet; |
+ enum PermissionKind { |
+ kNone = 0x0000, |
Yoyo Zhou
2013/11/12 02:39:29
nit: we usually write (1<<0), (1<<1), etc. for the
rpaquay
2013/11/12 21:40:31
Done.
|
+ kTcpPermission = 0x0001, |
+ kUdpPermission = 0x0002, |
+ kTcpServerPermission = 0x0004 |
+ }; |
+ |
SocketsManifestData(); |
virtual ~SocketsManifestData(); |
- // Gets the ExternallyConnectableInfo for |extension|, or NULL if none was |
+ // Gets the SocketsManifestData for |extension|, or NULL if none was |
// specified. |
static SocketsManifestData* Get(const Extension* extension); |
@@ -46,9 +57,28 @@ class SocketsManifestData : public Extension::ManifestData { |
std::vector<InstallWarning>* install_warnings, |
string16* error); |
- private: |
- typedef std::set<SocketPermissionEntry> PermissionSet; |
+ bool HasMessages() const; |
+ PermissionMessages GetPermissionMessages() const; |
+ |
+ SocketsManifestData* Diff(const SocketsManifestData* rhs) const; |
+ SocketsManifestData* Union(const SocketsManifestData* rhs) const; |
+ SocketsManifestData* Intersect(const SocketsManifestData* rhs) const; |
+ bool Contains(const SocketsManifestData* rhs) const; |
+ bool Equal(const SocketsManifestData* rhs) const; |
+ SocketsManifestData* Clone() const; |
+ |
+ // IPC functions |
+ void Write(IPC::Message* m) const; |
+ bool Read(const IPC::Message* m, PickleIterator* iter); |
+ void Log(std::string* log) const; |
+ const SocketPermissionEntrySet& entries() const { return permissions_; } |
+ |
+ bool is_udp() const { return (kinds_ & kUdpPermission) != 0; } |
Yoyo Zhou
2013/11/12 02:39:29
Is "is" or "has" better for this if it's a bitmask
rpaquay
2013/11/12 21:40:31
Done.
|
+ bool is_tcp() const { return (kinds_ & kTcpPermission) != 0; } |
+ bool is_tcp_server() const { return (kinds_ & kTcpServerPermission) != 0; } |
+ |
+ private: |
static bool ParseHostPattern( |
SocketsManifestData* manifest_data, |
content::SocketPermissionRequest::OperationType operation_type, |
@@ -60,7 +90,13 @@ class SocketsManifestData : public Extension::ManifestData { |
bool CheckRequestImpl(const Extension* extension, |
const content::SocketPermissionRequest& request); |
- PermissionSet permissions_; |
+ 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 |