blob: 3e52af15c3ce12ce782648e6b23110432eb5f77a [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2020 The Chromium Authors
Mugdha Lakhani83baeab2020-03-20 13:08:232// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Mugdha Lakhanib6762162020-03-30 10:23:255#ifndef COMPONENTS_PAGE_INFO_PAGE_INFO_DELEGATE_H_
6#define COMPONENTS_PAGE_INFO_PAGE_INFO_DELEGATE_H_
Mugdha Lakhani83baeab2020-03-20 13:08:237
Jan Wilken Dörriead587c32021-03-11 14:09:278#include <string>
9
Mugdha Lakhani00b27a02020-03-24 13:41:3110#include "build/build_config.h"
Carlos Caballerob4283202020-08-10 14:40:4611#include "components/content_settings/browser/page_specific_content_settings.h"
Mugdha Lakhani83baeab2020-03-20 13:08:2312#include "components/content_settings/core/common/content_settings_types.h"
sauski9fb88822021-07-16 18:44:0113#include "components/page_info/page_info.h"
Mugdha Lakhani00b27a02020-03-24 13:41:3114#include "components/permissions/permission_uma_util.h"
Mugdha Lakhani09e02f622020-03-21 19:48:0315#include "components/safe_browsing/buildflags.h"
Colin Blundell51fe5642021-06-25 11:58:3716#include "components/safe_browsing/core/browser/password_protection/metrics_util.h"
Mugdha Lakhani65bd7e52020-03-31 19:26:1617#include "components/security_state/core/security_state.h"
Illia Klimov2c6138b2023-08-14 09:39:2518#include "content/public/browser/permission_result.h"
Christian Dullwebera475f4a2023-08-07 17:04:1319#include "third_party/abseil-cpp/absl/types/optional.h"
Mugdha Lakhani09e02f622020-03-21 19:48:0320
Illia Klimov15550f752022-08-11 19:33:1021namespace blink {
22enum class PermissionType;
23}
24
Mugdha Lakhani00b27a02020-03-24 13:41:3125namespace permissions {
Ken Buchanan76365d12021-04-20 18:46:1926class ObjectPermissionContextBase;
Mugdha Lakhani00b27a02020-03-24 13:41:3127class PermissionDecisionAutoBlocker;
28} // namespace permissions
29
Hans Wennborg3e67bab2021-04-08 11:34:3130namespace safe_browsing {
31class PasswordProtectionService;
32} // namespace safe_browsing
33
34namespace ui {
35class Event;
36} // namespace ui
37
Illia Klimov15550f752022-08-11 19:33:1038namespace url {
39class Origin;
40}
41
Mugdha Lakhani00b27a02020-03-24 13:41:3142class HostContentSettingsMap;
43class StatefulSSLHostStateDelegate;
44
45// PageInfoDelegate allows an embedder to customize PageInfo logic.
Mugdha Lakhani83baeab2020-03-20 13:08:2346class PageInfoDelegate {
47 public:
48 virtual ~PageInfoDelegate() = default;
49
Ken Buchanan76365d12021-04-20 18:46:1950 // Return the |ObjectPermissionContextBase| corresponding to the content
51 // settings type, |type|. Returns a nullptr for content settings for which
52 // there's no ObjectPermissionContextBase.
53 virtual permissions::ObjectPermissionContextBase* GetChooserContext(
Mugdha Lakhani1de9c492020-03-23 17:35:4054 ContentSettingsType type) = 0;
55
Mugdha Lakhani09e02f622020-03-21 19:48:0356#if BUILDFLAG(FULL_SAFE_BROWSING)
57 // Helper methods requiring access to PasswordProtectionService.
58 virtual safe_browsing::PasswordProtectionService*
59 GetPasswordProtectionService() const = 0;
60 virtual void OnUserActionOnPasswordUi(
Mugdha Lakhani09e02f622020-03-21 19:48:0361 safe_browsing::WarningAction action) = 0;
Jan Wilken Dörriefa241ba2021-03-11 17:57:0162 virtual std::u16string GetWarningDetailText() = 0;
Mugdha Lakhani09e02f622020-03-21 19:48:0363#endif
64 // Get permission status for the permission associated with ContentSetting of
65 // type |type|.
Illia Klimov2c6138b2023-08-14 09:39:2566 virtual content::PermissionResult GetPermissionResult(
Illia Klimov15550f752022-08-11 19:33:1067 blink::PermissionType permission,
Christian Dullwebera475f4a2023-08-07 17:04:1368 const url::Origin& origin,
69 const absl::optional<url::Origin>& requesting_origin) = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:3570#if !BUILDFLAG(IS_ANDROID)
Zofia Salata08b4f902022-08-22 13:16:4571 // Returns absl::nullopt if `site_url` is not recognised as a member of any
72 // FPS or if FPS functionality is not allowed .
73 virtual absl::optional<std::u16string> GetFpsOwner(const GURL& site_url) = 0;
Zofia Salataa7419752022-09-23 12:35:2274 virtual bool IsFpsManaged() = 0;
Zofia Salata08b4f902022-08-22 13:16:4575
Colin Blundelle70a6d82021-05-04 12:03:1976 // Creates an infobars::ContentInfoBarManager and an InfoBarDelegate using it,
77 // if possible. Returns true if an InfoBarDelegate was created, false
78 // otherwise.
Mugdha Lakhani00b27a02020-03-24 13:41:3179 virtual bool CreateInfoBarDelegate() = 0;
80
Zofia Salata47a06f12022-08-29 13:07:5581 virtual std::unique_ptr<content_settings::CookieControlsController>
82 CreateCookieControlsController() = 0;
Zelin Liu14035b52023-04-28 21:29:4383
84 virtual bool IsIsolatedWebApp() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:3185 virtual void ShowSiteSettings(const GURL& site_url) = 0;
Zofia Salataea40da6d2022-08-03 07:37:5886 virtual void ShowCookiesSettings() = 0;
Zofia Salata9b3ff0a2022-09-05 09:30:4787 virtual void ShowAllSitesSettingsFilteredByFpsOwner(
88 const std::u16string& fps_owner) = 0;
Olesia Marukhno3ed46b42021-03-23 15:26:3989 virtual void OpenCookiesDialog() = 0;
90 virtual void OpenCertificateDialog(net::X509Certificate* certificate) = 0;
91 virtual void OpenConnectionHelpCenterPage(const ui::Event& event) = 0;
92 virtual void OpenSafetyTipHelpCenterPage() = 0;
Olesia Marukhno3acaef22021-06-25 10:26:2293 virtual void OpenContentSettingsExceptions(
94 ContentSettingsType content_settings_type) = 0;
sauski9fb88822021-07-16 18:44:0195 virtual void OnPageInfoActionOccurred(PageInfo::PageInfoAction action) = 0;
96 virtual void OnUIClosing() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:3197#endif
Zelin Liu14035b52023-04-28 21:29:4398
99 virtual std::u16string GetSubjectName(const GURL& url) = 0;
100
Mugdha Lakhani00b27a02020-03-24 13:41:31101 virtual permissions::PermissionDecisionAutoBlocker*
102 GetPermissionDecisionAutoblocker() = 0;
103
104 // Service for managing SSL error page bypasses. Used to revoke bypass
105 // decisions by users.
106 virtual StatefulSSLHostStateDelegate* GetStatefulSSLHostStateDelegate() = 0;
107
108 // The |HostContentSettingsMap| is the service that provides and manages
109 // content settings (aka. site permissions).
110 virtual HostContentSettingsMap* GetContentSettings() = 0;
111
Justin Mironce1eb00a2020-08-20 15:57:38112 // The subresource filter service determines whether ads should be blocked on
113 // the site and relevant permission prompts should be shown respectively.
114 virtual bool IsSubresourceFilterActivated(const GURL& site_url) = 0;
115
Tommy Steimeld63e3ca52023-08-22 13:23:11116 // True if the site has registered for auto picture-in-picture.
117 virtual bool HasAutoPictureInPictureBeenRegistered() = 0;
118
Mugdha Lakhani3c22480d42020-04-24 12:43:42119 virtual std::unique_ptr<
Carlos Caballerob4283202020-08-10 14:40:46120 content_settings::PageSpecificContentSettings::Delegate>
121 GetPageSpecificContentSettingsDelegate() = 0;
Alvin Lam32648392023-09-28 10:07:58122
Mugdha Lakhani00b27a02020-03-24 13:41:31123 virtual bool IsContentDisplayedInVrHeadset() = 0;
Mugdha Lakhani65bd7e52020-03-31 19:26:16124 virtual security_state::SecurityLevel GetSecurityLevel() = 0;
125 virtual security_state::VisibleSecurityState GetVisibleSecurityState() = 0;
Theodore Olsauskas-Warren131d53e2023-05-17 15:08:02126 virtual void OnCookiesPageOpened() = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:35127#if BUILDFLAG(IS_ANDROID)
Mugdha Lakhani2c21fc662020-05-06 15:33:12128 // Gets the name of the embedder.
Jan Wilken Dörriefa241ba2021-03-11 17:57:01129 virtual const std::u16string GetClientApplicationName() = 0;
Mugdha Lakhani2c21fc662020-05-06 15:33:12130#endif
Chris Thompsond742cd92023-05-23 22:18:01131 virtual bool IsHttpsFirstModeEnabled() = 0;
Mugdha Lakhani83baeab2020-03-20 13:08:23132};
133
Mugdha Lakhanib6762162020-03-30 10:23:25134#endif // COMPONENTS_PAGE_INFO_PAGE_INFO_DELEGATE_H_