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 |