| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/pickle.h" | 5 #include "base/pickle.h" |
| 6 #include "base/values.h" | 6 #include "base/values.h" |
| 7 #include "chrome/common/extensions/extension_messages.h" | 7 #include "chrome/common/extensions/extension_messages.h" |
| 8 #include "extensions/common/permissions/api_permission_set.h" | 8 #include "extensions/common/permissions/api_permission_set.h" |
| 9 #include "extensions/common/permissions/permissions_info.h" | 9 #include "extensions/common/permissions/permissions_info.h" |
| 10 #include "ipc/ipc_message.h" | 10 #include "ipc/ipc_message.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 APIPermissionSet result; | 41 APIPermissionSet result; |
| 42 | 42 |
| 43 const APIPermissionInfo* permission_info = | 43 const APIPermissionInfo* permission_info = |
| 44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
| 45 permission = permission_info->CreateAPIPermission(); | 45 permission = permission_info->CreateAPIPermission(); |
| 46 { | 46 { |
| 47 scoped_ptr<base::ListValue> value(new base::ListValue()); | 47 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 48 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 48 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 49 value->Append(new base::StringValue("udp-bind::8080")); | 49 value->Append(new base::StringValue("udp-bind::8080")); |
| 50 value->Append(new base::StringValue("udp-send-to::8888")); | 50 value->Append(new base::StringValue("udp-send-to::8888")); |
| 51 if (!permission->FromValue(value.get())) { | 51 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 52 NOTREACHED(); | |
| 53 } | |
| 54 } | 52 } |
| 55 | 53 |
| 56 // Union with an empty set. | 54 // Union with an empty set. |
| 57 apis1.insert(APIPermission::kTab); | 55 apis1.insert(APIPermission::kTab); |
| 58 apis1.insert(APIPermission::kBackground); | 56 apis1.insert(APIPermission::kBackground); |
| 59 apis1.insert(permission->Clone()); | 57 apis1.insert(permission->Clone()); |
| 60 expected_apis.insert(APIPermission::kTab); | 58 expected_apis.insert(APIPermission::kTab); |
| 61 expected_apis.insert(APIPermission::kBackground); | 59 expected_apis.insert(APIPermission::kBackground); |
| 62 expected_apis.insert(permission); | 60 expected_apis.insert(permission); |
| 63 | 61 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 76 apis2.insert(APIPermission::kTab); | 74 apis2.insert(APIPermission::kTab); |
| 77 apis2.insert(APIPermission::kProxy); | 75 apis2.insert(APIPermission::kProxy); |
| 78 apis2.insert(APIPermission::kClipboardWrite); | 76 apis2.insert(APIPermission::kClipboardWrite); |
| 79 apis2.insert(APIPermission::kPlugin); | 77 apis2.insert(APIPermission::kPlugin); |
| 80 | 78 |
| 81 permission = permission_info->CreateAPIPermission(); | 79 permission = permission_info->CreateAPIPermission(); |
| 82 { | 80 { |
| 83 scoped_ptr<base::ListValue> value(new base::ListValue()); | 81 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 84 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 82 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 85 value->Append(new base::StringValue("udp-send-to::8899")); | 83 value->Append(new base::StringValue("udp-send-to::8899")); |
| 86 if (!permission->FromValue(value.get())) { | 84 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 87 NOTREACHED(); | |
| 88 } | |
| 89 } | 85 } |
| 90 apis2.insert(permission); | 86 apis2.insert(permission); |
| 91 | 87 |
| 92 expected_apis.insert(APIPermission::kTab); | 88 expected_apis.insert(APIPermission::kTab); |
| 93 expected_apis.insert(APIPermission::kProxy); | 89 expected_apis.insert(APIPermission::kProxy); |
| 94 expected_apis.insert(APIPermission::kClipboardWrite); | 90 expected_apis.insert(APIPermission::kClipboardWrite); |
| 95 expected_apis.insert(APIPermission::kPlugin); | 91 expected_apis.insert(APIPermission::kPlugin); |
| 96 | 92 |
| 97 permission = permission_info->CreateAPIPermission(); | 93 permission = permission_info->CreateAPIPermission(); |
| 98 { | 94 { |
| 99 scoped_ptr<base::ListValue> value(new base::ListValue()); | 95 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 100 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 96 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 101 value->Append(new base::StringValue("udp-bind::8080")); | 97 value->Append(new base::StringValue("udp-bind::8080")); |
| 102 value->Append(new base::StringValue("udp-send-to::8888")); | 98 value->Append(new base::StringValue("udp-send-to::8888")); |
| 103 value->Append(new base::StringValue("udp-send-to::8899")); | 99 value->Append(new base::StringValue("udp-send-to::8899")); |
| 104 if (!permission->FromValue(value.get())) { | 100 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 105 NOTREACHED(); | |
| 106 } | |
| 107 } | 101 } |
| 108 // Insert a new socket permission which will replace the old one. | 102 // Insert a new socket permission which will replace the old one. |
| 109 expected_apis.insert(permission); | 103 expected_apis.insert(permission); |
| 110 | 104 |
| 111 APIPermissionSet::Union(apis1, apis2, &result); | 105 APIPermissionSet::Union(apis1, apis2, &result); |
| 112 | 106 |
| 113 EXPECT_FALSE(apis1.Contains(apis2)); | 107 EXPECT_FALSE(apis1.Contains(apis2)); |
| 114 EXPECT_FALSE(apis1.Contains(result)); | 108 EXPECT_FALSE(apis1.Contains(result)); |
| 115 EXPECT_FALSE(apis2.Contains(apis1)); | 109 EXPECT_FALSE(apis2.Contains(apis1)); |
| 116 EXPECT_FALSE(apis2.Contains(result)); | 110 EXPECT_FALSE(apis2.Contains(result)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 133 | 127 |
| 134 // Intersection with an empty set. | 128 // Intersection with an empty set. |
| 135 apis1.insert(APIPermission::kTab); | 129 apis1.insert(APIPermission::kTab); |
| 136 apis1.insert(APIPermission::kBackground); | 130 apis1.insert(APIPermission::kBackground); |
| 137 permission = permission_info->CreateAPIPermission(); | 131 permission = permission_info->CreateAPIPermission(); |
| 138 { | 132 { |
| 139 scoped_ptr<base::ListValue> value(new base::ListValue()); | 133 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 140 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 134 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 141 value->Append(new base::StringValue("udp-bind::8080")); | 135 value->Append(new base::StringValue("udp-bind::8080")); |
| 142 value->Append(new base::StringValue("udp-send-to::8888")); | 136 value->Append(new base::StringValue("udp-send-to::8888")); |
| 143 if (!permission->FromValue(value.get())) { | 137 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 144 NOTREACHED(); | |
| 145 } | |
| 146 } | 138 } |
| 147 apis1.insert(permission); | 139 apis1.insert(permission); |
| 148 | 140 |
| 149 APIPermissionSet::Intersection(apis1, apis2, &result); | 141 APIPermissionSet::Intersection(apis1, apis2, &result); |
| 150 EXPECT_TRUE(apis1.Contains(result)); | 142 EXPECT_TRUE(apis1.Contains(result)); |
| 151 EXPECT_TRUE(apis2.Contains(result)); | 143 EXPECT_TRUE(apis2.Contains(result)); |
| 152 EXPECT_TRUE(apis1.Contains(apis2)); | 144 EXPECT_TRUE(apis1.Contains(apis2)); |
| 153 EXPECT_FALSE(apis2.Contains(apis1)); | 145 EXPECT_FALSE(apis2.Contains(apis1)); |
| 154 EXPECT_FALSE(result.Contains(apis1)); | 146 EXPECT_FALSE(result.Contains(apis1)); |
| 155 EXPECT_TRUE(result.Contains(apis2)); | 147 EXPECT_TRUE(result.Contains(apis2)); |
| 156 | 148 |
| 157 EXPECT_TRUE(result.empty()); | 149 EXPECT_TRUE(result.empty()); |
| 158 EXPECT_EQ(expected_apis, result); | 150 EXPECT_EQ(expected_apis, result); |
| 159 | 151 |
| 160 // Now use a real second set. | 152 // Now use a real second set. |
| 161 apis2.insert(APIPermission::kTab); | 153 apis2.insert(APIPermission::kTab); |
| 162 apis2.insert(APIPermission::kProxy); | 154 apis2.insert(APIPermission::kProxy); |
| 163 apis2.insert(APIPermission::kClipboardWrite); | 155 apis2.insert(APIPermission::kClipboardWrite); |
| 164 apis2.insert(APIPermission::kPlugin); | 156 apis2.insert(APIPermission::kPlugin); |
| 165 permission = permission_info->CreateAPIPermission(); | 157 permission = permission_info->CreateAPIPermission(); |
| 166 { | 158 { |
| 167 scoped_ptr<base::ListValue> value(new base::ListValue()); | 159 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 168 value->Append(new base::StringValue("udp-bind::8080")); | 160 value->Append(new base::StringValue("udp-bind::8080")); |
| 169 value->Append(new base::StringValue("udp-send-to::8888")); | 161 value->Append(new base::StringValue("udp-send-to::8888")); |
| 170 value->Append(new base::StringValue("udp-send-to::8899")); | 162 value->Append(new base::StringValue("udp-send-to::8899")); |
| 171 if (!permission->FromValue(value.get())) { | 163 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 172 NOTREACHED(); | |
| 173 } | |
| 174 } | 164 } |
| 175 apis2.insert(permission); | 165 apis2.insert(permission); |
| 176 | 166 |
| 177 expected_apis.insert(APIPermission::kTab); | 167 expected_apis.insert(APIPermission::kTab); |
| 178 permission = permission_info->CreateAPIPermission(); | 168 permission = permission_info->CreateAPIPermission(); |
| 179 { | 169 { |
| 180 scoped_ptr<base::ListValue> value(new base::ListValue()); | 170 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 181 value->Append(new base::StringValue("udp-bind::8080")); | 171 value->Append(new base::StringValue("udp-bind::8080")); |
| 182 value->Append(new base::StringValue("udp-send-to::8888")); | 172 value->Append(new base::StringValue("udp-send-to::8888")); |
| 183 if (!permission->FromValue(value.get())) { | 173 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 184 NOTREACHED(); | |
| 185 } | |
| 186 } | 174 } |
| 187 expected_apis.insert(permission); | 175 expected_apis.insert(permission); |
| 188 | 176 |
| 189 APIPermissionSet::Intersection(apis1, apis2, &result); | 177 APIPermissionSet::Intersection(apis1, apis2, &result); |
| 190 | 178 |
| 191 EXPECT_TRUE(apis1.Contains(result)); | 179 EXPECT_TRUE(apis1.Contains(result)); |
| 192 EXPECT_TRUE(apis2.Contains(result)); | 180 EXPECT_TRUE(apis2.Contains(result)); |
| 193 EXPECT_FALSE(apis1.Contains(apis2)); | 181 EXPECT_FALSE(apis1.Contains(apis2)); |
| 194 EXPECT_FALSE(apis2.Contains(apis1)); | 182 EXPECT_FALSE(apis2.Contains(apis1)); |
| 195 EXPECT_FALSE(result.Contains(apis1)); | 183 EXPECT_FALSE(result.Contains(apis1)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 211 | 199 |
| 212 // Difference with an empty set. | 200 // Difference with an empty set. |
| 213 apis1.insert(APIPermission::kTab); | 201 apis1.insert(APIPermission::kTab); |
| 214 apis1.insert(APIPermission::kBackground); | 202 apis1.insert(APIPermission::kBackground); |
| 215 permission = permission_info->CreateAPIPermission(); | 203 permission = permission_info->CreateAPIPermission(); |
| 216 { | 204 { |
| 217 scoped_ptr<base::ListValue> value(new base::ListValue()); | 205 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 218 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 206 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 219 value->Append(new base::StringValue("udp-bind::8080")); | 207 value->Append(new base::StringValue("udp-bind::8080")); |
| 220 value->Append(new base::StringValue("udp-send-to::8888")); | 208 value->Append(new base::StringValue("udp-send-to::8888")); |
| 221 if (!permission->FromValue(value.get())) { | 209 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 222 NOTREACHED(); | |
| 223 } | |
| 224 } | 210 } |
| 225 apis1.insert(permission); | 211 apis1.insert(permission); |
| 226 | 212 |
| 227 APIPermissionSet::Difference(apis1, apis2, &result); | 213 APIPermissionSet::Difference(apis1, apis2, &result); |
| 228 | 214 |
| 229 EXPECT_EQ(apis1, result); | 215 EXPECT_EQ(apis1, result); |
| 230 | 216 |
| 231 // Now use a real second set. | 217 // Now use a real second set. |
| 232 apis2.insert(APIPermission::kTab); | 218 apis2.insert(APIPermission::kTab); |
| 233 apis2.insert(APIPermission::kProxy); | 219 apis2.insert(APIPermission::kProxy); |
| 234 apis2.insert(APIPermission::kClipboardWrite); | 220 apis2.insert(APIPermission::kClipboardWrite); |
| 235 apis2.insert(APIPermission::kPlugin); | 221 apis2.insert(APIPermission::kPlugin); |
| 236 permission = permission_info->CreateAPIPermission(); | 222 permission = permission_info->CreateAPIPermission(); |
| 237 { | 223 { |
| 238 scoped_ptr<base::ListValue> value(new base::ListValue()); | 224 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 239 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 225 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 240 value->Append(new base::StringValue("udp-send-to::8899")); | 226 value->Append(new base::StringValue("udp-send-to::8899")); |
| 241 if (!permission->FromValue(value.get())) { | 227 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 242 NOTREACHED(); | |
| 243 } | |
| 244 } | 228 } |
| 245 apis2.insert(permission); | 229 apis2.insert(permission); |
| 246 | 230 |
| 247 expected_apis.insert(APIPermission::kBackground); | 231 expected_apis.insert(APIPermission::kBackground); |
| 248 permission = permission_info->CreateAPIPermission(); | 232 permission = permission_info->CreateAPIPermission(); |
| 249 { | 233 { |
| 250 scoped_ptr<base::ListValue> value(new base::ListValue()); | 234 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 251 value->Append(new base::StringValue("udp-bind::8080")); | 235 value->Append(new base::StringValue("udp-bind::8080")); |
| 252 value->Append(new base::StringValue("udp-send-to::8888")); | 236 value->Append(new base::StringValue("udp-send-to::8888")); |
| 253 if (!permission->FromValue(value.get())) { | 237 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 254 NOTREACHED(); | |
| 255 } | |
| 256 } | 238 } |
| 257 expected_apis.insert(permission); | 239 expected_apis.insert(permission); |
| 258 | 240 |
| 259 APIPermissionSet::Difference(apis1, apis2, &result); | 241 APIPermissionSet::Difference(apis1, apis2, &result); |
| 260 | 242 |
| 261 EXPECT_TRUE(apis1.Contains(result)); | 243 EXPECT_TRUE(apis1.Contains(result)); |
| 262 EXPECT_FALSE(apis2.Contains(result)); | 244 EXPECT_FALSE(apis2.Contains(result)); |
| 263 | 245 |
| 264 EXPECT_EQ(expected_apis, result); | 246 EXPECT_EQ(expected_apis, result); |
| 265 | 247 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 279 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 261 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
| 280 | 262 |
| 281 apis.insert(APIPermission::kTab); | 263 apis.insert(APIPermission::kTab); |
| 282 apis.insert(APIPermission::kBackground); | 264 apis.insert(APIPermission::kBackground); |
| 283 permission = permission_info->CreateAPIPermission(); | 265 permission = permission_info->CreateAPIPermission(); |
| 284 { | 266 { |
| 285 scoped_ptr<base::ListValue> value(new base::ListValue()); | 267 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 286 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 268 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); |
| 287 value->Append(new base::StringValue("udp-bind::8080")); | 269 value->Append(new base::StringValue("udp-bind::8080")); |
| 288 value->Append(new base::StringValue("udp-send-to::8888")); | 270 value->Append(new base::StringValue("udp-send-to::8888")); |
| 289 if (!permission->FromValue(value.get())) { | 271 ASSERT_TRUE(permission->FromValue(value.get(), NULL)); |
| 290 NOTREACHED(); | |
| 291 } | |
| 292 } | 272 } |
| 293 apis.insert(permission); | 273 apis.insert(permission); |
| 294 | 274 |
| 295 EXPECT_NE(apis, expected_apis); | 275 EXPECT_NE(apis, expected_apis); |
| 296 | 276 |
| 297 IPC::Message m; | 277 IPC::Message m; |
| 298 WriteParam(&m, apis); | 278 WriteParam(&m, apis); |
| 299 PickleIterator iter(m); | 279 PickleIterator iter(m); |
| 300 CHECK(ReadParam(&m, &iter, &expected_apis)); | 280 CHECK(ReadParam(&m, &iter, &expected_apis)); |
| 301 EXPECT_EQ(apis, expected_apis); | 281 EXPECT_EQ(apis, expected_apis); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 324 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(), | 304 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(), |
| 325 APIPermission::kFileSystemWrite); | 305 APIPermission::kFileSystemWrite); |
| 326 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(), | 306 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(), |
| 327 APIPermission::kFileSystemDirectory); | 307 APIPermission::kFileSystemDirectory); |
| 328 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(), | 308 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(), |
| 329 APIPermission::kFileSystemWriteDirectory); | 309 APIPermission::kFileSystemWriteDirectory); |
| 330 EXPECT_EQ(apis.size(), 3u); | 310 EXPECT_EQ(apis.size(), 3u); |
| 331 } | 311 } |
| 332 | 312 |
| 333 } // namespace extensions | 313 } // namespace extensions |
| OLD | NEW |