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 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 base::Unretained(this), &permission_context, id, url, | 281 base::Unretained(this), &permission_context, id, url, |
282 persist, decision)); | 282 persist, decision)); |
283 permission_context.RequestPermission( | 283 permission_context.RequestPermission( |
284 web_contents(), | 284 web_contents(), |
285 id, url, true /* user_gesture */, | 285 id, url, true /* user_gesture */, |
286 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 286 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
287 base::Unretained(&permission_context))); | 287 base::Unretained(&permission_context))); |
288 ASSERT_EQ(1u, permission_context.decisions().size()); | 288 ASSERT_EQ(1u, permission_context.decisions().size()); |
289 EXPECT_EQ(decision, permission_context.decisions()[0]); | 289 EXPECT_EQ(decision, permission_context.decisions()[0]); |
290 EXPECT_TRUE(permission_context.tab_context_updated()); | 290 EXPECT_TRUE(permission_context.tab_context_updated()); |
291 | 291 histograms.ExpectBucketCount("Permissions.AutoBlocker.EmbargoReason", |
| 292 PermissionEmbargoReason::NOT_EMBARGOED, 1); |
292 std::string decision_string; | 293 std::string decision_string; |
293 if (decision == CONTENT_SETTING_ALLOW) | 294 if (decision == CONTENT_SETTING_ALLOW) |
294 decision_string = "Accepted"; | 295 decision_string = "Accepted"; |
295 else if (decision == CONTENT_SETTING_BLOCK) | 296 else if (decision == CONTENT_SETTING_BLOCK) |
296 decision_string = "Denied"; | 297 decision_string = "Denied"; |
297 else if (decision == CONTENT_SETTING_ASK) | 298 else if (decision == CONTENT_SETTING_ASK) |
298 decision_string = "Dismissed"; | 299 decision_string = "Dismissed"; |
299 | 300 |
300 if (decision_string.size()) { | 301 if (decision_string.size()) { |
301 histograms.ExpectUniqueSample( | 302 histograms.ExpectUniqueSample( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 346 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
346 base::Unretained(&permission_context))); | 347 base::Unretained(&permission_context))); |
347 histograms.ExpectTotalCount( | 348 histograms.ExpectTotalCount( |
348 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 349 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
349 PermissionUtil::GetPermissionString(permission_type), | 350 PermissionUtil::GetPermissionString(permission_type), |
350 i + 1); | 351 i + 1); |
351 histograms.ExpectBucketCount( | 352 histograms.ExpectBucketCount( |
352 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 353 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
353 PermissionUtil::GetPermissionString(permission_type), | 354 PermissionUtil::GetPermissionString(permission_type), |
354 i, 1); | 355 i, 1); |
| 356 histograms.ExpectBucketCount("Permissions.AutoBlocker.EmbargoReason", |
| 357 PermissionEmbargoReason::NOT_EMBARGOED, |
| 358 i + 1); |
355 ASSERT_EQ(1u, permission_context.decisions().size()); | 359 ASSERT_EQ(1u, permission_context.decisions().size()); |
356 EXPECT_EQ(expected, permission_context.decisions()[0]); | 360 EXPECT_EQ(expected, permission_context.decisions()[0]); |
357 EXPECT_TRUE(permission_context.tab_context_updated()); | 361 EXPECT_TRUE(permission_context.tab_context_updated()); |
358 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 362 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); |
359 } | 363 } |
360 | 364 |
361 TestPermissionContext permission_context(profile(), permission_type, | 365 TestPermissionContext permission_context(profile(), permission_type, |
362 content_settings_type); | 366 content_settings_type); |
363 const PermissionRequestID id( | 367 const PermissionRequestID id( |
364 web_contents()->GetRenderProcessHost()->GetID(), | 368 web_contents()->GetRenderProcessHost()->GetID(), |
365 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 369 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
366 | 370 |
367 permission_context.SetRespondPermissionCallback( | 371 permission_context.SetRespondPermissionCallback( |
368 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 372 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
369 base::Unretained(this), &permission_context, id, url, false, | 373 base::Unretained(this), &permission_context, id, url, false, |
370 CONTENT_SETTING_ASK)); | 374 CONTENT_SETTING_ASK)); |
371 | 375 |
372 permission_context.RequestPermission( | 376 permission_context.RequestPermission( |
373 web_contents(), id, url, true /* user_gesture */, | 377 web_contents(), id, url, true /* user_gesture */, |
374 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 378 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
375 base::Unretained(&permission_context))); | 379 base::Unretained(&permission_context))); |
376 | 380 |
377 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 381 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
378 permission_context.GetPermissionStatus(url, url)); | 382 permission_context.GetPermissionStatus(url, url)); |
| 383 histograms.ExpectBucketCount("Permissions.AutoBlocker.EmbargoReason", |
| 384 PermissionEmbargoReason::REPEATED_DISMISSALS, |
| 385 1); |
379 } | 386 } |
380 | 387 |
381 void TestBlockOnSeveralDismissals_TestContent() { | 388 void TestBlockOnSeveralDismissals_TestContent() { |
382 GURL url("https://www.google.com"); | 389 GURL url("https://www.google.com"); |
383 NavigateAndCommit(url); | 390 NavigateAndCommit(url); |
384 base::HistogramTester histograms; | 391 base::HistogramTester histograms; |
385 | 392 |
386 // First, ensure that > 3 dismissals behaves correctly. | 393 // First, ensure that > 3 dismissals behaves correctly. |
387 for (uint32_t i = 0; i < 4; ++i) { | 394 for (uint32_t i = 0; i < 4; ++i) { |
388 TestPermissionContext permission_context( | 395 TestPermissionContext permission_context( |
(...skipping 10 matching lines...) Expand all Loading... |
399 false, CONTENT_SETTING_ASK)); | 406 false, CONTENT_SETTING_ASK)); |
400 permission_context.RequestPermission( | 407 permission_context.RequestPermission( |
401 web_contents(), id, url, true /* user_gesture */, | 408 web_contents(), id, url, true /* user_gesture */, |
402 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 409 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
403 base::Unretained(&permission_context))); | 410 base::Unretained(&permission_context))); |
404 histograms.ExpectTotalCount( | 411 histograms.ExpectTotalCount( |
405 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", | 412 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", |
406 i + 1); | 413 i + 1); |
407 histograms.ExpectBucketCount( | 414 histograms.ExpectBucketCount( |
408 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1); | 415 "Permissions.Prompt.Dismissed.PriorDismissCount.Geolocation", i, 1); |
| 416 histograms.ExpectBucketCount("Permissions.AutoBlocker.EmbargoReason", |
| 417 PermissionEmbargoReason::NOT_EMBARGOED, |
| 418 i + 1); |
409 ASSERT_EQ(1u, permission_context.decisions().size()); | 419 ASSERT_EQ(1u, permission_context.decisions().size()); |
410 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); | 420 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
411 EXPECT_TRUE(permission_context.tab_context_updated()); | 421 EXPECT_TRUE(permission_context.tab_context_updated()); |
412 EXPECT_EQ(CONTENT_SETTING_ASK, | 422 EXPECT_EQ(CONTENT_SETTING_ASK, |
413 permission_context.GetContentSettingFromMap(url, url)); | 423 permission_context.GetContentSettingFromMap(url, url)); |
414 } | 424 } |
415 | 425 |
416 // Flush the dismissal counts. Enable the block on too many dismissals | 426 // Flush the dismissal counts. Enable the block on too many dismissals |
417 // feature, which is disabled by default. | 427 // feature, which is disabled by default. |
418 auto* map = HostContentSettingsMapFactory::GetForProfile(profile()); | 428 auto* map = HostContentSettingsMapFactory::GetForProfile(profile()); |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { | 861 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { |
852 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 862 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
853 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 863 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
854 const GURL url("https://www.example.com"); | 864 const GURL url("https://www.example.com"); |
855 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 865 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
856 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 866 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
857 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, | 867 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, |
858 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | 868 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
859 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); | 869 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); |
860 } | 870 } |
OLD | NEW |