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/strings/string16.h" | 5 #include "base/strings/string16.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 7 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
9 #include "chrome/test/base/testing_profile.h" | 9 #include "chrome/test/base/testing_profile.h" |
10 #include "content/public/test/test_browser_thread.h" | 10 #include "content/public/test/test_browser_thread.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 // Set a cookie, block access to images, block mediastream access and block a | 68 // Set a cookie, block access to images, block mediastream access and block a |
69 // popup. | 69 // popup. |
70 content_settings->OnCookieChanged(GURL("http://google.com"), | 70 content_settings->OnCookieChanged(GURL("http://google.com"), |
71 GURL("http://google.com"), | 71 GURL("http://google.com"), |
72 "A=B", | 72 "A=B", |
73 options, | 73 options, |
74 false); | 74 false); |
75 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES); | 75 content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES); |
76 content_settings->SetPopupsBlocked(true); | 76 content_settings->SetPopupsBlocked(true); |
77 MediaStreamDevicesController::MediaStreamTypeSettingsMap request_permissions; | 77 TabSpecificContentSettings::MicrophoneCameraState |
78 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | 78 blocked_microphone_camera_state = |
79 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | 79 TabSpecificContentSettings::MICROPHONE_ACCESSED | |
80 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | 80 TabSpecificContentSettings::MICROPHONE_BLOCKED | |
81 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | 81 TabSpecificContentSettings::CAMERA_ACCESSED | |
| 82 TabSpecificContentSettings::CAMERA_BLOCKED; |
82 content_settings->OnMediaStreamPermissionSet(GURL("http://google.com"), | 83 content_settings->OnMediaStreamPermissionSet(GURL("http://google.com"), |
83 request_permissions); | 84 blocked_microphone_camera_state, |
| 85 std::string(), |
| 86 std::string(), |
| 87 std::string(), |
| 88 std::string()); |
84 | 89 |
85 // Check that only the respective content types are affected. | 90 // Check that only the respective content types are affected. |
86 EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES)); | 91 EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES)); |
87 EXPECT_FALSE( | 92 EXPECT_FALSE( |
88 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT)); | 93 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_JAVASCRIPT)); |
89 EXPECT_FALSE( | 94 EXPECT_FALSE( |
90 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS)); | 95 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS)); |
91 EXPECT_FALSE( | 96 EXPECT_FALSE( |
92 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); | 97 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); |
93 EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS)); | 98 EXPECT_TRUE(content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_POPUPS)); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 GURL("http://google.com"), | 197 GURL("http://google.com"), |
193 "C=D", | 198 "C=D", |
194 options, | 199 options, |
195 true); | 200 true); |
196 ASSERT_TRUE( | 201 ASSERT_TRUE( |
197 content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES)); | 202 content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES)); |
198 ASSERT_TRUE( | 203 ASSERT_TRUE( |
199 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); | 204 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); |
200 } | 205 } |
201 | 206 |
202 TEST_F(TabSpecificContentSettingsTest, AllowedBlockedMediaContent) { | |
203 TabSpecificContentSettings* content_settings = | |
204 TabSpecificContentSettings::FromWebContents(web_contents()); | |
205 | |
206 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_CAMERA_NOT_ACCESSED, | |
207 content_settings->GetMicrophoneCameraState()); | |
208 | |
209 // Request and allow microphone access. | |
210 GURL security_origin("http://google.com"); | |
211 MediaStreamDevicesController::MediaStreamTypeSettingsMap | |
212 request_permissions; | |
213 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
214 MediaStreamDevicesController::MEDIA_ALLOWED; | |
215 content_settings->OnMediaStreamPermissionSet(security_origin, | |
216 request_permissions); | |
217 ASSERT_TRUE(content_settings->IsContentAllowed( | |
218 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
219 ASSERT_FALSE(content_settings->IsContentBlocked( | |
220 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
221 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED, | |
222 content_settings->GetMicrophoneCameraState()); | |
223 | |
224 // Request and allow camera access. | |
225 request_permissions.clear(); | |
226 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | |
227 MediaStreamDevicesController::MEDIA_ALLOWED; | |
228 content_settings->OnMediaStreamPermissionSet(security_origin, | |
229 request_permissions); | |
230 ASSERT_TRUE(content_settings->IsContentAllowed( | |
231 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
232 ASSERT_FALSE(content_settings->IsContentBlocked( | |
233 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
234 // cam request should not affect previous mic settings. | |
235 ASSERT_TRUE(content_settings->IsContentAllowed( | |
236 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
237 ASSERT_FALSE(content_settings->IsContentBlocked( | |
238 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
239 ASSERT_EQ(TabSpecificContentSettings::CAMERA_ACCESSED, | |
240 content_settings->GetMicrophoneCameraState()); | |
241 | |
242 // Request and block microphone access. | |
243 request_permissions.clear(); | |
244 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
245 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | |
246 content_settings->OnMediaStreamPermissionSet(security_origin, | |
247 request_permissions); | |
248 ASSERT_FALSE(content_settings->IsContentAllowed( | |
249 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
250 ASSERT_TRUE(content_settings->IsContentBlocked( | |
251 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
252 // mic request should not affect previous cam settings. | |
253 ASSERT_TRUE(content_settings->IsContentAllowed( | |
254 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
255 ASSERT_FALSE(content_settings->IsContentBlocked( | |
256 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
257 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED | | |
258 TabSpecificContentSettings::MICROPHONE_BLOCKED, | |
259 content_settings->GetMicrophoneCameraState()); | |
260 | |
261 // Request and block camera access. | |
262 request_permissions.clear(); | |
263 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | |
264 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | |
265 content_settings->OnMediaStreamPermissionSet(security_origin, | |
266 request_permissions); | |
267 ASSERT_FALSE(content_settings->IsContentAllowed( | |
268 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
269 ASSERT_TRUE(content_settings->IsContentBlocked( | |
270 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
271 // cam request should not affect previous mic settings. | |
272 ASSERT_FALSE(content_settings->IsContentAllowed( | |
273 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
274 ASSERT_TRUE(content_settings->IsContentBlocked( | |
275 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
276 ASSERT_EQ(TabSpecificContentSettings::CAMERA_ACCESSED | | |
277 TabSpecificContentSettings::CAMERA_BLOCKED, | |
278 content_settings->GetMicrophoneCameraState()); | |
279 | |
280 // Request and allow microphone and camera access. | |
281 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
282 MediaStreamDevicesController::MEDIA_ALLOWED; | |
283 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | |
284 MediaStreamDevicesController::MEDIA_ALLOWED; | |
285 content_settings->OnMediaStreamPermissionSet(security_origin, | |
286 request_permissions); | |
287 ASSERT_TRUE(content_settings->IsContentAllowed( | |
288 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
289 ASSERT_FALSE(content_settings->IsContentBlocked( | |
290 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
291 ASSERT_TRUE(content_settings->IsContentAllowed( | |
292 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
293 ASSERT_FALSE(content_settings->IsContentBlocked( | |
294 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
295 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED | | |
296 TabSpecificContentSettings::CAMERA_ACCESSED, | |
297 content_settings->GetMicrophoneCameraState()); | |
298 | |
299 // Request and block microphone and camera access. | |
300 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
301 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | |
302 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | |
303 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | |
304 content_settings->OnMediaStreamPermissionSet(security_origin, | |
305 request_permissions); | |
306 ASSERT_FALSE(content_settings->IsContentAllowed( | |
307 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
308 ASSERT_TRUE(content_settings->IsContentBlocked( | |
309 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
310 ASSERT_FALSE(content_settings->IsContentAllowed( | |
311 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
312 ASSERT_TRUE(content_settings->IsContentBlocked( | |
313 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
314 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED | | |
315 TabSpecificContentSettings::MICROPHONE_BLOCKED | | |
316 TabSpecificContentSettings::CAMERA_ACCESSED | | |
317 TabSpecificContentSettings::CAMERA_BLOCKED, | |
318 content_settings->GetMicrophoneCameraState()); | |
319 | |
320 // Request microphone and camera access. Allow microphone, block camera. | |
321 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
322 MediaStreamDevicesController::MEDIA_ALLOWED; | |
323 content_settings->OnMediaStreamPermissionSet(security_origin, | |
324 request_permissions); | |
325 ASSERT_TRUE(content_settings->IsContentAllowed( | |
326 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
327 ASSERT_FALSE(content_settings->IsContentBlocked( | |
328 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
329 ASSERT_FALSE(content_settings->IsContentAllowed( | |
330 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
331 ASSERT_TRUE(content_settings->IsContentBlocked( | |
332 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
333 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED | | |
334 TabSpecificContentSettings::CAMERA_ACCESSED | | |
335 TabSpecificContentSettings::CAMERA_BLOCKED, | |
336 content_settings->GetMicrophoneCameraState()); | |
337 | |
338 // Request microphone and camera access. Block microphone, allow camera. | |
339 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | |
340 MediaStreamDevicesController::MEDIA_BLOCKED_BY_USER; | |
341 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | |
342 MediaStreamDevicesController::MEDIA_ALLOWED; | |
343 content_settings->OnMediaStreamPermissionSet(security_origin, | |
344 request_permissions); | |
345 ASSERT_FALSE(content_settings->IsContentAllowed( | |
346 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
347 ASSERT_TRUE(content_settings->IsContentBlocked( | |
348 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | |
349 ASSERT_TRUE(content_settings->IsContentAllowed( | |
350 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
351 ASSERT_FALSE(content_settings->IsContentBlocked( | |
352 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | |
353 ASSERT_EQ(TabSpecificContentSettings::MICROPHONE_ACCESSED | | |
354 TabSpecificContentSettings::MICROPHONE_BLOCKED | | |
355 TabSpecificContentSettings::CAMERA_ACCESSED, | |
356 content_settings->GetMicrophoneCameraState()); | |
357 } | |
358 | |
359 TEST_F(TabSpecificContentSettingsTest, EmptyCookieList) { | 207 TEST_F(TabSpecificContentSettingsTest, EmptyCookieList) { |
360 TabSpecificContentSettings* content_settings = | 208 TabSpecificContentSettings* content_settings = |
361 TabSpecificContentSettings::FromWebContents(web_contents()); | 209 TabSpecificContentSettings::FromWebContents(web_contents()); |
362 | 210 |
363 ASSERT_FALSE( | 211 ASSERT_FALSE( |
364 content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES)); | 212 content_settings->IsContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES)); |
365 ASSERT_FALSE( | 213 ASSERT_FALSE( |
366 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); | 214 content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES)); |
367 content_settings->OnCookiesRead(GURL("http://google.com"), | 215 content_settings->OnCookiesRead(GURL("http://google.com"), |
368 GURL("http://google.com"), | 216 GURL("http://google.com"), |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 base::UTF8ToUTF16("text"), | 251 base::UTF8ToUTF16("text"), |
404 blocked_by_policy); | 252 blocked_by_policy); |
405 content_settings->OnLocalStorageAccessed(GURL("http://google.com"), | 253 content_settings->OnLocalStorageAccessed(GURL("http://google.com"), |
406 true, | 254 true, |
407 blocked_by_policy); | 255 blocked_by_policy); |
408 content_settings->OnWebDatabaseAccessed(GURL("http://google.com"), | 256 content_settings->OnWebDatabaseAccessed(GURL("http://google.com"), |
409 base::UTF8ToUTF16("name"), | 257 base::UTF8ToUTF16("name"), |
410 base::UTF8ToUTF16("display_name"), | 258 base::UTF8ToUTF16("display_name"), |
411 blocked_by_policy); | 259 blocked_by_policy); |
412 } | 260 } |
OLD | NEW |