| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include <string> | 5 #include <string> | 
| 6 | 6 | 
| 7 #include "base/pickle.h" | 7 #include "base/pickle.h" | 
| 8 #include "base/values.h" | 8 #include "base/values.h" | 
| 9 #include "chrome/common/extensions/permissions/permissions_info.h" | 9 #include "chrome/common/extensions/permissions/permissions_info.h" | 
| 10 #include "chrome/common/extensions/permissions/socket_permission.h" | 10 #include "chrome/common/extensions/permissions/socket_permission.h" | 
| 11 #include "chrome/common/extensions/permissions/socket_permission_data.h" | 11 #include "chrome/common/extensions/permissions/socket_permission_data.h" | 
| 12 #include "ipc/ipc_message.h" | 12 #include "ipc/ipc_message.h" | 
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" | 
| 14 | 14 | 
|  | 15 using content::SocketPermissionRequest; | 
| 15 using extensions::SocketPermissionData; | 16 using extensions::SocketPermissionData; | 
| 16 | 17 | 
| 17 namespace { | 18 namespace { | 
| 18 | 19 | 
| 19 std::string Parse(const std::string& permission) { | 20 std::string Parse(const std::string& permission) { | 
| 20   SocketPermissionData data; | 21   SocketPermissionData data; | 
| 21   CHECK(data.Parse(permission)) << "Parse permission \"" << permission | 22   CHECK(data.Parse(permission)) << "Parse permission \"" << permission | 
| 22     << "\" failed."; | 23     << "\" failed."; | 
| 23   return data.GetAsString(); | 24   return data.GetAsString(); | 
| 24 } | 25 } | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 132       "tcp-connect:www.example.com:*"); | 133       "tcp-connect:www.example.com:*"); | 
| 133 | 134 | 
| 134   EXPECT_EQ(Parse("tcp-connect:*.example.com:99"), | 135   EXPECT_EQ(Parse("tcp-connect:*.example.com:99"), | 
| 135       "tcp-connect:*.example.com:99"); | 136       "tcp-connect:*.example.com:99"); | 
| 136 } | 137 } | 
| 137 | 138 | 
| 138 TEST(SocketPermissionTest, Match) { | 139 TEST(SocketPermissionTest, Match) { | 
| 139   SocketPermissionData data; | 140   SocketPermissionData data; | 
| 140 | 141 | 
| 141   CHECK(data.Parse("tcp-connect")); | 142   CHECK(data.Parse("tcp-connect")); | 
| 142   EXPECT_TRUE(data.Match( | 143   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 143         SocketPermissionData::TCP_CONNECT, "www.example.com", 80)); | 144         SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80))); | 
| 144   EXPECT_FALSE(data.Match( | 145   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 145         SocketPermissionData::UDP_SEND_TO, "www.example.com", 80)); | 146         SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 80))); | 
| 146 | 147 | 
| 147   CHECK(data.Parse("udp-send-to::8800")); | 148   CHECK(data.Parse("udp-send-to::8800")); | 
| 148   EXPECT_TRUE(data.Match( | 149   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 149         SocketPermissionData::UDP_SEND_TO, "www.example.com", 8800)); | 150         SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 8800))); | 
| 150   EXPECT_TRUE(data.Match( | 151   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 151         SocketPermissionData::UDP_SEND_TO, "smtp.example.com", 8800)); | 152         SocketPermissionRequest::UDP_SEND_TO, "smtp.example.com", 8800))); | 
| 152   EXPECT_FALSE(data.Match( | 153   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 153         SocketPermissionData::TCP_CONNECT, "www.example.com", 80)); | 154         SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80))); | 
| 154 | 155 | 
| 155   CHECK(data.Parse("udp-send-to:*.example.com:8800")); | 156   CHECK(data.Parse("udp-send-to:*.example.com:8800")); | 
| 156   EXPECT_TRUE(data.Match( | 157   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 157         SocketPermissionData::UDP_SEND_TO, "www.example.com", 8800)); | 158         SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 8800))); | 
| 158   EXPECT_TRUE(data.Match( | 159   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 159         SocketPermissionData::UDP_SEND_TO, "smtp.example.com", 8800)); | 160         SocketPermissionRequest::UDP_SEND_TO, "smtp.example.com", 8800))); | 
| 160   EXPECT_TRUE(data.Match( | 161   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 161         SocketPermissionData::UDP_SEND_TO, "SMTP.example.com", 8800)); | 162         SocketPermissionRequest::UDP_SEND_TO, "SMTP.example.com", 8800))); | 
| 162   EXPECT_FALSE(data.Match( | 163   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 163         SocketPermissionData::TCP_CONNECT, "www.example.com", 80)); | 164         SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80))); | 
| 164   EXPECT_FALSE(data.Match( | 165   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 165         SocketPermissionData::UDP_SEND_TO, "www.google.com", 8800)); | 166         SocketPermissionRequest::UDP_SEND_TO, "www.google.com", 8800))); | 
| 166   EXPECT_FALSE(data.Match( | 167   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 167         SocketPermissionData::UDP_SEND_TO, "wwwexample.com", 8800)); | 168         SocketPermissionRequest::UDP_SEND_TO, "wwwexample.com", 8800))); | 
| 168 | 169 | 
| 169   CHECK(data.Parse("udp-send-to:*.ExAmPlE.cOm:8800")); | 170   CHECK(data.Parse("udp-send-to:*.ExAmPlE.cOm:8800")); | 
| 170   EXPECT_TRUE(data.Match( | 171   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 171         SocketPermissionData::UDP_SEND_TO, "www.example.com", 8800)); | 172         SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 8800))); | 
| 172   EXPECT_TRUE(data.Match( | 173   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 173         SocketPermissionData::UDP_SEND_TO, "smtp.example.com", 8800)); | 174         SocketPermissionRequest::UDP_SEND_TO, "smtp.example.com", 8800))); | 
| 174   EXPECT_TRUE(data.Match( | 175   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 175         SocketPermissionData::UDP_SEND_TO, "SMTP.example.com", 8800)); | 176         SocketPermissionRequest::UDP_SEND_TO, "SMTP.example.com", 8800))); | 
| 176   EXPECT_FALSE(data.Match( | 177   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 177         SocketPermissionData::TCP_CONNECT, "www.example.com", 80)); | 178         SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80))); | 
| 178   EXPECT_FALSE(data.Match( | 179   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 179         SocketPermissionData::UDP_SEND_TO, "www.google.com", 8800)); | 180         SocketPermissionRequest::UDP_SEND_TO, "www.google.com", 8800))); | 
| 180 | 181 | 
| 181   CHECK(data.Parse("udp-bind::8800")); | 182   CHECK(data.Parse("udp-bind::8800")); | 
| 182   EXPECT_TRUE(data.Match( | 183   EXPECT_TRUE(data.Match(SocketPermissionRequest( | 
| 183         SocketPermissionData::UDP_BIND, "127.0.0.1", 8800)); | 184         SocketPermissionRequest::UDP_BIND, "127.0.0.1", 8800))); | 
| 184   EXPECT_FALSE(data.Match( | 185   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 185         SocketPermissionData::UDP_BIND, "127.0.0.1", 8888)); | 186         SocketPermissionRequest::UDP_BIND, "127.0.0.1", 8888))); | 
| 186   EXPECT_FALSE(data.Match( | 187   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 187         SocketPermissionData::TCP_CONNECT, "www.example.com", 80)); | 188         SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80))); | 
| 188   EXPECT_FALSE(data.Match( | 189   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 189         SocketPermissionData::UDP_SEND_TO, "www.google.com", 8800)); | 190         SocketPermissionRequest::UDP_SEND_TO, "www.google.com", 8800))); | 
| 190 | 191 | 
| 191   // Do not wildcard part of ip address. | 192   // Do not wildcard part of ip address. | 
| 192   CHECK(data.Parse("tcp-connect:*.168.0.1:8800")); | 193   CHECK(data.Parse("tcp-connect:*.168.0.1:8800")); | 
| 193   EXPECT_FALSE(data.Match( | 194   EXPECT_FALSE(data.Match(SocketPermissionRequest( | 
| 194         SocketPermissionData::TCP_CONNECT, "192.168.0.1", 8800)); | 195         SocketPermissionRequest::TCP_CONNECT, "192.168.0.1", 8800))); | 
| 195 } | 196 } | 
| 196 | 197 | 
| 197 TEST(SocketPermissionTest, IPC) { | 198 TEST(SocketPermissionTest, IPC) { | 
| 198   const APIPermissionInfo* permission_info = | 199   const APIPermissionInfo* permission_info = | 
| 199     PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 200     PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 
| 200 | 201 | 
| 201   { | 202   { | 
| 202     IPC::Message m; | 203     IPC::Message m; | 
| 203 | 204 | 
| 204     scoped_ptr<APIPermission> permission1( | 205     scoped_ptr<APIPermission> permission1( | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 257   base::Value* vtmp = NULL; | 258   base::Value* vtmp = NULL; | 
| 258   permission1->ToValue(&vtmp); | 259   permission1->ToValue(&vtmp); | 
| 259   CHECK(vtmp); | 260   CHECK(vtmp); | 
| 260   CHECK(permission2->FromValue(vtmp)); | 261   CHECK(permission2->FromValue(vtmp)); | 
| 261   EXPECT_TRUE(permission1->Equal(permission2.get())); | 262   EXPECT_TRUE(permission1->Equal(permission2.get())); | 
| 262 | 263 | 
| 263   delete vtmp; | 264   delete vtmp; | 
| 264 } | 265 } | 
| 265 | 266 | 
| 266 }  // namespace extensions | 267 }  // namespace extensions | 
| OLD | NEW | 
|---|