blob: c580592600ce2754df8354a866245ba5a557cc14 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_EMBEDDER_SUPPORT_PERMISSION_CONTEXT_UTILS_H_
#define COMPONENTS_EMBEDDER_SUPPORT_PERMISSION_CONTEXT_UTILS_H_
#include "build/build_config.h"
#include "components/permissions/contexts/camera_pan_tilt_zoom_permission_context.h"
#include "components/permissions/contexts/geolocation_permission_context.h"
#include "components/permissions/contexts/nfc_permission_context.h"
#include "components/permissions/permission_manager.h"
namespace content {
class BrowserContext;
} // namespace content
#if defined(OS_MAC)
namespace device {
class GeolocationManager;
} // namespace device
#endif // defined(OS_MAC)
namespace webrtc {
class MediaStreamDeviceEnumerator;
} // namespace webrtc
namespace embedder_support {
// Contains all delegates & helper classes needed to construct all default
// permission contexts via CreateDefaultPermissionContexts().
struct PermissionContextDelegates {
PermissionContextDelegates();
PermissionContextDelegates(PermissionContextDelegates&&);
PermissionContextDelegates& operator=(PermissionContextDelegates&&);
~PermissionContextDelegates();
std::unique_ptr<permissions::CameraPanTiltZoomPermissionContext::Delegate>
camera_pan_tilt_zoom_permission_context_delegate;
std::unique_ptr<permissions::GeolocationPermissionContext::Delegate>
geolocation_permission_context_delegate;
#if defined(OS_MAC)
device::GeolocationManager* geolocation_manager;
#endif // defined(OS_MAC)
webrtc::MediaStreamDeviceEnumerator* media_stream_device_enumerator;
std::unique_ptr<permissions::NfcPermissionContext::Delegate>
nfc_permission_context_delegate;
};
// Creates default permission contexts shared between Content embedders.
// Embedders are expected to populate all fields of |delegates| which are then
// being used to create the specific permission contexts.
permissions::PermissionManager::PermissionContextMap
CreateDefaultPermissionContexts(content::BrowserContext* browser_context,
PermissionContextDelegates delegates);
} // namespace embedder_support
#endif // COMPONENTS_EMBEDDER_SUPPORT_PERMISSION_CONTEXT_UTILS_H_