Chromium Code Reviews| 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 19 matching lines...) Expand all Loading... | |
| 30 #include "chrome/common/chrome_switches.h" | 30 #include "chrome/common/chrome_switches.h" |
| 31 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 31 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 32 #include "chrome/test/base/testing_profile.h" | 32 #include "chrome/test/base/testing_profile.h" |
| 33 #include "components/content_settings/core/browser/host_content_settings_map.h" | 33 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 34 #include "components/content_settings/core/common/content_settings.h" | 34 #include "components/content_settings/core/common/content_settings.h" |
| 35 #include "components/content_settings/core/common/content_settings_types.h" | 35 #include "components/content_settings/core/common/content_settings_types.h" |
| 36 #include "components/safe_browsing_db/database_manager.h" | 36 #include "components/safe_browsing_db/database_manager.h" |
| 37 #include "components/safe_browsing_db/test_database_manager.h" | 37 #include "components/safe_browsing_db/test_database_manager.h" |
| 38 #include "components/variations/variations_associated_data.h" | 38 #include "components/variations/variations_associated_data.h" |
| 39 #include "content/public/browser/browser_thread.h" | 39 #include "content/public/browser/browser_thread.h" |
| 40 #include "content/public/browser/permission_type.h" | |
| 41 #include "content/public/browser/render_frame_host.h" | 40 #include "content/public/browser/render_frame_host.h" |
| 42 #include "content/public/browser/web_contents.h" | 41 #include "content/public/browser/web_contents.h" |
| 43 #include "content/public/test/mock_render_process_host.h" | 42 #include "content/public/test/mock_render_process_host.h" |
| 44 #include "testing/gtest/include/gtest/gtest.h" | 43 #include "testing/gtest/include/gtest/gtest.h" |
| 45 | 44 |
| 46 #if !defined(OS_ANDROID) | 45 #if !defined(OS_ANDROID) |
| 47 #include "chrome/browser/permissions/permission_request_manager.h" | 46 #include "chrome/browser/permissions/permission_request_manager.h" |
| 48 #endif | 47 #endif |
| 49 | 48 |
| 50 const char* const kPermissionsKillSwitchFieldStudy = | 49 const char* const kPermissionsKillSwitchFieldStudy = |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 96 std::map<GURL, std::set<std::string>> permissions_blacklist_; | 95 std::map<GURL, std::set<std::string>> permissions_blacklist_; |
| 97 | 96 |
| 98 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager); | 97 DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingDatabaseManager); |
| 99 }; | 98 }; |
| 100 | 99 |
| 101 } // namespace | 100 } // namespace |
| 102 | 101 |
| 103 class TestPermissionContext : public PermissionContextBase { | 102 class TestPermissionContext : public PermissionContextBase { |
| 104 public: | 103 public: |
| 105 TestPermissionContext(Profile* profile, | 104 TestPermissionContext(Profile* profile, |
| 106 const content::PermissionType permission_type, | |
| 107 const ContentSettingsType content_settings_type) | 105 const ContentSettingsType content_settings_type) |
| 108 : PermissionContextBase(profile, permission_type, content_settings_type), | 106 : PermissionContextBase(profile, content_settings_type), |
| 109 tab_context_updated_(false) {} | 107 tab_context_updated_(false) {} |
| 110 | 108 |
| 111 ~TestPermissionContext() override {} | 109 ~TestPermissionContext() override {} |
| 112 | 110 |
| 113 #if defined(OS_ANDROID) | 111 #if defined(OS_ANDROID) |
| 114 PermissionQueueController* GetInfoBarController() { | 112 PermissionQueueController* GetInfoBarController() { |
| 115 return GetQueueController(); | 113 return GetQueueController(); |
| 116 } | 114 } |
| 117 #endif | 115 #endif |
| 118 | 116 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 196 // Callback for responding to a permission once the request has been completed | 194 // Callback for responding to a permission once the request has been completed |
| 197 // (valid URL, kill switch disabled, not blacklisted) | 195 // (valid URL, kill switch disabled, not blacklisted) |
| 198 base::Closure respond_permission_; | 196 base::Closure respond_permission_; |
| 199 DISALLOW_COPY_AND_ASSIGN(TestPermissionContext); | 197 DISALLOW_COPY_AND_ASSIGN(TestPermissionContext); |
| 200 }; | 198 }; |
| 201 | 199 |
| 202 class TestKillSwitchPermissionContext : public TestPermissionContext { | 200 class TestKillSwitchPermissionContext : public TestPermissionContext { |
| 203 public: | 201 public: |
| 204 TestKillSwitchPermissionContext( | 202 TestKillSwitchPermissionContext( |
| 205 Profile* profile, | 203 Profile* profile, |
| 206 const content::PermissionType permission_type, | |
| 207 const ContentSettingsType content_settings_type) | 204 const ContentSettingsType content_settings_type) |
| 208 : TestPermissionContext(profile, permission_type, content_settings_type), | 205 : TestPermissionContext(profile, content_settings_type), |
| 209 field_trial_list_(base::MakeUnique<base::FieldTrialList>( | 206 field_trial_list_(base::MakeUnique<base::FieldTrialList>( |
| 210 base::MakeUnique<base::MockEntropyProvider>())) {} | 207 base::MakeUnique<base::MockEntropyProvider>())) {} |
| 211 | 208 |
| 212 void ResetFieldTrialList() { | 209 void ResetFieldTrialList() { |
| 213 // Destroy the existing FieldTrialList before creating a new one to avoid | 210 // Destroy the existing FieldTrialList before creating a new one to avoid |
| 214 // a DCHECK. | 211 // a DCHECK. |
| 215 field_trial_list_.reset(); | 212 field_trial_list_.reset(); |
| 216 field_trial_list_ = base::MakeUnique<base::FieldTrialList>( | 213 field_trial_list_ = base::MakeUnique<base::FieldTrialList>( |
| 217 base::MakeUnique<base::MockEntropyProvider>()); | 214 base::MakeUnique<base::MockEntropyProvider>()); |
| 218 variations::testing::ClearAllVariationParams(); | 215 variations::testing::ClearAllVariationParams(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 259 break; | 256 break; |
| 260 case CONTENT_SETTING_ASK: | 257 case CONTENT_SETTING_ASK: |
| 261 manager->Closing(); | 258 manager->Closing(); |
| 262 break; | 259 break; |
| 263 default: | 260 default: |
| 264 NOTREACHED(); | 261 NOTREACHED(); |
| 265 } | 262 } |
| 266 #endif | 263 #endif |
| 267 } | 264 } |
| 268 | 265 |
| 269 void TestAskAndDecide_TestContent(content::PermissionType permission, | 266 void TestAskAndDecide_TestContent(ContentSettingsType content_settings_type, |
| 270 ContentSettingsType content_settings_type, | |
| 271 ContentSetting decision, | 267 ContentSetting decision, |
| 272 bool persist) { | 268 bool persist) { |
| 273 TestPermissionContext permission_context(profile(), permission, | 269 TestPermissionContext permission_context(profile(), content_settings_type); |
| 274 content_settings_type); | |
| 275 GURL url("https://www.google.com"); | 270 GURL url("https://www.google.com"); |
| 276 NavigateAndCommit(url); | 271 NavigateAndCommit(url); |
| 277 base::HistogramTester histograms; | 272 base::HistogramTester histograms; |
| 278 | 273 |
| 279 const PermissionRequestID id( | 274 const PermissionRequestID id( |
| 280 web_contents()->GetRenderProcessHost()->GetID(), | 275 web_contents()->GetRenderProcessHost()->GetID(), |
| 281 web_contents()->GetMainFrame()->GetRoutingID(), | 276 web_contents()->GetMainFrame()->GetRoutingID(), |
| 282 -1); | 277 -1); |
| 283 permission_context.SetRespondPermissionCallback( | 278 permission_context.SetRespondPermissionCallback( |
| 284 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 279 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 297 if (decision == CONTENT_SETTING_ALLOW) | 292 if (decision == CONTENT_SETTING_ALLOW) |
| 298 decision_string = "Accepted"; | 293 decision_string = "Accepted"; |
| 299 else if (decision == CONTENT_SETTING_BLOCK) | 294 else if (decision == CONTENT_SETTING_BLOCK) |
| 300 decision_string = "Denied"; | 295 decision_string = "Denied"; |
| 301 else if (decision == CONTENT_SETTING_ASK) | 296 else if (decision == CONTENT_SETTING_ASK) |
| 302 decision_string = "Dismissed"; | 297 decision_string = "Dismissed"; |
| 303 | 298 |
| 304 if (decision_string.size()) { | 299 if (decision_string.size()) { |
| 305 histograms.ExpectUniqueSample( | 300 histograms.ExpectUniqueSample( |
| 306 "Permissions.Prompt." + decision_string + ".PriorDismissCount." + | 301 "Permissions.Prompt." + decision_string + ".PriorDismissCount." + |
| 307 PermissionUtil::GetPermissionString(permission), | 302 PermissionUtil::GetPermissionString(content_settings_type), |
| 308 0, 1); | 303 0, 1); |
| 309 histograms.ExpectUniqueSample( | 304 histograms.ExpectUniqueSample( |
| 310 "Permissions.Prompt." + decision_string + ".PriorIgnoreCount." + | 305 "Permissions.Prompt." + decision_string + ".PriorIgnoreCount." + |
| 311 PermissionUtil::GetPermissionString(permission), | 306 PermissionUtil::GetPermissionString(content_settings_type), |
| 312 0, 1); | 307 0, 1); |
| 313 } | 308 } |
| 314 | 309 |
| 315 if (persist) { | 310 if (persist) { |
| 316 EXPECT_EQ(decision, | 311 EXPECT_EQ(decision, |
| 317 permission_context.GetContentSettingFromMap(url, url)); | 312 permission_context.GetContentSettingFromMap(url, url)); |
| 318 } else { | 313 } else { |
| 319 EXPECT_EQ(CONTENT_SETTING_ASK, | 314 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 320 permission_context.GetContentSettingFromMap(url, url)); | 315 permission_context.GetContentSettingFromMap(url, url)); |
| 321 } | 316 } |
| 322 } | 317 } |
| 323 | 318 |
| 324 void DismissMultipleTimesAndExpectBlock( | 319 void DismissMultipleTimesAndExpectBlock( |
| 325 const GURL& url, | 320 const GURL& url, |
| 326 content::PermissionType permission_type, | |
| 327 ContentSettingsType content_settings_type, | 321 ContentSettingsType content_settings_type, |
| 328 uint32_t iterations) { | 322 uint32_t iterations) { |
| 329 base::HistogramTester histograms; | 323 base::HistogramTester histograms; |
| 330 | 324 |
| 331 // Dismiss |iterations| times. The final dismiss should change the decision | 325 // Dismiss |iterations| times. The final dismiss should change the decision |
| 332 // from dismiss to block, and hence change the persisted content setting. | 326 // from dismiss to block, and hence change the persisted content setting. |
| 333 for (uint32_t i = 0; i < iterations; ++i) { | 327 for (uint32_t i = 0; i < iterations; ++i) { |
| 334 ContentSetting expected = | 328 ContentSetting expected = |
| 335 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; | 329 (i < 2) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; |
| 336 TestPermissionContext permission_context( | 330 TestPermissionContext permission_context(profile(), |
| 337 profile(), permission_type, content_settings_type); | 331 content_settings_type); |
| 338 const PermissionRequestID id( | 332 const PermissionRequestID id( |
| 339 web_contents()->GetRenderProcessHost()->GetID(), | 333 web_contents()->GetRenderProcessHost()->GetID(), |
| 340 web_contents()->GetMainFrame()->GetRoutingID(), i); | 334 web_contents()->GetMainFrame()->GetRoutingID(), i); |
| 341 | 335 |
| 342 permission_context.SetRespondPermissionCallback( | 336 permission_context.SetRespondPermissionCallback( |
| 343 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 337 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 344 base::Unretained(this), &permission_context, id, url, | 338 base::Unretained(this), &permission_context, id, url, |
| 345 false, CONTENT_SETTING_ASK)); | 339 false, CONTENT_SETTING_ASK)); |
| 346 | 340 |
| 347 permission_context.RequestPermission( | 341 permission_context.RequestPermission( |
| 348 web_contents(), id, url, true /* user_gesture */, | 342 web_contents(), id, url, true /* user_gesture */, |
| 349 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 343 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 350 base::Unretained(&permission_context))); | 344 base::Unretained(&permission_context))); |
| 351 histograms.ExpectTotalCount( | 345 histograms.ExpectTotalCount( |
| 352 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 346 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
| 353 PermissionUtil::GetPermissionString(permission_type), | 347 PermissionUtil::GetPermissionString(content_settings_type), |
| 354 i + 1); | 348 i + 1); |
| 355 histograms.ExpectBucketCount( | 349 histograms.ExpectBucketCount( |
| 356 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 350 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
| 357 PermissionUtil::GetPermissionString(permission_type), | 351 PermissionUtil::GetPermissionString(content_settings_type), |
| 358 i, 1); | 352 i, 1); |
| 359 ASSERT_EQ(1u, permission_context.decisions().size()); | 353 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 360 EXPECT_EQ(expected, permission_context.decisions()[0]); | 354 EXPECT_EQ(expected, permission_context.decisions()[0]); |
| 361 EXPECT_TRUE(permission_context.tab_context_updated()); | 355 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 362 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 356 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); |
| 363 } | 357 } |
| 364 | 358 |
| 365 TestPermissionContext permission_context(profile(), permission_type, | 359 TestPermissionContext permission_context(profile(), content_settings_type); |
| 366 content_settings_type); | |
| 367 const PermissionRequestID id( | 360 const PermissionRequestID id( |
| 368 web_contents()->GetRenderProcessHost()->GetID(), | 361 web_contents()->GetRenderProcessHost()->GetID(), |
| 369 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 362 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
| 370 | 363 |
| 371 permission_context.SetRespondPermissionCallback( | 364 permission_context.SetRespondPermissionCallback( |
| 372 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 365 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 373 base::Unretained(this), &permission_context, id, url, false, | 366 base::Unretained(this), &permission_context, id, url, false, |
| 374 CONTENT_SETTING_ASK)); | 367 CONTENT_SETTING_ASK)); |
| 375 | 368 |
| 376 permission_context.RequestPermission( | 369 permission_context.RequestPermission( |
| 377 web_contents(), id, url, true /* user_gesture */, | 370 web_contents(), id, url, true /* user_gesture */, |
| 378 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 371 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 379 base::Unretained(&permission_context))); | 372 base::Unretained(&permission_context))); |
| 380 | 373 |
| 381 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 374 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 382 permission_context.GetPermissionStatus(url, url)); | 375 permission_context.GetPermissionStatus(url, url)); |
| 383 } | 376 } |
| 384 | 377 |
| 385 void TestBlockOnSeveralDismissals_TestContent() { | 378 void TestBlockOnSeveralDismissals_TestContent() { |
| 386 GURL url("https://www.google.com"); | 379 GURL url("https://www.google.com"); |
| 387 NavigateAndCommit(url); | 380 NavigateAndCommit(url); |
| 388 base::HistogramTester histograms; | 381 base::HistogramTester histograms; |
| 389 | 382 |
| 390 // First, ensure that > 3 dismissals behaves correctly. | 383 // First, ensure that > 3 dismissals behaves correctly. |
| 391 for (uint32_t i = 0; i < 4; ++i) { | 384 for (uint32_t i = 0; i < 4; ++i) { |
| 392 TestPermissionContext permission_context( | 385 TestPermissionContext permission_context( |
| 393 profile(), content::PermissionType::GEOLOCATION, | 386 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 394 CONTENT_SETTINGS_TYPE_GEOLOCATION); | |
| 395 | 387 |
| 396 const PermissionRequestID id( | 388 const PermissionRequestID id( |
| 397 web_contents()->GetRenderProcessHost()->GetID(), | 389 web_contents()->GetRenderProcessHost()->GetID(), |
| 398 web_contents()->GetMainFrame()->GetRoutingID(), i); | 390 web_contents()->GetMainFrame()->GetRoutingID(), i); |
| 399 | 391 |
| 400 permission_context.SetRespondPermissionCallback( | 392 permission_context.SetRespondPermissionCallback( |
| 401 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 393 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 402 base::Unretained(this), &permission_context, id, url, | 394 base::Unretained(this), &permission_context, id, url, |
| 403 false, CONTENT_SETTING_ASK)); | 395 false, CONTENT_SETTING_ASK)); |
| 404 permission_context.RequestPermission( | 396 permission_context.RequestPermission( |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 424 CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA); | 416 CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA); |
| 425 | 417 |
| 426 base::test::ScopedFeatureList feature_list; | 418 base::test::ScopedFeatureList feature_list; |
| 427 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften); | 419 feature_list.InitAndEnableFeature(features::kBlockPromptsIfDismissedOften); |
| 428 | 420 |
| 429 EXPECT_TRUE( | 421 EXPECT_TRUE( |
| 430 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften)); | 422 base::FeatureList::IsEnabled(features::kBlockPromptsIfDismissedOften)); |
| 431 | 423 |
| 432 // Sanity check independence per permission type by checking two of them. | 424 // Sanity check independence per permission type by checking two of them. |
| 433 DismissMultipleTimesAndExpectBlock(url, | 425 DismissMultipleTimesAndExpectBlock(url, |
| 434 content::PermissionType::GEOLOCATION, | |
| 435 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3); | 426 CONTENT_SETTINGS_TYPE_GEOLOCATION, 3); |
| 436 DismissMultipleTimesAndExpectBlock(url, | 427 DismissMultipleTimesAndExpectBlock(url, |
| 437 content::PermissionType::NOTIFICATIONS, | |
| 438 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3); | 428 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 3); |
| 439 } | 429 } |
| 440 | 430 |
| 441 void TestVariationBlockOnSeveralDismissals_TestContent() { | 431 void TestVariationBlockOnSeveralDismissals_TestContent() { |
| 442 GURL url("https://www.google.com"); | 432 GURL url("https://www.google.com"); |
| 443 NavigateAndCommit(url); | 433 NavigateAndCommit(url); |
| 444 base::HistogramTester histograms; | 434 base::HistogramTester histograms; |
| 445 | 435 |
| 446 // Set up the custom parameter and custom value. | 436 // Set up the custom parameter and custom value. |
| 447 base::FieldTrialList field_trials(nullptr); | 437 base::FieldTrialList field_trials(nullptr); |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 467 | 457 |
| 468 { | 458 { |
| 469 std::map<std::string, std::string> actual_params; | 459 std::map<std::string, std::string> actual_params; |
| 470 EXPECT_TRUE(variations::GetVariationParamsByFeature( | 460 EXPECT_TRUE(variations::GetVariationParamsByFeature( |
| 471 features::kBlockPromptsIfDismissedOften, &actual_params)); | 461 features::kBlockPromptsIfDismissedOften, &actual_params)); |
| 472 EXPECT_EQ(params, actual_params); | 462 EXPECT_EQ(params, actual_params); |
| 473 } | 463 } |
| 474 | 464 |
| 475 for (uint32_t i = 0; i < 5; ++i) { | 465 for (uint32_t i = 0; i < 5; ++i) { |
| 476 TestPermissionContext permission_context( | 466 TestPermissionContext permission_context( |
| 477 profile(), content::PermissionType::MIDI_SYSEX, | 467 profile(), CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 478 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
| 479 | 468 |
| 480 ContentSetting expected = | 469 ContentSetting expected = |
| 481 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; | 470 (i < 4) ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK; |
| 482 const PermissionRequestID id( | 471 const PermissionRequestID id( |
| 483 web_contents()->GetRenderProcessHost()->GetID(), | 472 web_contents()->GetRenderProcessHost()->GetID(), |
| 484 web_contents()->GetMainFrame()->GetRoutingID(), i); | 473 web_contents()->GetMainFrame()->GetRoutingID(), i); |
| 485 permission_context.SetRespondPermissionCallback( | 474 permission_context.SetRespondPermissionCallback( |
| 486 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 475 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 487 base::Unretained(this), &permission_context, id, url, | 476 base::Unretained(this), &permission_context, id, url, |
| 488 false, CONTENT_SETTING_ASK)); | 477 false, CONTENT_SETTING_ASK)); |
| 489 permission_context.RequestPermission( | 478 permission_context.RequestPermission( |
| 490 web_contents(), id, url, true /* user_gesture */, | 479 web_contents(), id, url, true /* user_gesture */, |
| 491 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 480 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 492 base::Unretained(&permission_context))); | 481 base::Unretained(&permission_context))); |
| 493 | 482 |
| 494 EXPECT_EQ(1u, permission_context.decisions().size()); | 483 EXPECT_EQ(1u, permission_context.decisions().size()); |
| 495 ASSERT_EQ(expected, permission_context.decisions()[0]); | 484 ASSERT_EQ(expected, permission_context.decisions()[0]); |
| 496 EXPECT_TRUE(permission_context.tab_context_updated()); | 485 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 497 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 486 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); |
| 498 | 487 |
| 499 histograms.ExpectTotalCount( | 488 histograms.ExpectTotalCount( |
| 500 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); | 489 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); |
| 501 histograms.ExpectBucketCount( | 490 histograms.ExpectBucketCount( |
| 502 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); | 491 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); |
| 503 } | 492 } |
| 504 | 493 |
| 505 // Ensure that we finish in the block state. | 494 // Ensure that we finish in the block state. |
| 506 TestPermissionContext permission_context( | 495 TestPermissionContext permission_context(profile(), |
| 507 profile(), content::PermissionType::MIDI_SYSEX, | 496 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 508 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
| 509 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 497 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 510 permission_context.GetPermissionStatus(url, url)); | 498 permission_context.GetPermissionStatus(url, url)); |
| 511 variations::testing::ClearAllVariationParams(); | 499 variations::testing::ClearAllVariationParams(); |
| 512 } | 500 } |
| 513 | 501 |
| 514 void TestRequestPermissionInvalidUrl( | 502 void TestRequestPermissionInvalidUrl( |
| 515 content::PermissionType permission_type, | |
| 516 ContentSettingsType content_settings_type) { | 503 ContentSettingsType content_settings_type) { |
| 517 TestPermissionContext permission_context(profile(), permission_type, | 504 TestPermissionContext permission_context(profile(), content_settings_type); |
| 518 content_settings_type); | |
| 519 GURL url; | 505 GURL url; |
| 520 ASSERT_FALSE(url.is_valid()); | 506 ASSERT_FALSE(url.is_valid()); |
| 521 NavigateAndCommit(url); | 507 NavigateAndCommit(url); |
| 522 | 508 |
| 523 const PermissionRequestID id( | 509 const PermissionRequestID id( |
| 524 web_contents()->GetRenderProcessHost()->GetID(), | 510 web_contents()->GetRenderProcessHost()->GetID(), |
| 525 web_contents()->GetMainFrame()->GetRoutingID(), | 511 web_contents()->GetMainFrame()->GetRoutingID(), |
| 526 -1); | 512 -1); |
| 527 permission_context.RequestPermission( | 513 permission_context.RequestPermission( |
| 528 web_contents(), | 514 web_contents(), |
| 529 id, url, true /* user_gesture */, | 515 id, url, true /* user_gesture */, |
| 530 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 516 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 531 base::Unretained(&permission_context))); | 517 base::Unretained(&permission_context))); |
| 532 | 518 |
| 533 ASSERT_EQ(1u, permission_context.decisions().size()); | 519 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 534 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); | 520 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); |
| 535 EXPECT_TRUE(permission_context.tab_context_updated()); | 521 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 536 EXPECT_EQ(CONTENT_SETTING_ASK, | 522 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 537 permission_context.GetContentSettingFromMap(url, url)); | 523 permission_context.GetContentSettingFromMap(url, url)); |
| 538 } | 524 } |
| 539 | 525 |
| 540 void TestGrantAndRevoke_TestContent(content::PermissionType permission_type, | 526 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type, |
| 541 ContentSettingsType content_settings_type, | |
| 542 ContentSetting expected_default) { | 527 ContentSetting expected_default) { |
| 543 TestPermissionContext permission_context(profile(), permission_type, | 528 TestPermissionContext permission_context(profile(), content_settings_type); |
| 544 content_settings_type); | |
| 545 GURL url("https://www.google.com"); | 529 GURL url("https://www.google.com"); |
| 546 NavigateAndCommit(url); | 530 NavigateAndCommit(url); |
| 547 | 531 |
| 548 const PermissionRequestID id( | 532 const PermissionRequestID id( |
| 549 web_contents()->GetRenderProcessHost()->GetID(), | 533 web_contents()->GetRenderProcessHost()->GetID(), |
| 550 web_contents()->GetMainFrame()->GetRoutingID(), | 534 web_contents()->GetMainFrame()->GetRoutingID(), |
| 551 -1); | 535 -1); |
| 552 permission_context.SetRespondPermissionCallback( | 536 permission_context.SetRespondPermissionCallback( |
| 553 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 537 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 554 base::Unretained(this), &permission_context, id, url, true, | 538 base::Unretained(this), &permission_context, id, url, true, |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 570 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin()); | 554 permission_context.ResetPermission(url.GetOrigin(), url.GetOrigin()); |
| 571 ContentSetting setting_after_reset = | 555 ContentSetting setting_after_reset = |
| 572 permission_context.GetContentSettingFromMap(url, url); | 556 permission_context.GetContentSettingFromMap(url, url); |
| 573 ContentSetting default_setting = | 557 ContentSetting default_setting = |
| 574 HostContentSettingsMapFactory::GetForProfile(profile()) | 558 HostContentSettingsMapFactory::GetForProfile(profile()) |
| 575 ->GetDefaultContentSetting(content_settings_type, nullptr); | 559 ->GetDefaultContentSetting(content_settings_type, nullptr); |
| 576 EXPECT_EQ(default_setting, setting_after_reset); | 560 EXPECT_EQ(default_setting, setting_after_reset); |
| 577 } | 561 } |
| 578 | 562 |
| 579 void TestGlobalPermissionsKillSwitch( | 563 void TestGlobalPermissionsKillSwitch( |
| 580 content::PermissionType permission_type, | |
| 581 ContentSettingsType content_settings_type) { | 564 ContentSettingsType content_settings_type) { |
| 582 TestKillSwitchPermissionContext permission_context( | 565 TestKillSwitchPermissionContext permission_context(profile(), |
| 583 profile(), permission_type, content_settings_type); | 566 content_settings_type); |
| 584 permission_context.ResetFieldTrialList(); | 567 permission_context.ResetFieldTrialList(); |
| 585 | 568 |
| 586 EXPECT_FALSE(permission_context.IsPermissionKillSwitchOn()); | 569 EXPECT_FALSE(permission_context.IsPermissionKillSwitchOn()); |
| 587 std::map<std::string, std::string> params; | 570 std::map<std::string, std::string> params; |
| 588 params[PermissionUtil::GetPermissionString(permission_type)] = | 571 params[PermissionUtil::GetPermissionString(content_settings_type)] = |
| 589 kPermissionsKillSwitchBlockedValue; | 572 kPermissionsKillSwitchBlockedValue; |
| 590 variations::AssociateVariationParams( | 573 variations::AssociateVariationParams( |
| 591 kPermissionsKillSwitchFieldStudy, kPermissionsKillSwitchTestGroup, | 574 kPermissionsKillSwitchFieldStudy, kPermissionsKillSwitchTestGroup, |
| 592 params); | 575 params); |
| 593 base::FieldTrialList::CreateFieldTrial(kPermissionsKillSwitchFieldStudy, | 576 base::FieldTrialList::CreateFieldTrial(kPermissionsKillSwitchFieldStudy, |
| 594 kPermissionsKillSwitchTestGroup); | 577 kPermissionsKillSwitchTestGroup); |
| 595 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn()); | 578 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn()); |
| 596 } | 579 } |
| 597 | 580 |
| 598 // Don't call this more than once in the same test, as it persists data to | 581 // Don't call this more than once in the same test, as it persists data to |
| 599 // HostContentSettingsMap. | 582 // HostContentSettingsMap. |
| 600 void TestParallelRequests(ContentSetting response) { | 583 void TestParallelRequests(ContentSetting response) { |
| 601 TestPermissionContext permission_context( | 584 TestPermissionContext permission_context( |
| 602 profile(), content::PermissionType::NOTIFICATIONS, | 585 profile(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 603 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
| 604 GURL url("http://www.google.com"); | 586 GURL url("http://www.google.com"); |
| 605 NavigateAndCommit(url); | 587 NavigateAndCommit(url); |
| 606 | 588 |
| 607 const PermissionRequestID id0( | 589 const PermissionRequestID id0( |
| 608 web_contents()->GetRenderProcessHost()->GetID(), | 590 web_contents()->GetRenderProcessHost()->GetID(), |
| 609 web_contents()->GetMainFrame()->GetRoutingID(), 0); | 591 web_contents()->GetMainFrame()->GetRoutingID(), 0); |
| 610 const PermissionRequestID id1( | 592 const PermissionRequestID id1( |
| 611 web_contents()->GetRenderProcessHost()->GetID(), | 593 web_contents()->GetRenderProcessHost()->GetID(), |
| 612 web_contents()->GetMainFrame()->GetRoutingID(), 1); | 594 web_contents()->GetMainFrame()->GetRoutingID(), 1); |
| 613 | 595 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 634 | 616 |
| 635 ASSERT_EQ(2u, permission_context.decisions().size()); | 617 ASSERT_EQ(2u, permission_context.decisions().size()); |
| 636 EXPECT_EQ(response, permission_context.decisions()[0]); | 618 EXPECT_EQ(response, permission_context.decisions()[0]); |
| 637 EXPECT_EQ(response, permission_context.decisions()[1]); | 619 EXPECT_EQ(response, permission_context.decisions()[1]); |
| 638 EXPECT_TRUE(permission_context.tab_context_updated()); | 620 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 639 | 621 |
| 640 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); | 622 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); |
| 641 } | 623 } |
| 642 | 624 |
| 643 void TestPermissionsBlacklisting( | 625 void TestPermissionsBlacklisting( |
| 644 content::PermissionType permission_type, | |
| 645 ContentSettingsType content_settings_type, | 626 ContentSettingsType content_settings_type, |
| 646 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, | 627 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, |
| 647 const GURL& url, | 628 const GURL& url, |
| 648 int timeout, | 629 int timeout, |
| 649 ContentSetting expected_permission_status) { | 630 ContentSetting expected_permission_status) { |
| 650 NavigateAndCommit(url); | 631 NavigateAndCommit(url); |
| 651 base::test::ScopedFeatureList scoped_feature_list; | 632 base::test::ScopedFeatureList scoped_feature_list; |
| 652 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); | 633 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); |
| 653 TestPermissionContext permission_context(profile(), permission_type, | 634 TestPermissionContext permission_context(profile(), content_settings_type); |
| 654 content_settings_type); | |
| 655 PermissionDecisionAutoBlocker::GetForProfile(profile()) | 635 PermissionDecisionAutoBlocker::GetForProfile(profile()) |
| 656 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 636 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
| 657 timeout); | 637 timeout); |
| 658 const PermissionRequestID id( | 638 const PermissionRequestID id( |
| 659 web_contents()->GetRenderProcessHost()->GetID(), | 639 web_contents()->GetRenderProcessHost()->GetID(), |
| 660 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 640 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
| 661 | 641 |
| 662 // A response only needs to be made to the permission request if we do not | 642 // A response only needs to be made to the permission request if we do not |
| 663 // expect he permission to be blacklisted, therefore set the response | 643 // expect he permission to be blacklisted, therefore set the response |
| 664 // callback. | 644 // callback. |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 692 PermissionRequestManager::CreateForWebContents(web_contents()); | 672 PermissionRequestManager::CreateForWebContents(web_contents()); |
| 693 #endif | 673 #endif |
| 694 } | 674 } |
| 695 | 675 |
| 696 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests); | 676 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests); |
| 697 }; | 677 }; |
| 698 | 678 |
| 699 // Simulates clicking Accept. The permission should be granted and | 679 // Simulates clicking Accept. The permission should be granted and |
| 700 // saved for future use. | 680 // saved for future use. |
| 701 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { | 681 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { |
| 702 TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, | 682 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 703 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 704 CONTENT_SETTING_ALLOW, true); | 683 CONTENT_SETTING_ALLOW, true); |
| 705 } | 684 } |
| 706 | 685 |
| 707 // Simulates clicking Accept. The permission should be granted, but not | 686 // Simulates clicking Accept. The permission should be granted, but not |
| 708 // persisted. | 687 // persisted. |
| 709 TEST_F(PermissionContextBaseTests, TestAskAndGrantNoPersist) { | 688 TEST_F(PermissionContextBaseTests, TestAskAndGrantNoPersist) { |
| 710 TestAskAndDecide_TestContent(content::PermissionType::NOTIFICATIONS, | 689 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 711 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 712 CONTENT_SETTING_ALLOW, false); | 690 CONTENT_SETTING_ALLOW, false); |
| 713 } | 691 } |
| 714 | 692 |
| 715 // Simulates clicking Block. The permission should be denied and | 693 // Simulates clicking Block. The permission should be denied and |
| 716 // saved for future use. | 694 // saved for future use. |
| 717 TEST_F(PermissionContextBaseTests, TestAskAndBlockPersist) { | 695 TEST_F(PermissionContextBaseTests, TestAskAndBlockPersist) { |
| 718 TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, | 696 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 719 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 720 CONTENT_SETTING_BLOCK, true); | 697 CONTENT_SETTING_BLOCK, true); |
| 721 } | 698 } |
| 722 | 699 |
| 723 // Simulates clicking Block. The permission should be denied, but not persisted. | 700 // Simulates clicking Block. The permission should be denied, but not persisted. |
| 724 TEST_F(PermissionContextBaseTests, TestAskAndBlockNoPersist) { | 701 TEST_F(PermissionContextBaseTests, TestAskAndBlockNoPersist) { |
| 725 TestAskAndDecide_TestContent(content::PermissionType::GEOLOCATION, | 702 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 726 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 727 CONTENT_SETTING_BLOCK, false); | 703 CONTENT_SETTING_BLOCK, false); |
| 728 } | 704 } |
| 729 | 705 |
| 730 // Simulates clicking Dismiss (X) in the infobar/bubble. | 706 // Simulates clicking Dismiss (X) in the infobar/bubble. |
| 731 // The permission should be denied but not saved for future use. | 707 // The permission should be denied but not saved for future use. |
| 732 TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { | 708 TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { |
| 733 TestAskAndDecide_TestContent(content::PermissionType::MIDI_SYSEX, | 709 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
| 734 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
| 735 CONTENT_SETTING_ASK, false); | 710 CONTENT_SETTING_ASK, false); |
| 736 } | 711 } |
| 737 | 712 |
| 738 // Simulates clicking Dismiss (X) in the infobar/bubble with the block on too | 713 // Simulates clicking Dismiss (X) in the infobar/bubble with the block on too |
| 739 // many dismissals feature active. The permission should be blocked after | 714 // many dismissals feature active. The permission should be blocked after |
| 740 // several dismissals. | 715 // several dismissals. |
| 741 TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) { | 716 TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) { |
| 742 TestBlockOnSeveralDismissals_TestContent(); | 717 TestBlockOnSeveralDismissals_TestContent(); |
| 743 } | 718 } |
| 744 | 719 |
| 745 // Test setting a custom number of dismissals before block via variations. | 720 // Test setting a custom number of dismissals before block via variations. |
| 746 TEST_F(PermissionContextBaseTests, TestDismissVariations) { | 721 TEST_F(PermissionContextBaseTests, TestDismissVariations) { |
| 747 TestVariationBlockOnSeveralDismissals_TestContent(); | 722 TestVariationBlockOnSeveralDismissals_TestContent(); |
| 748 } | 723 } |
| 749 | 724 |
| 750 // Simulates non-valid requesting URL. | 725 // Simulates non-valid requesting URL. |
| 751 // The permission should be denied but not saved for future use. | 726 // The permission should be denied but not saved for future use. |
| 752 TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) { | 727 TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) { |
| 753 TestRequestPermissionInvalidUrl(content::PermissionType::GEOLOCATION, | 728 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 754 CONTENT_SETTINGS_TYPE_GEOLOCATION); | 729 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 755 TestRequestPermissionInvalidUrl(content::PermissionType::NOTIFICATIONS, | 730 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 756 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 731 TestRequestPermissionInvalidUrl(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 757 TestRequestPermissionInvalidUrl(content::PermissionType::MIDI_SYSEX, | |
| 758 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
| 759 TestRequestPermissionInvalidUrl(content::PermissionType::PUSH_MESSAGING, | |
| 760 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
|
raymes
2017/02/09 00:39:57
I think this got removed. Should PUSH still work h
| |
| 761 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 732 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
| 762 TestRequestPermissionInvalidUrl( | 733 TestRequestPermissionInvalidUrl( |
| 763 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
| 764 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); | 734 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); |
| 765 #endif | 735 #endif |
| 766 } | 736 } |
| 767 | 737 |
| 768 #if defined(OS_ANDROID) | 738 #if defined(OS_ANDROID) |
| 769 // This test is specific to Android because other platforms use bubbles. | 739 // This test is specific to Android because other platforms use bubbles. |
| 770 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithInfobars) { | 740 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithInfobars) { |
| 771 TestGrantAndRevoke_TestContent(content::PermissionType::GEOLOCATION, | 741 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 772 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 773 CONTENT_SETTING_ASK); | 742 CONTENT_SETTING_ASK); |
| 774 TestGrantAndRevoke_TestContent(content::PermissionType::MIDI_SYSEX, | 743 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
| 775 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
| 776 CONTENT_SETTING_ASK); | 744 CONTENT_SETTING_ASK); |
| 777 TestGrantAndRevoke_TestContent( | 745 TestGrantAndRevoke_TestContent( |
| 778 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
| 779 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTING_ASK); | 746 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTING_ASK); |
| 780 // TODO(timvolodine): currently no test for | 747 // TODO(timvolodine): currently no test for |
| 781 // CONTENT_SETTINGS_TYPE_NOTIFICATIONS because notification permissions work | 748 // CONTENT_SETTINGS_TYPE_NOTIFICATIONS because notification permissions work |
| 782 // differently with infobars as compared to bubbles (crbug.com/453784). | 749 // differently with infobars as compared to bubbles (crbug.com/453784). |
| 783 } | 750 } |
| 784 #endif | 751 #endif |
| 785 | 752 |
| 786 #if !defined(OS_ANDROID) | 753 #if !defined(OS_ANDROID) |
| 787 // Simulates granting and revoking of permissions using permission bubbles. | 754 // Simulates granting and revoking of permissions using permission bubbles. |
| 788 // This test shouldn't run on mobile because mobile platforms use infobars. | 755 // This test shouldn't run on mobile because mobile platforms use infobars. |
| 789 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) { | 756 TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) { |
| 790 TestGrantAndRevoke_TestContent(content::PermissionType::GEOLOCATION, | 757 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 791 CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 792 CONTENT_SETTING_ASK); | 758 CONTENT_SETTING_ASK); |
| 793 TestGrantAndRevoke_TestContent(content::PermissionType::NOTIFICATIONS, | 759 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 794 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 795 CONTENT_SETTING_ASK); | 760 CONTENT_SETTING_ASK); |
| 796 TestGrantAndRevoke_TestContent(content::PermissionType::MIDI_SYSEX, | 761 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
| 797 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | |
| 798 CONTENT_SETTING_ASK); | 762 CONTENT_SETTING_ASK); |
| 799 TestGrantAndRevoke_TestContent(content::PermissionType::PUSH_MESSAGING, | 763 TestGrantAndRevoke_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
|
raymes
2017/02/09 00:39:57
Same here - should this stay as PUSH?
| |
| 800 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | |
| 801 CONTENT_SETTING_ASK); | 764 CONTENT_SETTING_ASK); |
| 802 } | 765 } |
| 803 #endif | 766 #endif |
| 804 | 767 |
| 805 // Tests the global kill switch by enabling/disabling the Field Trials. | 768 // Tests the global kill switch by enabling/disabling the Field Trials. |
| 806 TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) { | 769 TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) { |
| 807 TestGlobalPermissionsKillSwitch(content::PermissionType::GEOLOCATION, | 770 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 808 CONTENT_SETTINGS_TYPE_GEOLOCATION); | 771 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 809 TestGlobalPermissionsKillSwitch(content::PermissionType::NOTIFICATIONS, | 772 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 810 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 773 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 811 TestGlobalPermissionsKillSwitch(content::PermissionType::MIDI_SYSEX, | 774 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE); |
| 812 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | |
| 813 TestGlobalPermissionsKillSwitch(content::PermissionType::PUSH_MESSAGING, | |
| 814 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | |
|
raymes
2017/02/09 00:39:57
Same here
Timothy Loh
2017/02/10 07:25:38
I moved some code around to keep this test working
| |
| 815 TestGlobalPermissionsKillSwitch(content::PermissionType::DURABLE_STORAGE, | |
| 816 CONTENT_SETTINGS_TYPE_DURABLE_STORAGE); | |
| 817 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 775 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
| 818 TestGlobalPermissionsKillSwitch( | 776 TestGlobalPermissionsKillSwitch( |
| 819 content::PermissionType::PROTECTED_MEDIA_IDENTIFIER, | |
| 820 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); | 777 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); |
| 821 #endif | 778 #endif |
| 822 TestGlobalPermissionsKillSwitch(content::PermissionType::AUDIO_CAPTURE, | 779 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); |
| 823 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); | 780 TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); |
| 824 TestGlobalPermissionsKillSwitch(content::PermissionType::VIDEO_CAPTURE, | |
| 825 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); | |
| 826 } | 781 } |
| 827 | 782 |
| 828 TEST_F(PermissionContextBaseTests, TestParallelRequestsAllowed) { | 783 TEST_F(PermissionContextBaseTests, TestParallelRequestsAllowed) { |
| 829 TestParallelRequests(CONTENT_SETTING_ALLOW); | 784 TestParallelRequests(CONTENT_SETTING_ALLOW); |
| 830 } | 785 } |
| 831 | 786 |
| 832 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { | 787 TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { |
| 833 TestParallelRequests(CONTENT_SETTING_BLOCK); | 788 TestParallelRequests(CONTENT_SETTING_BLOCK); |
| 834 } | 789 } |
| 835 | 790 |
| 836 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { | 791 TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { |
| 837 TestParallelRequests(CONTENT_SETTING_ASK); | 792 TestParallelRequests(CONTENT_SETTING_ASK); |
| 838 } | 793 } |
| 839 | 794 |
| 840 // Tests a blacklisted (URL, permission) pair has had its permission request | 795 // Tests a blacklisted (URL, permission) pair has had its permission request |
| 841 // blocked. | 796 // blocked. |
| 842 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingBlocked) { | 797 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingBlocked) { |
| 843 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 798 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 844 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 799 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
| 845 const GURL url("https://www.example.com"); | 800 const GURL url("https://www.example.com"); |
| 846 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 801 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 847 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 802 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 848 TestPermissionsBlacklisting(content::PermissionType::GEOLOCATION, | 803 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager, |
| 849 CONTENT_SETTINGS_TYPE_GEOLOCATION, db_manager, | |
| 850 url, 2000 /* timeout */, CONTENT_SETTING_BLOCK); | 804 url, 2000 /* timeout */, CONTENT_SETTING_BLOCK); |
| 851 } | 805 } |
| 852 | 806 |
| 853 // Tests that a URL that is blacklisted for one permission can still request | 807 // Tests that a URL that is blacklisted for one permission can still request |
| 854 // another and grant another. | 808 // another and grant another. |
| 855 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { | 809 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { |
| 856 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 810 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 857 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 811 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
| 858 const GURL url("https://www.example.com"); | 812 const GURL url("https://www.example.com"); |
| 859 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 813 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 860 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 814 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 861 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, | 815 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
| 862 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | |
| 863 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); | 816 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); |
| 864 } | 817 } |
| OLD | NEW |