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 "chrome/browser/permissions/permission_context_base.h" | 5 #include "chrome/browser/permissions/permission_context_base.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 void DismissMultipleTimesAndExpectBlock( | 319 void DismissMultipleTimesAndExpectBlock( |
320 const GURL& url, | 320 const GURL& url, |
321 content::PermissionType permission_type, | 321 content::PermissionType permission_type, |
322 ContentSettingsType content_settings_type, | 322 ContentSettingsType content_settings_type, |
323 uint32_t iterations) { | 323 uint32_t iterations) { |
324 base::HistogramTester histograms; | 324 base::HistogramTester histograms; |
325 | 325 |
326 // Dismiss |iterations| times. The final dismiss should change the decision | 326 // Dismiss |iterations| times. The final dismiss should change the decision |
327 // from dismiss to block, and hence change the persisted content setting. | 327 // from dismiss to block, and hence change the persisted content setting. |
328 for (uint32_t i = 0; i < iterations; ++i) { | 328 for (uint32_t i = 0; i < iterations; ++i) { |
| 329 ContentSetting expected = |
| 330 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; |
329 TestPermissionContext permission_context( | 331 TestPermissionContext permission_context( |
330 profile(), permission_type, content_settings_type); | 332 profile(), permission_type, content_settings_type); |
331 ContentSetting expected = | |
332 (i < (iterations - 1)) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; | |
333 | |
334 const PermissionRequestID id( | 333 const PermissionRequestID id( |
335 web_contents()->GetRenderProcessHost()->GetID(), | 334 web_contents()->GetRenderProcessHost()->GetID(), |
336 web_contents()->GetMainFrame()->GetRoutingID(), i); | 335 web_contents()->GetMainFrame()->GetRoutingID(), i); |
337 | 336 |
338 permission_context.SetRespondPermissionCallback( | 337 permission_context.SetRespondPermissionCallback( |
339 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 338 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
340 base::Unretained(this), &permission_context, id, url, | 339 base::Unretained(this), &permission_context, id, url, |
341 false, CONTENT_SETTING_ASK)); | 340 false, CONTENT_SETTING_ASK)); |
342 | 341 |
343 permission_context.RequestPermission( | 342 permission_context.RequestPermission( |
344 web_contents(), id, url, true /* user_gesture */, | 343 web_contents(), id, url, true /* user_gesture */, |
345 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 344 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
346 base::Unretained(&permission_context))); | 345 base::Unretained(&permission_context))); |
347 histograms.ExpectTotalCount( | 346 histograms.ExpectTotalCount( |
348 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 347 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
349 PermissionUtil::GetPermissionString(permission_type), | 348 PermissionUtil::GetPermissionString(permission_type), |
350 i + 1); | 349 i + 1); |
351 histograms.ExpectBucketCount( | 350 histograms.ExpectBucketCount( |
352 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 351 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
353 PermissionUtil::GetPermissionString(permission_type), | 352 PermissionUtil::GetPermissionString(permission_type), |
354 i, 1); | 353 i, 1); |
355 | |
356 ASSERT_EQ(1u, permission_context.decisions().size()); | 354 ASSERT_EQ(1u, permission_context.decisions().size()); |
357 EXPECT_EQ(expected, permission_context.decisions()[0]); | 355 EXPECT_EQ(expected, permission_context.decisions()[0]); |
358 EXPECT_TRUE(permission_context.tab_context_updated()); | 356 EXPECT_TRUE(permission_context.tab_context_updated()); |
359 EXPECT_EQ(expected, | 357 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); |
360 permission_context.GetContentSettingFromMap(url, url)); | |
361 } | 358 } |
362 | 359 |
363 // Ensure that we finish in the block state. | 360 TestPermissionContext permission_context(profile(), permission_type, |
364 TestPermissionContext permission_context( | 361 content_settings_type); |
365 profile(), permission_type, content_settings_type); | 362 |
366 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 363 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
367 permission_context.GetContentSettingFromMap(url, url)); | 364 permission_context.GetPermissionStatus(url, url)); |
368 } | 365 } |
369 | 366 |
370 void TestBlockOnSeveralDismissals_TestContent() { | 367 void TestBlockOnSeveralDismissals_TestContent() { |
371 GURL url("https://www.google.com"); | 368 GURL url("https://www.google.com"); |
372 NavigateAndCommit(url); | 369 NavigateAndCommit(url); |
373 base::HistogramTester histograms; | 370 base::HistogramTester histograms; |
374 | 371 |
375 // First, ensure that > 3 dismissals behaves correctly. | 372 // First, ensure that > 3 dismissals behaves correctly. |
376 for (uint32_t i = 0; i < 4; ++i) { | 373 for (uint32_t i = 0; i < 4; ++i) { |
377 TestPermissionContext permission_context( | 374 TestPermissionContext permission_context( |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 base::Unretained(this), &permission_context, id, url, | 469 base::Unretained(this), &permission_context, id, url, |
473 false, CONTENT_SETTING_ASK)); | 470 false, CONTENT_SETTING_ASK)); |
474 permission_context.RequestPermission( | 471 permission_context.RequestPermission( |
475 web_contents(), id, url, true /* user_gesture */, | 472 web_contents(), id, url, true /* user_gesture */, |
476 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 473 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
477 base::Unretained(&permission_context))); | 474 base::Unretained(&permission_context))); |
478 | 475 |
479 EXPECT_EQ(1u, permission_context.decisions().size()); | 476 EXPECT_EQ(1u, permission_context.decisions().size()); |
480 ASSERT_EQ(expected, permission_context.decisions()[0]); | 477 ASSERT_EQ(expected, permission_context.decisions()[0]); |
481 EXPECT_TRUE(permission_context.tab_context_updated()); | 478 EXPECT_TRUE(permission_context.tab_context_updated()); |
482 EXPECT_EQ(expected, | 479 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); |
483 permission_context.GetContentSettingFromMap(url, url)); | |
484 | 480 |
485 histograms.ExpectTotalCount( | 481 histograms.ExpectTotalCount( |
486 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); | 482 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); |
487 histograms.ExpectBucketCount( | 483 histograms.ExpectBucketCount( |
488 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); | 484 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); |
489 } | 485 } |
490 | 486 |
491 // Ensure that we finish in the block state. | 487 // Ensure that we finish in the block state. |
492 TestPermissionContext permission_context( | 488 TestPermissionContext permission_context( |
493 profile(), content::PermissionType::MIDI_SYSEX, | 489 profile(), content::PermissionType::MIDI_SYSEX, |
494 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 490 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 491 |
495 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 492 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
496 permission_context.GetContentSettingFromMap(url, url)); | 493 permission_context.GetPermissionStatus(url, url)); |
497 variations::testing::ClearAllVariationParams(); | 494 variations::testing::ClearAllVariationParams(); |
498 } | 495 } |
499 | 496 |
500 void TestRequestPermissionInvalidUrl( | 497 void TestRequestPermissionInvalidUrl( |
501 content::PermissionType permission_type, | 498 content::PermissionType permission_type, |
502 ContentSettingsType content_settings_type) { | 499 ContentSettingsType content_settings_type) { |
503 TestPermissionContext permission_context(profile(), permission_type, | 500 TestPermissionContext permission_context(profile(), permission_type, |
504 content_settings_type); | 501 content_settings_type); |
505 GURL url; | 502 GURL url; |
506 ASSERT_FALSE(url.is_valid()); | 503 ASSERT_FALSE(url.is_valid()); |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 new MockSafeBrowsingDatabaseManager(false /* perform_callback */); | 850 new MockSafeBrowsingDatabaseManager(false /* perform_callback */); |
854 const GURL url("https://www.example.com"); | 851 const GURL url("https://www.example.com"); |
855 std::set<std::string> blacklisted_permissions{ | 852 std::set<std::string> blacklisted_permissions{ |
856 PermissionUtil::GetPermissionString( | 853 PermissionUtil::GetPermissionString( |
857 content::PermissionType::GEOLOCATION)}; | 854 content::PermissionType::GEOLOCATION)}; |
858 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 855 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
859 TestPermissionsBlacklisting(content::PermissionType::GEOLOCATION, | 856 TestPermissionsBlacklisting(content::PermissionType::GEOLOCATION, |
860 CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager, | 857 CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager, |
861 url, 0 /* timeout in ms */, CONTENT_SETTING_ASK); | 858 url, 0 /* timeout in ms */, CONTENT_SETTING_ASK); |
862 } | 859 } |
OLD | NEW |