#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h"
#include <utility>
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/location.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "base/task/single_thread_task_runner.h"
#include "base/values.h"
#include "components/guest_view/browser/guest_view_event.h"
#include "content/public/browser/render_process_host.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "extensions/browser/guest_view/web_view/web_view_constants.h"
#include "extensions/browser/guest_view/web_view/web_view_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_permission_helper_delegate.h"
#include "extensions/browser/guest_view/web_view/web_view_permission_types.h"
#include "extensions/common/extension_features.h"
#include "ppapi/buildflags/buildflags.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
UserMetricsAction;
BrowserPluginGuestDelegate;
GuestViewEvent;
namespace extensions {
namespace {
static std::string PermissionTypeToString(WebViewPermissionType type) { … }
void RecordUserInitiatedUMA(
const WebViewPermissionHelper::PermissionResponseInfo& info,
bool allow) { … }
}
WebViewPermissionHelper::WebViewPermissionHelper(WebViewGuest* web_view_guest)
: … { … }
WebViewPermissionHelper::~WebViewPermissionHelper() { … }
WebViewPermissionHelper* WebViewPermissionHelper::FromRenderFrameHost(
content::RenderFrameHost* render_frame_host) { … }
WebViewPermissionHelper* WebViewPermissionHelper::FromRenderFrameHostId(
const content::GlobalRenderFrameHostId& render_frame_host_id) { … }
void WebViewPermissionHelper::RequestMediaAccessPermission(
content::WebContents* source,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) { … }
void WebViewPermissionHelper::RequestMediaAccessPermissionForControlledFrame(
content::WebContents* source,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) { … }
bool WebViewPermissionHelper::CheckMediaAccessPermission(
content::RenderFrameHost* render_frame_host,
const url::Origin& security_origin,
blink::mojom::MediaStreamType type) { … }
bool WebViewPermissionHelper::CheckMediaAccessPermissionForControlledFrame(
content::RenderFrameHost* render_frame_host,
const url::Origin& security_origin,
blink::mojom::MediaStreamType type) { … }
void WebViewPermissionHelper::OnMediaPermissionResponse(
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback,
bool allow,
const std::string& user_input) { … }
void WebViewPermissionHelper::CanDownload(
const GURL& url,
const std::string& request_method,
base::OnceCallback<void(bool)> callback) { … }
void WebViewPermissionHelper::RequestPointerLockPermission(
bool user_gesture,
bool last_unlocked_by_target,
base::OnceCallback<void(bool)> callback) { … }
void WebViewPermissionHelper::RequestGeolocationPermission(
const GURL& requesting_frame_url,
bool user_gesture,
base::OnceCallback<void(bool)> callback) { … }
void WebViewPermissionHelper::RequestHidPermission(
const GURL& requesting_frame_url,
base::OnceCallback<void(bool)> callback) { … }
void WebViewPermissionHelper::RequestFileSystemPermission(
const GURL& url,
bool allowed_by_default,
base::OnceCallback<void(bool)> callback) { … }
int WebViewPermissionHelper::RequestPermission(
WebViewPermissionType permission_type,
base::Value::Dict request_info,
PermissionResponseCallback callback,
bool allowed_by_default) { … }
WebViewPermissionHelper::SetPermissionResult
WebViewPermissionHelper::SetPermission(
int request_id,
PermissionResponseAction action,
const std::string& user_input) { … }
void WebViewPermissionHelper::CancelPendingPermissionRequest(int request_id) { … }
WebViewPermissionHelper::PermissionResponseInfo::PermissionResponseInfo()
: … { … }
WebViewPermissionHelper::PermissionResponseInfo::PermissionResponseInfo(
PermissionResponseCallback callback,
WebViewPermissionType permission_type,
bool allowed_by_default)
: … { … }
WebViewPermissionHelper::PermissionResponseInfo&
WebViewPermissionHelper::PermissionResponseInfo::operator=(
WebViewPermissionHelper::PermissionResponseInfo&& other) = default;
WebViewPermissionHelper::PermissionResponseInfo::~PermissionResponseInfo() =
default;
}