| 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 |