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