Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8810)

Unified Diff: chrome/common/extensions/permissions/socket_permission_data.cc

Issue 12684008: Multicast socket API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add License info to multicast.js Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/permissions/socket_permission_data.cc
diff --git a/chrome/common/extensions/permissions/socket_permission_data.cc b/chrome/common/extensions/permissions/socket_permission_data.cc
index e44844c039cdf17984fd152ae97ad67bcbefcf4f..316060ace6f67e0c523c0d153671fc931e55fd90 100644
--- a/chrome/common/extensions/permissions/socket_permission_data.cc
+++ b/chrome/common/extensions/permissions/socket_permission_data.cc
@@ -30,6 +30,7 @@ const char kTCPConnect[] = "tcp-connect";
const char kTCPListen[] = "tcp-listen";
const char kUDPBind[] = "udp-bind";
const char kUDPSendTo[] = "udp-send-to";
+const char kUDPMulticastMembership[] = "udp-multicast-membership";
const int kWildcardPortNumber = 0;
const int kInvalidPort = -1;
@@ -42,6 +43,8 @@ SocketPermissionRequest::OperationType StringToType(const std::string& s) {
return SocketPermissionRequest::UDP_BIND;
if (s == kUDPSendTo)
return SocketPermissionRequest::UDP_SEND_TO;
+ if (s == kUDPMulticastMembership)
+ return SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP;
return SocketPermissionRequest::NONE;
}
@@ -55,6 +58,8 @@ const char* TypeToString(SocketPermissionRequest::OperationType type) {
return kUDPBind;
case SocketPermissionRequest::UDP_SEND_TO:
return kUDPSendTo;
+ case SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP:
+ return kUDPMulticastMembership;
default:
return kInvalid;
}
@@ -207,6 +212,10 @@ bool SocketPermissionData::Parse(const std::string& permission) {
if (tokens.size() == 1)
return true;
+ // Multicast membership permission string does not include an address.
+ if (pattern_.type == SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP)
+ return false;
+
pattern_.host = tokens[1];
if (!pattern_.host.empty()) {
if (StartsOrEndsWithWhitespace(pattern_.host))
@@ -250,6 +259,9 @@ const std::string& SocketPermissionData::GetAsString() const {
spec_.reserve(64);
spec_.append(TypeToString(pattern_.type));
+ if (pattern_.type == SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP)
+ return spec_;
+
if (match_subdomains_) {
spec_.append(1, kColon).append(kWildcard);
if (!pattern_.host.empty())

Powered by Google App Engine
This is Rietveld 408576698