blob: e5b87000b56938a3fa7de008ae1ffef9ec34b433 [file] [log] [blame]
Andy Paicu0a6d4b502023-08-29 15:13:091// Copyright 2023 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_PERMISSIONS_PERMISSION_REQUEST_DATA_H_
6#define COMPONENTS_PERMISSIONS_PERMISSION_REQUEST_DATA_H_
7
8#include "components/permissions/permission_request_id.h"
9#include "components/permissions/request_type.h"
10#include "third_party/abseil-cpp/absl/types/optional.h"
11#include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
12#include "ui/gfx/geometry/rect.h"
13#include "url/gurl.h"
14
15namespace content {
16struct PermissionRequestDescription;
17}
18
19namespace permissions {
20
21class PermissionContextBase;
22
23// Holds information about `permissions::PermissionRequest`
24struct PermissionRequestData {
25 PermissionRequestData(
26 PermissionContextBase* context,
27 const PermissionRequestID& id,
28 const content::PermissionRequestDescription& request_description,
29 const GURL& canonical_requesting_origin);
30
31 PermissionRequestData(PermissionContextBase* context,
32 const PermissionRequestID& id,
33 bool user_gesture,
34 const GURL& requesting_origin,
35 const GURL& embedding_origin = GURL());
36
37 PermissionRequestData(RequestType request_type,
38 bool user_gesture,
39 const GURL& requesting_origin,
40 const GURL& embedding_origin = GURL());
41
42 PermissionRequestData& operator=(const PermissionRequestData&) = delete;
43 PermissionRequestData(const PermissionRequestData&) = delete;
44
45 PermissionRequestData& operator=(PermissionRequestData&&);
46 PermissionRequestData(PermissionRequestData&&);
47
48 ~PermissionRequestData();
49
50 PermissionRequestData& WithRequestingOrigin(const GURL& origin) {
51 requesting_origin = origin;
52 return *this;
53 }
54
55 PermissionRequestData& WithEmbeddingOrigin(const GURL& origin) {
56 embedding_origin = origin;
57 return *this;
58 }
59
60 // The type of request.
61 absl::optional<RequestType> request_type;
62
63 // Uniquely identifier of particular permission request.
64 PermissionRequestID id;
65
66 // Indicates the request is initiated by a user gesture.