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