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