permission_context_utils.cc 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // Copyright 2021 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/embedder_support/permission_context_utils.h"
  5. #include "build/build_config.h"
  6. #include "components/background_sync/background_sync_permission_context.h"
  7. #include "components/permissions/contexts/accessibility_permission_context.h"
  8. #include "components/permissions/contexts/camera_pan_tilt_zoom_permission_context.h"
  9. #include "components/permissions/contexts/clipboard_read_write_permission_context.h"
  10. #include "components/permissions/contexts/clipboard_sanitized_write_permission_context.h"
  11. #include "components/permissions/contexts/geolocation_permission_context.h"
  12. #include "components/permissions/contexts/midi_permission_context.h"
  13. #include "components/permissions/contexts/midi_sysex_permission_context.h"
  14. #include "components/permissions/contexts/nfc_permission_context.h"
  15. #include "components/permissions/contexts/payment_handler_permission_context.h"
  16. #include "components/permissions/contexts/sensor_permission_context.h"
  17. #include "components/permissions/contexts/wake_lock_permission_context.h"
  18. #include "components/permissions/contexts/webxr_permission_context.h"
  19. #if BUILDFLAG(IS_ANDROID)
  20. #include "components/permissions/contexts/geolocation_permission_context_android.h"
  21. #include "components/permissions/contexts/nfc_permission_context_android.h"
  22. #endif // BUILDFLAG(IS_ANDROID)
  23. #if BUILDFLAG(IS_MAC)
  24. #include "components/permissions/contexts/geolocation_permission_context_mac.h"
  25. #endif // BUILDFLAG(IS_MAC)
  26. namespace embedder_support {
  27. PermissionContextDelegates::PermissionContextDelegates() = default;
  28. PermissionContextDelegates::PermissionContextDelegates(
  29. PermissionContextDelegates&&) = default;
  30. PermissionContextDelegates& PermissionContextDelegates::operator=(
  31. PermissionContextDelegates&&) = default;
  32. PermissionContextDelegates::~PermissionContextDelegates() = default;
  33. permissions::PermissionManager::PermissionContextMap
  34. CreateDefaultPermissionContexts(content::BrowserContext* browser_context,
  35. PermissionContextDelegates delegates) {
  36. permissions::PermissionManager::PermissionContextMap permission_contexts;
  37. DCHECK(delegates.camera_pan_tilt_zoom_permission_context_delegate);
  38. DCHECK(delegates.geolocation_permission_context_delegate);
  39. #if BUILDFLAG(IS_MAC)
  40. DCHECK(delegates.geolocation_manager);
  41. #endif // BUILDFLAG(IS_MAC)
  42. DCHECK(delegates.media_stream_device_enumerator);
  43. DCHECK(delegates.nfc_permission_context_delegate);
  44. permission_contexts[ContentSettingsType::ACCESSIBILITY_EVENTS] =
  45. std::make_unique<permissions::AccessibilityPermissionContext>(
  46. browser_context);
  47. permission_contexts[ContentSettingsType::AR] =
  48. std::make_unique<permissions::WebXrPermissionContext>(
  49. browser_context, ContentSettingsType::AR);
  50. permission_contexts[ContentSettingsType::BACKGROUND_SYNC] =
  51. std::make_unique<BackgroundSyncPermissionContext>(browser_context);
  52. permission_contexts[ContentSettingsType::CAMERA_PAN_TILT_ZOOM] =
  53. std::make_unique<permissions::CameraPanTiltZoomPermissionContext>(
  54. browser_context,
  55. std::move(delegates.camera_pan_tilt_zoom_permission_context_delegate),
  56. delegates.media_stream_device_enumerator);
  57. permission_contexts[ContentSettingsType::CLIPBOARD_READ_WRITE] =
  58. std::make_unique<permissions::ClipboardReadWritePermissionContext>(
  59. browser_context);
  60. permission_contexts[ContentSettingsType::CLIPBOARD_SANITIZED_WRITE] =
  61. std::make_unique<permissions::ClipboardSanitizedWritePermissionContext>(
  62. browser_context);
  63. #if BUILDFLAG(IS_ANDROID)
  64. permission_contexts[ContentSettingsType::GEOLOCATION] =
  65. std::make_unique<permissions::GeolocationPermissionContextAndroid>(
  66. browser_context,
  67. std::move(delegates.geolocation_permission_context_delegate));
  68. #elif BUILDFLAG(IS_MAC)
  69. permission_contexts[ContentSettingsType::GEOLOCATION] =
  70. std::make_unique<permissions::GeolocationPermissionContextMac>(
  71. browser_context,
  72. std::move(delegates.geolocation_permission_context_delegate),
  73. delegates.geolocation_manager);
  74. #else
  75. permission_contexts[ContentSettingsType::GEOLOCATION] =
  76. std::make_unique<permissions::GeolocationPermissionContext>(
  77. browser_context,
  78. std::move(delegates.geolocation_permission_context_delegate));
  79. #endif
  80. permission_contexts[ContentSettingsType::MIDI] =
  81. std::make_unique<permissions::MidiPermissionContext>(browser_context);
  82. permission_contexts[ContentSettingsType::MIDI_SYSEX] =
  83. std::make_unique<permissions::MidiSysexPermissionContext>(
  84. browser_context);
  85. #if BUILDFLAG(IS_ANDROID)
  86. permission_contexts[ContentSettingsType::NFC] =
  87. std::make_unique<permissions::NfcPermissionContextAndroid>(
  88. browser_context,
  89. std::move(delegates.nfc_permission_context_delegate));
  90. #else
  91. permission_contexts[ContentSettingsType::NFC] =
  92. std::make_unique<permissions::NfcPermissionContext>(
  93. browser_context,
  94. std::move(delegates.nfc_permission_context_delegate));
  95. #endif // BUILDFLAG(IS_ANDROID)
  96. permission_contexts[ContentSettingsType::PAYMENT_HANDLER] =
  97. std::make_unique<payments::PaymentHandlerPermissionContext>(
  98. browser_context);
  99. permission_contexts[ContentSettingsType::SENSORS] =
  100. std::make_unique<permissions::SensorPermissionContext>(browser_context);
  101. permission_contexts[ContentSettingsType::VR] =
  102. std::make_unique<permissions::WebXrPermissionContext>(
  103. browser_context, ContentSettingsType::VR);
  104. permission_contexts[ContentSettingsType::WAKE_LOCK_SCREEN] =
  105. std::make_unique<permissions::WakeLockPermissionContext>(
  106. browser_context, ContentSettingsType::WAKE_LOCK_SCREEN);
  107. permission_contexts[ContentSettingsType::WAKE_LOCK_SYSTEM] =
  108. std::make_unique<permissions::WakeLockPermissionContext>(
  109. browser_context, ContentSettingsType::WAKE_LOCK_SYSTEM);
  110. return permission_contexts;
  111. }
  112. } // namespace embedder_support