blob: 5af907e305ff4e7ebe9164a50ae18c2f5361eaaf [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
Arthur Sonzognic571efb2024-01-26 20:26:188#include <optional>
Jan Wilken Dörriead587c32021-03-11 14:09:279#include <string>
10
Mugdha Lakhani00b27a02020-03-24 13:41:3111#include "build/build_config.h"
Carlos Caballerob4283202020-08-10 14:40:4612#include "components/content_settings/browser/page_specific_content_settings.h"
Mugdha Lakhani83baeab2020-03-20 13:08:2313#include "components/content_settings/core/common/content_settings_types.h"
sauski9fb88822021-07-16 18:44:0114#include "components/page_info/page_info.h"
Mugdha Lakhani00b27a02020-03-24 13:41:3115#include "components/permissions/permission_uma_util.h"
Mugdha Lakhani09e02f622020-03-21 19:48:0316#include "components/safe_browsing/buildflags.h"
Colin Blundell51fe5642021-06-25 11:58:3717#include "components/safe_browsing/core/browser/password_protection/metrics_util.h"
Mugdha Lakhani65bd7e52020-03-31 19:26:1618#include "components/security_state/core/security_state.h"
Illia Klimov2c6138b2023-08-14 09:39:2519#include "content/public/browser/permission_result.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,
Arthur Sonzognic571efb2024-01-26 20:26:1869 const std::optional<url::Origin>& requesting_origin) = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:3570#if !BUILDFLAG(IS_ANDROID)
Arthur Sonzognic571efb2024-01-26 20:26:1871 // Returns std::nullopt if `site_url` is not recognised as a member of any
Kene Okoye4f4f9b12024-08-14 18:36:3772 // RWS or if RWS functionality is not allowed .
73 virtual std::optional<std::u16string> GetRwsOwner(const GURL& site_url) = 0;
Fiona Macintoshf9458302025-03-20 12:51:1074 virtual bool IsRwsManaged(const GURL& site_url) = 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;
Michelle Abreoa74527a2025-05-15 19:57:4687 virtual void ShowIncognitoSettings() = 0;
Kene Okoye4f4f9b12024-08-14 18:36:3788 virtual void ShowAllSitesSettingsFilteredByRwsOwner(
Fiona Macintosh38233052024-10-08 08:43:4289 const std::u16string& rws_owner) = 0;
Andrey Davydov3c7ed1992025-04-11 14:35:4790 virtual void ShowSyncSettings() = 0;
Olesia Marukhno3ed46b42021-03-23 15:26:3991 virtual void OpenCookiesDialog() = 0;
92 virtual void OpenCertificateDialog(net::X509Certificate* certificate) = 0;
93 virtual void OpenConnectionHelpCenterPage(const ui::Event& event) = 0;
94 virtual void OpenSafetyTipHelpCenterPage() = 0;
Daniel Ruberyed446752024-10-24 16:22:3495 virtual void OpenSafeBrowsingHelpCenterPage(const ui::Event& event) = 0;
Olesia Marukhno3acaef22021-06-25 10:26:2296 virtual void OpenContentSettingsExceptions(
97 ContentSettingsType content_settings_type) = 0;
Filipa Senra8d4230552024-02-21 15:42:5698 virtual void OnPageInfoActionOccurred(page_info::PageInfoAction action) = 0;
sauski9fb88822021-07-16 18:44:0199 virtual void OnUIClosing() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:31100#endif
Zelin Liu14035b52023-04-28 21:29:43101
102 virtual std::u16string GetSubjectName(const GURL& url) = 0;
103
Mugdha Lakhani00b27a02020-03-24 13:41:31104 virtual permissions::PermissionDecisionAutoBlocker*
105 GetPermissionDecisionAutoblocker() = 0;
106
107 // Service for managing SSL error page bypasses. Used to revoke bypass
108 // decisions by users.
109 virtual StatefulSSLHostStateDelegate* GetStatefulSSLHostStateDelegate() = 0;
110
111 // The |HostContentSettingsMap| is the service that provides and manages
112 // content settings (aka. site permissions).
113 virtual HostContentSettingsMap* GetContentSettings() = 0;
114
Justin Mironce1eb00a2020-08-20 15:57:38115 // The subresource filter service determines whether ads should be blocked on
116 // the site and relevant permission prompts should be shown respectively.
117 virtual bool IsSubresourceFilterActivated(const GURL& site_url) = 0;
118
Tommy Steimeld63e3ca52023-08-22 13:23:11119 // True if the site has registered for auto picture-in-picture.
120 virtual bool HasAutoPictureInPictureBeenRegistered() = 0;
121
Mugdha Lakhani3c22480d42020-04-24 12:43:42122 virtual std::unique_ptr<
Carlos Caballerob4283202020-08-10 14:40:46123 content_settings::PageSpecificContentSettings::Delegate>
124 GetPageSpecificContentSettingsDelegate() = 0;
Alvin Lam32648392023-09-28 10:07:58125
Mugdha Lakhani00b27a02020-03-24 13:41:31126 virtual bool IsContentDisplayedInVrHeadset() = 0;
Mugdha Lakhani65bd7e52020-03-31 19:26:16127 virtual security_state::SecurityLevel GetSecurityLevel() = 0;
128 virtual security_state::VisibleSecurityState GetVisibleSecurityState() = 0;
Theodore Olsauskas-Warren131d53e2023-05-17 15:08:02129 virtual void OnCookiesPageOpened() = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:35130#if BUILDFLAG(IS_ANDROID)
Mugdha Lakhani2c21fc662020-05-06 15:33:12131 // Gets the name of the embedder.
Jan Wilken Dörriefa241ba2021-03-11 17:57:01132 virtual const std::u16string GetClientApplicationName() = 0;
Mugdha Lakhani2c21fc662020-05-06 15:33:12133#endif
Chris Thompsond742cd92023-05-23 22:18:01134 virtual bool IsHttpsFirstModeEnabled() = 0;
Maggie Jennings3d9296f82024-11-11 18:29:29135 virtual bool IsIncognitoProfile() = 0;
Mugdha Lakhani83baeab2020-03-20 13:08:23136};
137
Mugdha Lakhanib6762162020-03-30 10:23:25138#endif // COMPONENTS_PAGE_INFO_PAGE_INFO_DELEGATE_H_