| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <set> | 5 #include <set> |
| 6 #include <tuple> | 6 #include <tuple> |
| 7 | 7 |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/pickle.h" | 10 #include "base/pickle.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 "{ \"tcpServer\": { \"listen\": [\"127.0.0.1:80\", \"a.com:80\"] } }"; | 33 "{ \"tcpServer\": { \"listen\": [\"127.0.0.1:80\", \"a.com:80\"] } }"; |
| 34 | 34 |
| 35 static void AssertEmptyPermission(const SocketsManifestPermission* permission) { | 35 static void AssertEmptyPermission(const SocketsManifestPermission* permission) { |
| 36 EXPECT_TRUE(permission); | 36 EXPECT_TRUE(permission); |
| 37 EXPECT_EQ(std::string(extensions::manifest_keys::kSockets), permission->id()); | 37 EXPECT_EQ(std::string(extensions::manifest_keys::kSockets), permission->id()); |
| 38 EXPECT_EQ(permission->id(), permission->name()); | 38 EXPECT_EQ(permission->id(), permission->name()); |
| 39 EXPECT_TRUE(permission->GetPermissions().empty()); | 39 EXPECT_TRUE(permission->GetPermissions().empty()); |
| 40 EXPECT_EQ(0u, permission->entries().size()); | 40 EXPECT_EQ(0u, permission->entries().size()); |
| 41 } | 41 } |
| 42 | 42 |
| 43 static scoped_ptr<base::Value> ParsePermissionJSON(const std::string& json) { | 43 static std::unique_ptr<base::Value> ParsePermissionJSON( |
| 44 scoped_ptr<base::Value> result(base::JSONReader::Read(json)); | 44 const std::string& json) { |
| 45 std::unique_ptr<base::Value> result(base::JSONReader::Read(json)); |
| 45 EXPECT_TRUE(result) << "Invalid JSON string: " << json; | 46 EXPECT_TRUE(result) << "Invalid JSON string: " << json; |
| 46 return result; | 47 return result; |
| 47 } | 48 } |
| 48 | 49 |
| 49 static scoped_ptr<SocketsManifestPermission> PermissionFromValue( | 50 static std::unique_ptr<SocketsManifestPermission> PermissionFromValue( |
| 50 const base::Value& value) { | 51 const base::Value& value) { |
| 51 base::string16 error16; | 52 base::string16 error16; |
| 52 scoped_ptr<SocketsManifestPermission> permission( | 53 std::unique_ptr<SocketsManifestPermission> permission( |
| 53 SocketsManifestPermission::FromValue(value, &error16)); | 54 SocketsManifestPermission::FromValue(value, &error16)); |
| 54 EXPECT_TRUE(permission) << "Error parsing Value into permission: " << error16; | 55 EXPECT_TRUE(permission) << "Error parsing Value into permission: " << error16; |
| 55 return permission; | 56 return permission; |
| 56 } | 57 } |
| 57 | 58 |
| 58 static scoped_ptr<SocketsManifestPermission> PermissionFromJSON( | 59 static std::unique_ptr<SocketsManifestPermission> PermissionFromJSON( |
| 59 const std::string& json) { | 60 const std::string& json) { |
| 60 scoped_ptr<base::Value> value(ParsePermissionJSON(json)); | 61 std::unique_ptr<base::Value> value(ParsePermissionJSON(json)); |
| 61 return PermissionFromValue(*value); | 62 return PermissionFromValue(*value); |
| 62 } | 63 } |
| 63 | 64 |
| 64 struct CheckFormatEntry { | 65 struct CheckFormatEntry { |
| 65 CheckFormatEntry(SocketPermissionRequest::OperationType operation_type, | 66 CheckFormatEntry(SocketPermissionRequest::OperationType operation_type, |
| 66 std::string host_pattern) | 67 std::string host_pattern) |
| 67 : operation_type(operation_type), host_pattern(host_pattern) {} | 68 : operation_type(operation_type), host_pattern(host_pattern) {} |
| 68 | 69 |
| 69 // operators <, == are needed by container std::set and algorithms | 70 // operators <, == are needed by container std::set and algorithms |
| 70 // std::set_includes and std::set_differences. | 71 // std::set_includes and std::set_differences. |
| 71 bool operator<(const CheckFormatEntry& rhs) const { | 72 bool operator<(const CheckFormatEntry& rhs) const { |
| 72 return std::tie(operation_type, host_pattern) < | 73 return std::tie(operation_type, host_pattern) < |
| 73 std::tie(rhs.operation_type, rhs.host_pattern); | 74 std::tie(rhs.operation_type, rhs.host_pattern); |
| 74 } | 75 } |
| 75 | 76 |
| 76 bool operator==(const CheckFormatEntry& rhs) const { | 77 bool operator==(const CheckFormatEntry& rhs) const { |
| 77 return operation_type == rhs.operation_type && | 78 return operation_type == rhs.operation_type && |
| 78 host_pattern == rhs.host_pattern; | 79 host_pattern == rhs.host_pattern; |
| 79 } | 80 } |
| 80 | 81 |
| 81 SocketPermissionRequest::OperationType operation_type; | 82 SocketPermissionRequest::OperationType operation_type; |
| 82 std::string host_pattern; | 83 std::string host_pattern; |
| 83 }; | 84 }; |
| 84 | 85 |
| 85 static testing::AssertionResult CheckFormat( | 86 static testing::AssertionResult CheckFormat( |
| 86 std::multiset<CheckFormatEntry> permissions, | 87 std::multiset<CheckFormatEntry> permissions, |
| 87 const std::string& json) { | 88 const std::string& json) { |
| 88 scoped_ptr<SocketsManifestPermission> permission(PermissionFromJSON(json)); | 89 std::unique_ptr<SocketsManifestPermission> permission( |
| 90 PermissionFromJSON(json)); |
| 89 if (!permission) | 91 if (!permission) |
| 90 return testing::AssertionFailure() << "Invalid permission " << json; | 92 return testing::AssertionFailure() << "Invalid permission " << json; |
| 91 | 93 |
| 92 if (permissions.size() != permission->entries().size()) { | 94 if (permissions.size() != permission->entries().size()) { |
| 93 return testing::AssertionFailure() | 95 return testing::AssertionFailure() |
| 94 << "Incorrect # of entries in json: " << json; | 96 << "Incorrect # of entries in json: " << json; |
| 95 } | 97 } |
| 96 | 98 |
| 97 // Note: We use multiset because SocketsManifestPermission does not have to | 99 // Note: We use multiset because SocketsManifestPermission does not have to |
| 98 // store entries in the order found in the json message. | 100 // store entries in the order found in the json message. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 CheckFormatEntry entries[] = {op1, op2, op3, op4, op5, op6, op7, op8, op9}; | 147 CheckFormatEntry entries[] = {op1, op2, op3, op4, op5, op6, op7, op8, op9}; |
| 146 return CheckFormat( | 148 return CheckFormat( |
| 147 std::multiset<CheckFormatEntry>(entries, entries + arraysize(entries)), | 149 std::multiset<CheckFormatEntry>(entries, entries + arraysize(entries)), |
| 148 json); | 150 json); |
| 149 } | 151 } |
| 150 | 152 |
| 151 } // namespace | 153 } // namespace |
| 152 | 154 |
| 153 TEST(SocketsManifestPermissionTest, Empty) { | 155 TEST(SocketsManifestPermissionTest, Empty) { |
| 154 // Construction | 156 // Construction |
| 155 scoped_ptr<SocketsManifestPermission> permission( | 157 std::unique_ptr<SocketsManifestPermission> permission( |
| 156 new SocketsManifestPermission()); | 158 new SocketsManifestPermission()); |
| 157 AssertEmptyPermission(permission.get()); | 159 AssertEmptyPermission(permission.get()); |
| 158 | 160 |
| 159 // Clone()/Equal() | 161 // Clone()/Equal() |
| 160 scoped_ptr<SocketsManifestPermission> clone( | 162 std::unique_ptr<SocketsManifestPermission> clone( |
| 161 static_cast<SocketsManifestPermission*>(permission->Clone())); | 163 static_cast<SocketsManifestPermission*>(permission->Clone())); |
| 162 AssertEmptyPermission(clone.get()); | 164 AssertEmptyPermission(clone.get()); |
| 163 | 165 |
| 164 EXPECT_TRUE(permission->Equal(clone.get())); | 166 EXPECT_TRUE(permission->Equal(clone.get())); |
| 165 | 167 |
| 166 // ToValue()/FromValue() | 168 // ToValue()/FromValue() |
| 167 scoped_ptr<const base::Value> value(permission->ToValue()); | 169 std::unique_ptr<const base::Value> value(permission->ToValue()); |
| 168 EXPECT_TRUE(value.get()); | 170 EXPECT_TRUE(value.get()); |
| 169 | 171 |
| 170 scoped_ptr<SocketsManifestPermission> permission2( | 172 std::unique_ptr<SocketsManifestPermission> permission2( |
| 171 new SocketsManifestPermission()); | 173 new SocketsManifestPermission()); |
| 172 EXPECT_TRUE(permission2->FromValue(value.get())); | 174 EXPECT_TRUE(permission2->FromValue(value.get())); |
| 173 AssertEmptyPermission(permission2.get()); | 175 AssertEmptyPermission(permission2.get()); |
| 174 | 176 |
| 175 // Union/Diff/Intersection | 177 // Union/Diff/Intersection |
| 176 scoped_ptr<SocketsManifestPermission> diff_perm( | 178 std::unique_ptr<SocketsManifestPermission> diff_perm( |
| 177 static_cast<SocketsManifestPermission*>(permission->Diff(clone.get()))); | 179 static_cast<SocketsManifestPermission*>(permission->Diff(clone.get()))); |
| 178 AssertEmptyPermission(diff_perm.get()); | 180 AssertEmptyPermission(diff_perm.get()); |
| 179 | 181 |
| 180 scoped_ptr<SocketsManifestPermission> union_perm( | 182 std::unique_ptr<SocketsManifestPermission> union_perm( |
| 181 static_cast<SocketsManifestPermission*>(permission->Union(clone.get()))); | 183 static_cast<SocketsManifestPermission*>(permission->Union(clone.get()))); |
| 182 AssertEmptyPermission(union_perm.get()); | 184 AssertEmptyPermission(union_perm.get()); |
| 183 | 185 |
| 184 scoped_ptr<SocketsManifestPermission> intersect_perm( | 186 std::unique_ptr<SocketsManifestPermission> intersect_perm( |
| 185 static_cast<SocketsManifestPermission*>( | 187 static_cast<SocketsManifestPermission*>( |
| 186 permission->Intersect(clone.get()))); | 188 permission->Intersect(clone.get()))); |
| 187 AssertEmptyPermission(intersect_perm.get()); | 189 AssertEmptyPermission(intersect_perm.get()); |
| 188 | 190 |
| 189 // IPC | 191 // IPC |
| 190 scoped_ptr<SocketsManifestPermission> ipc_perm( | 192 std::unique_ptr<SocketsManifestPermission> ipc_perm( |
| 191 new SocketsManifestPermission()); | 193 new SocketsManifestPermission()); |
| 192 scoped_ptr<SocketsManifestPermission> ipc_perm2( | 194 std::unique_ptr<SocketsManifestPermission> ipc_perm2( |
| 193 new SocketsManifestPermission()); | 195 new SocketsManifestPermission()); |
| 194 | 196 |
| 195 IPC::Message m; | 197 IPC::Message m; |
| 196 ipc_perm->Write(&m); | 198 ipc_perm->Write(&m); |
| 197 base::PickleIterator iter(m); | 199 base::PickleIterator iter(m); |
| 198 EXPECT_TRUE(ipc_perm2->Read(&m, &iter)); | 200 EXPECT_TRUE(ipc_perm2->Read(&m, &iter)); |
| 199 AssertEmptyPermission(ipc_perm2.get()); | 201 AssertEmptyPermission(ipc_perm2.get()); |
| 200 } | 202 } |
| 201 | 203 |
| 202 TEST(SocketsManifestPermissionTest, JSONFormats) { | 204 TEST(SocketsManifestPermissionTest, JSONFormats) { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 CheckFormatEntry(SocketPermissionRequest::UDP_BIND, "a:80"), | 276 CheckFormatEntry(SocketPermissionRequest::UDP_BIND, "a:80"), |
| 275 CheckFormatEntry(SocketPermissionRequest::UDP_BIND, "b:10"), | 277 CheckFormatEntry(SocketPermissionRequest::UDP_BIND, "b:10"), |
| 276 CheckFormatEntry(SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, ""), | 278 CheckFormatEntry(SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, ""), |
| 277 CheckFormatEntry(SocketPermissionRequest::TCP_CONNECT, "a:80"), | 279 CheckFormatEntry(SocketPermissionRequest::TCP_CONNECT, "a:80"), |
| 278 CheckFormatEntry(SocketPermissionRequest::TCP_CONNECT, "b:10"), | 280 CheckFormatEntry(SocketPermissionRequest::TCP_CONNECT, "b:10"), |
| 279 CheckFormatEntry(SocketPermissionRequest::TCP_LISTEN, "a:80"), | 281 CheckFormatEntry(SocketPermissionRequest::TCP_LISTEN, "a:80"), |
| 280 CheckFormatEntry(SocketPermissionRequest::TCP_LISTEN, "b:10"))); | 282 CheckFormatEntry(SocketPermissionRequest::TCP_LISTEN, "b:10"))); |
| 281 } | 283 } |
| 282 | 284 |
| 283 TEST(SocketsManifestPermissionTest, FromToValue) { | 285 TEST(SocketsManifestPermissionTest, FromToValue) { |
| 284 scoped_ptr<base::Value> udp_send(ParsePermissionJSON(kUdpBindPermission)); | 286 std::unique_ptr<base::Value> udp_send( |
| 285 scoped_ptr<base::Value> udp_bind(ParsePermissionJSON(kUdpSendPermission)); | 287 ParsePermissionJSON(kUdpBindPermission)); |
| 286 scoped_ptr<base::Value> tcp_connect( | 288 std::unique_ptr<base::Value> udp_bind( |
| 289 ParsePermissionJSON(kUdpSendPermission)); |
| 290 std::unique_ptr<base::Value> tcp_connect( |
| 287 ParsePermissionJSON(kTcpConnectPermission)); | 291 ParsePermissionJSON(kTcpConnectPermission)); |
| 288 scoped_ptr<base::Value> tcp_server_listen( | 292 std::unique_ptr<base::Value> tcp_server_listen( |
| 289 ParsePermissionJSON(kTcpServerListenPermission)); | 293 ParsePermissionJSON(kTcpServerListenPermission)); |
| 290 | 294 |
| 291 // FromValue() | 295 // FromValue() |
| 292 scoped_ptr<SocketsManifestPermission> permission1( | 296 std::unique_ptr<SocketsManifestPermission> permission1( |
| 293 new SocketsManifestPermission()); | 297 new SocketsManifestPermission()); |
| 294 EXPECT_TRUE(permission1->FromValue(udp_send.get())); | 298 EXPECT_TRUE(permission1->FromValue(udp_send.get())); |
| 295 EXPECT_EQ(2u, permission1->entries().size()); | 299 EXPECT_EQ(2u, permission1->entries().size()); |
| 296 | 300 |
| 297 scoped_ptr<SocketsManifestPermission> permission2( | 301 std::unique_ptr<SocketsManifestPermission> permission2( |
| 298 new SocketsManifestPermission()); | 302 new SocketsManifestPermission()); |
| 299 EXPECT_TRUE(permission2->FromValue(udp_bind.get())); | 303 EXPECT_TRUE(permission2->FromValue(udp_bind.get())); |
| 300 EXPECT_EQ(2u, permission2->entries().size()); | 304 EXPECT_EQ(2u, permission2->entries().size()); |
| 301 | 305 |
| 302 scoped_ptr<SocketsManifestPermission> permission3( | 306 std::unique_ptr<SocketsManifestPermission> permission3( |
| 303 new SocketsManifestPermission()); | 307 new SocketsManifestPermission()); |
| 304 EXPECT_TRUE(permission3->FromValue(tcp_connect.get())); | 308 EXPECT_TRUE(permission3->FromValue(tcp_connect.get())); |
| 305 EXPECT_EQ(2u, permission3->entries().size()); | 309 EXPECT_EQ(2u, permission3->entries().size()); |
| 306 | 310 |
| 307 scoped_ptr<SocketsManifestPermission> permission4( | 311 std::unique_ptr<SocketsManifestPermission> permission4( |
| 308 new SocketsManifestPermission()); | 312 new SocketsManifestPermission()); |
| 309 EXPECT_TRUE(permission4->FromValue(tcp_server_listen.get())); | 313 EXPECT_TRUE(permission4->FromValue(tcp_server_listen.get())); |
| 310 EXPECT_EQ(2u, permission4->entries().size()); | 314 EXPECT_EQ(2u, permission4->entries().size()); |
| 311 | 315 |
| 312 // ToValue() | 316 // ToValue() |
| 313 scoped_ptr<base::Value> value1 = permission1->ToValue(); | 317 std::unique_ptr<base::Value> value1 = permission1->ToValue(); |
| 314 EXPECT_TRUE(value1); | 318 EXPECT_TRUE(value1); |
| 315 scoped_ptr<SocketsManifestPermission> permission1_1( | 319 std::unique_ptr<SocketsManifestPermission> permission1_1( |
| 316 new SocketsManifestPermission()); | 320 new SocketsManifestPermission()); |
| 317 EXPECT_TRUE(permission1_1->FromValue(value1.get())); | 321 EXPECT_TRUE(permission1_1->FromValue(value1.get())); |
| 318 EXPECT_TRUE(permission1->Equal(permission1_1.get())); | 322 EXPECT_TRUE(permission1->Equal(permission1_1.get())); |
| 319 | 323 |
| 320 scoped_ptr<base::Value> value2 = permission2->ToValue(); | 324 std::unique_ptr<base::Value> value2 = permission2->ToValue(); |
| 321 EXPECT_TRUE(value2); | 325 EXPECT_TRUE(value2); |
| 322 scoped_ptr<SocketsManifestPermission> permission2_1( | 326 std::unique_ptr<SocketsManifestPermission> permission2_1( |
| 323 new SocketsManifestPermission()); | 327 new SocketsManifestPermission()); |
| 324 EXPECT_TRUE(permission2_1->FromValue(value2.get())); | 328 EXPECT_TRUE(permission2_1->FromValue(value2.get())); |
| 325 EXPECT_TRUE(permission2->Equal(permission2_1.get())); | 329 EXPECT_TRUE(permission2->Equal(permission2_1.get())); |
| 326 | 330 |
| 327 scoped_ptr<base::Value> value3 = permission3->ToValue(); | 331 std::unique_ptr<base::Value> value3 = permission3->ToValue(); |
| 328 EXPECT_TRUE(value3); | 332 EXPECT_TRUE(value3); |
| 329 scoped_ptr<SocketsManifestPermission> permission3_1( | 333 std::unique_ptr<SocketsManifestPermission> permission3_1( |
| 330 new SocketsManifestPermission()); | 334 new SocketsManifestPermission()); |
| 331 EXPECT_TRUE(permission3_1->FromValue(value3.get())); | 335 EXPECT_TRUE(permission3_1->FromValue(value3.get())); |
| 332 EXPECT_TRUE(permission3->Equal(permission3_1.get())); | 336 EXPECT_TRUE(permission3->Equal(permission3_1.get())); |
| 333 | 337 |
| 334 scoped_ptr<base::Value> value4 = permission4->ToValue(); | 338 std::unique_ptr<base::Value> value4 = permission4->ToValue(); |
| 335 EXPECT_TRUE(value4); | 339 EXPECT_TRUE(value4); |
| 336 scoped_ptr<SocketsManifestPermission> permission4_1( | 340 std::unique_ptr<SocketsManifestPermission> permission4_1( |
| 337 new SocketsManifestPermission()); | 341 new SocketsManifestPermission()); |
| 338 EXPECT_TRUE(permission4_1->FromValue(value4.get())); | 342 EXPECT_TRUE(permission4_1->FromValue(value4.get())); |
| 339 EXPECT_TRUE(permission4->Equal(permission4_1.get())); | 343 EXPECT_TRUE(permission4->Equal(permission4_1.get())); |
| 340 } | 344 } |
| 341 | 345 |
| 342 TEST(SocketsManifestPermissionTest, SetOperations) { | 346 TEST(SocketsManifestPermissionTest, SetOperations) { |
| 343 scoped_ptr<SocketsManifestPermission> permission1( | 347 std::unique_ptr<SocketsManifestPermission> permission1( |
| 344 PermissionFromJSON(kUdpBindPermission)); | 348 PermissionFromJSON(kUdpBindPermission)); |
| 345 scoped_ptr<SocketsManifestPermission> permission2( | 349 std::unique_ptr<SocketsManifestPermission> permission2( |
| 346 PermissionFromJSON(kUdpSendPermission)); | 350 PermissionFromJSON(kUdpSendPermission)); |
| 347 scoped_ptr<SocketsManifestPermission> permission3( | 351 std::unique_ptr<SocketsManifestPermission> permission3( |
| 348 PermissionFromJSON(kTcpConnectPermission)); | 352 PermissionFromJSON(kTcpConnectPermission)); |
| 349 scoped_ptr<SocketsManifestPermission> permission4( | 353 std::unique_ptr<SocketsManifestPermission> permission4( |
| 350 PermissionFromJSON(kTcpServerListenPermission)); | 354 PermissionFromJSON(kTcpServerListenPermission)); |
| 351 | 355 |
| 352 // Union | 356 // Union |
| 353 scoped_ptr<SocketsManifestPermission> union_perm( | 357 std::unique_ptr<SocketsManifestPermission> union_perm( |
| 354 static_cast<SocketsManifestPermission*>( | 358 static_cast<SocketsManifestPermission*>( |
| 355 permission1->Union(permission2.get()))); | 359 permission1->Union(permission2.get()))); |
| 356 EXPECT_TRUE(union_perm); | 360 EXPECT_TRUE(union_perm); |
| 357 EXPECT_EQ(4u, union_perm->entries().size()); | 361 EXPECT_EQ(4u, union_perm->entries().size()); |
| 358 | 362 |
| 359 EXPECT_TRUE(union_perm->Contains(permission1.get())); | 363 EXPECT_TRUE(union_perm->Contains(permission1.get())); |
| 360 EXPECT_TRUE(union_perm->Contains(permission2.get())); | 364 EXPECT_TRUE(union_perm->Contains(permission2.get())); |
| 361 EXPECT_FALSE(union_perm->Contains(permission3.get())); | 365 EXPECT_FALSE(union_perm->Contains(permission3.get())); |
| 362 EXPECT_FALSE(union_perm->Contains(permission4.get())); | 366 EXPECT_FALSE(union_perm->Contains(permission4.get())); |
| 363 | 367 |
| 364 // Diff | 368 // Diff |
| 365 scoped_ptr<SocketsManifestPermission> diff_perm1( | 369 std::unique_ptr<SocketsManifestPermission> diff_perm1( |
| 366 static_cast<SocketsManifestPermission*>( | 370 static_cast<SocketsManifestPermission*>( |
| 367 permission1->Diff(permission2.get()))); | 371 permission1->Diff(permission2.get()))); |
| 368 EXPECT_TRUE(diff_perm1); | 372 EXPECT_TRUE(diff_perm1); |
| 369 EXPECT_EQ(2u, diff_perm1->entries().size()); | 373 EXPECT_EQ(2u, diff_perm1->entries().size()); |
| 370 | 374 |
| 371 EXPECT_TRUE(permission1->Equal(diff_perm1.get())); | 375 EXPECT_TRUE(permission1->Equal(diff_perm1.get())); |
| 372 EXPECT_TRUE(diff_perm1->Equal(permission1.get())); | 376 EXPECT_TRUE(diff_perm1->Equal(permission1.get())); |
| 373 | 377 |
| 374 scoped_ptr<SocketsManifestPermission> diff_perm2( | 378 std::unique_ptr<SocketsManifestPermission> diff_perm2( |
| 375 static_cast<SocketsManifestPermission*>( | 379 static_cast<SocketsManifestPermission*>( |
| 376 permission1->Diff(union_perm.get()))); | 380 permission1->Diff(union_perm.get()))); |
| 377 EXPECT_TRUE(diff_perm2); | 381 EXPECT_TRUE(diff_perm2); |
| 378 AssertEmptyPermission(diff_perm2.get()); | 382 AssertEmptyPermission(diff_perm2.get()); |
| 379 | 383 |
| 380 // Intersection | 384 // Intersection |
| 381 scoped_ptr<SocketsManifestPermission> intersect_perm1( | 385 std::unique_ptr<SocketsManifestPermission> intersect_perm1( |
| 382 static_cast<SocketsManifestPermission*>( | 386 static_cast<SocketsManifestPermission*>( |
| 383 union_perm->Intersect(permission1.get()))); | 387 union_perm->Intersect(permission1.get()))); |
| 384 EXPECT_TRUE(intersect_perm1); | 388 EXPECT_TRUE(intersect_perm1); |
| 385 EXPECT_EQ(2u, intersect_perm1->entries().size()); | 389 EXPECT_EQ(2u, intersect_perm1->entries().size()); |
| 386 | 390 |
| 387 EXPECT_TRUE(permission1->Equal(intersect_perm1.get())); | 391 EXPECT_TRUE(permission1->Equal(intersect_perm1.get())); |
| 388 EXPECT_TRUE(intersect_perm1->Equal(permission1.get())); | 392 EXPECT_TRUE(intersect_perm1->Equal(permission1.get())); |
| 389 } | 393 } |
| 390 | 394 |
| 391 TEST(SocketsManifestPermissionTest, IPC) { | 395 TEST(SocketsManifestPermissionTest, IPC) { |
| 392 scoped_ptr<SocketsManifestPermission> permission( | 396 std::unique_ptr<SocketsManifestPermission> permission( |
| 393 PermissionFromJSON(kUdpBindPermission)); | 397 PermissionFromJSON(kUdpBindPermission)); |
| 394 | 398 |
| 395 scoped_ptr<SocketsManifestPermission> ipc_perm( | 399 std::unique_ptr<SocketsManifestPermission> ipc_perm( |
| 396 static_cast<SocketsManifestPermission*>(permission->Clone())); | 400 static_cast<SocketsManifestPermission*>(permission->Clone())); |
| 397 scoped_ptr<SocketsManifestPermission> ipc_perm2( | 401 std::unique_ptr<SocketsManifestPermission> ipc_perm2( |
| 398 new SocketsManifestPermission()); | 402 new SocketsManifestPermission()); |
| 399 | 403 |
| 400 IPC::Message m; | 404 IPC::Message m; |
| 401 ipc_perm->Write(&m); | 405 ipc_perm->Write(&m); |
| 402 base::PickleIterator iter(m); | 406 base::PickleIterator iter(m); |
| 403 EXPECT_TRUE(ipc_perm2->Read(&m, &iter)); | 407 EXPECT_TRUE(ipc_perm2->Read(&m, &iter)); |
| 404 EXPECT_TRUE(permission->Equal(ipc_perm2.get())); | 408 EXPECT_TRUE(permission->Equal(ipc_perm2.get())); |
| 405 } | 409 } |
| 406 | 410 |
| 407 } // namespace extensions | 411 } // namespace extensions |
| OLD | NEW |