Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(429)

Side by Side Diff: chrome/browser/permissions/permission_context_base_unittest.cc

Issue 2622983003: Implement embargo in PermissionDecisionAutoBlocker (Closed)
Patch Set: Create separate keys for different embargo types. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 TestPermissionContext permission_context( 329 TestPermissionContext permission_context(
330 profile(), permission_type, content_settings_type); 330 profile(), permission_type, content_settings_type);
331 ContentSetting expected =
332 (i < (iterations - 1)) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK;
333
334 const PermissionRequestID id( 331 const PermissionRequestID id(
335 web_contents()->GetRenderProcessHost()->GetID(), 332 web_contents()->GetRenderProcessHost()->GetID(),
336 web_contents()->GetMainFrame()->GetRoutingID(), i); 333 web_contents()->GetMainFrame()->GetRoutingID(), i);
337 334
338 permission_context.SetRespondPermissionCallback( 335 permission_context.SetRespondPermissionCallback(
339 base::Bind(&PermissionContextBaseTests::RespondToPermission, 336 base::Bind(&PermissionContextBaseTests::RespondToPermission,
340 base::Unretained(this), &permission_context, id, url, 337 base::Unretained(this), &permission_context, id, url,
341 false, CONTENT_SETTING_ASK)); 338 false, CONTENT_SETTING_ASK));
342 339
343 permission_context.RequestPermission( 340 permission_context.RequestPermission(
344 web_contents(), id, url, true /* user_gesture */, 341 web_contents(), id, url, true /* user_gesture */,
345 base::Bind(&TestPermissionContext::TrackPermissionDecision, 342 base::Bind(&TestPermissionContext::TrackPermissionDecision,
346 base::Unretained(&permission_context))); 343 base::Unretained(&permission_context)));
347 histograms.ExpectTotalCount( 344 histograms.ExpectTotalCount(
348 "Permissions.Prompt.Dismissed.PriorDismissCount." + 345 "Permissions.Prompt.Dismissed.PriorDismissCount." +
349 PermissionUtil::GetPermissionString(permission_type), 346 PermissionUtil::GetPermissionString(permission_type),
350 i + 1); 347 i + 1);
351 histograms.ExpectBucketCount( 348 histograms.ExpectBucketCount(
352 "Permissions.Prompt.Dismissed.PriorDismissCount." + 349 "Permissions.Prompt.Dismissed.PriorDismissCount." +
353 PermissionUtil::GetPermissionString(permission_type), 350 PermissionUtil::GetPermissionString(permission_type),
354 i, 1); 351 i, 1);
355
356 ASSERT_EQ(1u, permission_context.decisions().size()); 352 ASSERT_EQ(1u, permission_context.decisions().size());
357 EXPECT_EQ(expected, permission_context.decisions()[0]); 353 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
358 EXPECT_TRUE(permission_context.tab_context_updated()); 354 EXPECT_TRUE(permission_context.tab_context_updated());
359 EXPECT_EQ(expected, 355 EXPECT_EQ(CONTENT_SETTING_ASK,
360 permission_context.GetContentSettingFromMap(url, url)); 356 permission_context.GetPermissionStatus(url, url));
361 } 357 }
362 358
363 // Ensure that we finish in the block state. 359 TestPermissionContext permission_context(profile(), permission_type,
364 TestPermissionContext permission_context( 360 content_settings_type);
365 profile(), permission_type, content_settings_type); 361 const PermissionRequestID id(
362 web_contents()->GetRenderProcessHost()->GetID(),
363 web_contents()->GetMainFrame()->GetRoutingID(), -1);
364
365 permission_context.SetRespondPermissionCallback(
366 base::Bind(&PermissionContextBaseTests::RespondToPermission,
367 base::Unretained(this), &permission_context, id, url, false,
368 CONTENT_SETTING_ASK));
raymes 2017/01/18 03:15:20 It looks like it takes one additional request to b
meredithl 2017/01/18 08:28:15 The embargo status wasn't set until the next permi
369
370 permission_context.RequestPermission(
371 web_contents(), id, url, true /* user_gesture */,
372 base::Bind(&TestPermissionContext::TrackPermissionDecision,
373 base::Unretained(&permission_context)));
374
366 EXPECT_EQ(CONTENT_SETTING_BLOCK, 375 EXPECT_EQ(CONTENT_SETTING_BLOCK,
367 permission_context.GetContentSettingFromMap(url, url)); 376 permission_context.GetPermissionStatus(url, url));
368 } 377 }
369 378
370 void TestBlockOnSeveralDismissals_TestContent() { 379 void TestBlockOnSeveralDismissals_TestContent() {
371 GURL url("https://www.google.com"); 380 GURL url("https://www.google.com");
372 NavigateAndCommit(url); 381 NavigateAndCommit(url);
373 base::HistogramTester histograms; 382 base::HistogramTester histograms;
374 383
375 // First, ensure that > 3 dismissals behaves correctly. 384 // First, ensure that > 3 dismissals behaves correctly.
376 for (uint32_t i = 0; i < 4; ++i) { 385 for (uint32_t i = 0; i < 4; ++i) {
377 TestPermissionContext permission_context( 386 TestPermissionContext permission_context(
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 std::map<std::string, std::string> actual_params; 463 std::map<std::string, std::string> actual_params;
455 EXPECT_TRUE(variations::GetVariationParamsByFeature( 464 EXPECT_TRUE(variations::GetVariationParamsByFeature(
456 features::kBlockPromptsIfDismissedOften, &actual_params)); 465 features::kBlockPromptsIfDismissedOften, &actual_params));
457 EXPECT_EQ(params, actual_params); 466 EXPECT_EQ(params, actual_params);
458 } 467 }
459 468
460 for (uint32_t i = 0; i < 5; ++i) { 469 for (uint32_t i = 0; i < 5; ++i) {
461 TestPermissionContext permission_context( 470 TestPermissionContext permission_context(
462 profile(), content::PermissionType::MIDI_SYSEX, 471 profile(), content::PermissionType::MIDI_SYSEX,
463 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 472 CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
464
465 ContentSetting expected =
466 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK;
467 const PermissionRequestID id( 473 const PermissionRequestID id(
468 web_contents()->GetRenderProcessHost()->GetID(), 474 web_contents()->GetRenderProcessHost()->GetID(),
469 web_contents()->GetMainFrame()->GetRoutingID(), i); 475 web_contents()->GetMainFrame()->GetRoutingID(), i);
470 permission_context.SetRespondPermissionCallback( 476 permission_context.SetRespondPermissionCallback(
471 base::Bind(&PermissionContextBaseTests::RespondToPermission, 477 base::Bind(&PermissionContextBaseTests::RespondToPermission,
472 base::Unretained(this), &permission_context, id, url, 478 base::Unretained(this), &permission_context, id, url,
473 false, CONTENT_SETTING_ASK)); 479 false, CONTENT_SETTING_ASK));
474 permission_context.RequestPermission( 480 permission_context.RequestPermission(
475 web_contents(), id, url, true /* user_gesture */, 481 web_contents(), id, url, true /* user_gesture */,
476 base::Bind(&TestPermissionContext::TrackPermissionDecision, 482 base::Bind(&TestPermissionContext::TrackPermissionDecision,
477 base::Unretained(&permission_context))); 483 base::Unretained(&permission_context)));
478 484
479 EXPECT_EQ(1u, permission_context.decisions().size()); 485 EXPECT_EQ(1u, permission_context.decisions().size());
480 ASSERT_EQ(expected, permission_context.decisions()[0]); 486 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]);
481 EXPECT_TRUE(permission_context.tab_context_updated()); 487 EXPECT_TRUE(permission_context.tab_context_updated());
482 EXPECT_EQ(expected, 488 EXPECT_EQ(CONTENT_SETTING_ASK,
483 permission_context.GetContentSettingFromMap(url, url)); 489 permission_context.GetContentSettingFromMap(url, url));
484 490
485 histograms.ExpectTotalCount( 491 histograms.ExpectTotalCount(
486 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); 492 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1);
487 histograms.ExpectBucketCount( 493 histograms.ExpectBucketCount(
488 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); 494 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1);
489 } 495 }
490 496
491 // Ensure that we finish in the block state. 497 // Ensure that we finish in the block state.
492 TestPermissionContext permission_context( 498 TestPermissionContext permission_context(
493 profile(), content::PermissionType::MIDI_SYSEX, 499 profile(), content::PermissionType::MIDI_SYSEX,
494 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); 500 CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
501
502 const PermissionRequestID id(
503 web_contents()->GetRenderProcessHost()->GetID(),
504 web_contents()->GetMainFrame()->GetRoutingID(), -1);
505
506 permission_context.SetRespondPermissionCallback(
507 base::Bind(&PermissionContextBaseTests::RespondToPermission,
508 base::Unretained(this), &permission_context, id, url, false,
509 CONTENT_SETTING_ASK));
510
511 permission_context.RequestPermission(
512 web_contents(), id, url, true /* user_gesture */,
513 base::Bind(&TestPermissionContext::TrackPermissionDecision,
514 base::Unretained(&permission_context)));
raymes 2017/01/18 03:15:20 Same here
meredithl 2017/01/18 08:28:15 Done.
515
495 EXPECT_EQ(CONTENT_SETTING_BLOCK, 516 EXPECT_EQ(CONTENT_SETTING_BLOCK,
496 permission_context.GetContentSettingFromMap(url, url)); 517 permission_context.GetPermissionStatus(url, url));
497 variations::testing::ClearAllVariationParams(); 518 variations::testing::ClearAllVariationParams();
498 } 519 }
499 520
500 void TestRequestPermissionInvalidUrl( 521 void TestRequestPermissionInvalidUrl(
501 content::PermissionType permission_type, 522 content::PermissionType permission_type,
502 ContentSettingsType content_settings_type) { 523 ContentSettingsType content_settings_type) {
503 TestPermissionContext permission_context(profile(), permission_type, 524 TestPermissionContext permission_context(profile(), permission_type,
504 content_settings_type); 525 content_settings_type);
505 GURL url; 526 GURL url;
506 ASSERT_FALSE(url.is_valid()); 527 ASSERT_FALSE(url.is_valid());
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 new MockSafeBrowsingDatabaseManager(false /* perform_callback */); 874 new MockSafeBrowsingDatabaseManager(false /* perform_callback */);
854 const GURL url("https://www.example.com"); 875 const GURL url("https://www.example.com");
855 std::set<std::string> blacklisted_permissions{ 876 std::set<std::string> blacklisted_permissions{
856 PermissionUtil::GetPermissionString( 877 PermissionUtil::GetPermissionString(
857 content::PermissionType::GEOLOCATION)}; 878 content::PermissionType::GEOLOCATION)};
858 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); 879 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions);
859 TestPermissionsBlacklisting(content::PermissionType::GEOLOCATION, 880 TestPermissionsBlacklisting(content::PermissionType::GEOLOCATION,
860 CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager, 881 CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager,
861 url, 0 /* timeout in ms */, CONTENT_SETTING_ASK); 882 url, 0 /* timeout in ms */, CONTENT_SETTING_ASK);
862 } 883 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698