permission_test_util.cc 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/permissions/test/permission_test_util.h"
  5. #include "components/content_settings/core/common/content_settings_types.h"
  6. #include "components/permissions/contexts/window_placement_permission_context.h"
  7. #include "components/permissions/permission_manager.h"
  8. #include "content/public/browser/browser_context.h"
  9. #include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom.h"
  10. namespace permissions {
  11. namespace {
  12. class FakePermissionContext : public PermissionContextBase {
  13. public:
  14. FakePermissionContext(
  15. content::BrowserContext* browser_context,
  16. ContentSettingsType content_settings_type,
  17. blink::mojom::PermissionsPolicyFeature permissions_policy_feature)
  18. : PermissionContextBase(browser_context,
  19. content_settings_type,
  20. permissions_policy_feature) {}
  21. // PermissionContextBase:
  22. bool IsRestrictedToSecureOrigins() const override { return true; }
  23. };
  24. class FakePermissionContextAlwaysAllow : public FakePermissionContext {
  25. public:
  26. FakePermissionContextAlwaysAllow(
  27. content::BrowserContext* browser_context,
  28. ContentSettingsType content_settings_type,
  29. blink::mojom::PermissionsPolicyFeature permissions_policy_feature)
  30. : FakePermissionContext(browser_context,
  31. content_settings_type,
  32. permissions_policy_feature) {}
  33. // PermissionContextBase:
  34. ContentSetting GetPermissionStatusInternal(
  35. content::RenderFrameHost* render_frame_host,
  36. const GURL& requesting_origin,
  37. const GURL& embedding_origin) const override {
  38. return CONTENT_SETTING_ALLOW;
  39. }
  40. };
  41. PermissionManager::PermissionContextMap CreatePermissionContexts(
  42. content::BrowserContext* browser_context) {
  43. PermissionManager::PermissionContextMap permission_contexts;
  44. permission_contexts[ContentSettingsType::GEOLOCATION] =
  45. std::make_unique<FakePermissionContext>(
  46. browser_context, ContentSettingsType::GEOLOCATION,
  47. blink::mojom::PermissionsPolicyFeature::kGeolocation);
  48. permission_contexts[ContentSettingsType::NOTIFICATIONS] =
  49. std::make_unique<FakePermissionContext>(
  50. browser_context, ContentSettingsType::NOTIFICATIONS,
  51. blink::mojom::PermissionsPolicyFeature::kNotFound);
  52. permission_contexts[ContentSettingsType::MIDI_SYSEX] =
  53. std::make_unique<FakePermissionContext>(
  54. browser_context, ContentSettingsType::MIDI_SYSEX,
  55. blink::mojom::PermissionsPolicyFeature::kMidiFeature);
  56. permission_contexts[ContentSettingsType::MIDI] =
  57. std::make_unique<FakePermissionContextAlwaysAllow>(
  58. browser_context, ContentSettingsType::MIDI,
  59. blink::mojom::PermissionsPolicyFeature::kMidiFeature);
  60. permission_contexts[ContentSettingsType::STORAGE_ACCESS] =
  61. std::make_unique<FakePermissionContextAlwaysAllow>(
  62. browser_context, ContentSettingsType::STORAGE_ACCESS,
  63. blink::mojom::PermissionsPolicyFeature::kStorageAccessAPI);
  64. #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS)
  65. permission_contexts[ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER] =
  66. std::make_unique<FakePermissionContext>(
  67. browser_context, ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER,
  68. blink::mojom::PermissionsPolicyFeature::kEncryptedMedia);
  69. #endif
  70. permission_contexts[ContentSettingsType::WINDOW_PLACEMENT] =
  71. std::make_unique<WindowPlacementPermissionContext>(browser_context);
  72. return permission_contexts;
  73. }
  74. } // namespace
  75. std::unique_ptr<content::PermissionControllerDelegate>
  76. GetPermissionControllerDelegate(content::BrowserContext* context) {
  77. return std::make_unique<permissions::PermissionManager>(
  78. context, CreatePermissionContexts(context));
  79. }
  80. } // namespace permissions