blob: 56db7850a93ac4f51634a6f959e9fc4712b94ad4 [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 Lakhani09e02f622020-03-21 19:48:0314#include "components/permissions/permission_result.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"
Mugdha Lakhani09e02f622020-03-21 19:48:0319
Illia Klimov15550f752022-08-11 19:33:1020namespace blink {
21enum class PermissionType;
22}
23
Mugdha Lakhani00b27a02020-03-24 13:41:3124namespace permissions {
Ken Buchanan76365d12021-04-20 18:46:1925class ObjectPermissionContextBase;
Mugdha Lakhani00b27a02020-03-24 13:41:3126class PermissionDecisionAutoBlocker;
27} // namespace permissions
28
Hans Wennborg3e67bab2021-04-08 11:34:3129namespace safe_browsing {
30class PasswordProtectionService;
31} // namespace safe_browsing
32
33namespace ui {
34class Event;
35} // namespace ui
36
Illia Klimov15550f752022-08-11 19:33:1037namespace url {
38class Origin;
39}
40
Mugdha Lakhani00b27a02020-03-24 13:41:3141class HostContentSettingsMap;
42class StatefulSSLHostStateDelegate;
43
44// PageInfoDelegate allows an embedder to customize PageInfo logic.
Mugdha Lakhani83baeab2020-03-20 13:08:2345class PageInfoDelegate {
46 public:
47 virtual ~PageInfoDelegate() = default;
48
Ken Buchanan76365d12021-04-20 18:46:1949 // Return the |ObjectPermissionContextBase| corresponding to the content
50 // settings type, |type|. Returns a nullptr for content settings for which
51 // there's no ObjectPermissionContextBase.
52 virtual permissions::ObjectPermissionContextBase* GetChooserContext(
Mugdha Lakhani1de9c492020-03-23 17:35:4053 ContentSettingsType type) = 0;
54
Mugdha Lakhani09e02f622020-03-21 19:48:0355#if BUILDFLAG(FULL_SAFE_BROWSING)
56 // Helper methods requiring access to PasswordProtectionService.
57 virtual safe_browsing::PasswordProtectionService*
58 GetPasswordProtectionService() const = 0;
59 virtual void OnUserActionOnPasswordUi(
Mugdha Lakhani09e02f622020-03-21 19:48:0360 safe_browsing::WarningAction action) = 0;
Jan Wilken Dörriefa241ba2021-03-11 17:57:0161 virtual std::u16string GetWarningDetailText() = 0;
Mugdha Lakhani09e02f622020-03-21 19:48:0362#endif
63 // Get permission status for the permission associated with ContentSetting of
64 // type |type|.
Illia Klimov15550f752022-08-11 19:33:1065 virtual permissions::PermissionResult GetPermissionResult(
66 blink::PermissionType permission,
67 const url::Origin& origin) = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:3568#if !BUILDFLAG(IS_ANDROID)
Zofia Salata08b4f902022-08-22 13:16:4569 // Returns absl::nullopt if `site_url` is not recognised as a member of any
70 // FPS or if FPS functionality is not allowed .
71 virtual absl::optional<std::u16string> GetFpsOwner(const GURL& site_url) = 0;
Zofia Salataa7419752022-09-23 12:35:2272 virtual bool IsFpsManaged() = 0;
Zofia Salata08b4f902022-08-22 13:16:4573
Colin Blundelle70a6d82021-05-04 12:03:1974 // Creates an infobars::ContentInfoBarManager and an InfoBarDelegate using it,
75 // if possible. Returns true if an InfoBarDelegate was created, false
76 // otherwise.
Mugdha Lakhani00b27a02020-03-24 13:41:3177 virtual bool CreateInfoBarDelegate() = 0;
78
Zofia Salata47a06f12022-08-29 13:07:5579 virtual std::unique_ptr<content_settings::CookieControlsController>
80 CreateCookieControlsController() = 0;
Zelin Liu14035b52023-04-28 21:29:4381
82 virtual bool IsIsolatedWebApp() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:3183 virtual void ShowSiteSettings(const GURL& site_url) = 0;
Zofia Salataea40da6d2022-08-03 07:37:5884 virtual void ShowCookiesSettings() = 0;
Zofia Salata9b3ff0a2022-09-05 09:30:4785 virtual void ShowAllSitesSettingsFilteredByFpsOwner(
86 const std::u16string& fps_owner) = 0;
Olesia Marukhno3ed46b42021-03-23 15:26:3987 virtual void OpenCookiesDialog() = 0;
88 virtual void OpenCertificateDialog(net::X509Certificate* certificate) = 0;
89 virtual void OpenConnectionHelpCenterPage(const ui::Event& event) = 0;
90 virtual void OpenSafetyTipHelpCenterPage() = 0;
Olesia Marukhno3acaef22021-06-25 10:26:2291 virtual void OpenContentSettingsExceptions(
92 ContentSettingsType content_settings_type) = 0;
sauski9fb88822021-07-16 18:44:0193 virtual void OnPageInfoActionOccurred(PageInfo::PageInfoAction action) = 0;
94 virtual void OnUIClosing() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:3195#endif
Zelin Liu14035b52023-04-28 21:29:4396
97 virtual std::u16string GetSubjectName(const GURL& url) = 0;
98
Mugdha Lakhani00b27a02020-03-24 13:41:3199 virtual permissions::PermissionDecisionAutoBlocker*
100 GetPermissionDecisionAutoblocker() = 0;
101
102 // Service for managing SSL error page bypasses. Used to revoke bypass
103 // decisions by users.
104 virtual StatefulSSLHostStateDelegate* GetStatefulSSLHostStateDelegate() = 0;
105
106 // The |HostContentSettingsMap| is the service that provides and manages
107 // content settings (aka. site permissions).
108 virtual HostContentSettingsMap* GetContentSettings() = 0;
109
Justin Mironce1eb00a2020-08-20 15:57:38110 // The subresource filter service determines whether ads should be blocked on
111 // the site and relevant permission prompts should be shown respectively.
112 virtual bool IsSubresourceFilterActivated(const GURL& site_url) = 0;
113
Mugdha Lakhani3c22480d42020-04-24 12:43:42114 virtual std::unique_ptr<
Carlos Caballerob4283202020-08-10 14:40:46115 content_settings::PageSpecificContentSettings::Delegate>
116 GetPageSpecificContentSettingsDelegate() = 0;
Mugdha Lakhani00b27a02020-03-24 13:41:31117 virtual bool IsContentDisplayedInVrHeadset() = 0;
Mugdha Lakhani65bd7e52020-03-31 19:26:16118 virtual security_state::SecurityLevel GetSecurityLevel() = 0;
119 virtual security_state::VisibleSecurityState GetVisibleSecurityState() = 0;
Xiaohan Wangd9e3b1f02022-01-14 14:48:35120#if BUILDFLAG(IS_ANDROID)
Mugdha Lakhani2c21fc662020-05-06 15:33:12121 // Gets the name of the embedder.
Jan Wilken Dörriefa241ba2021-03-11 17:57:01122 virtual const std::u16string GetClientApplicationName() = 0;
Mugdha Lakhani2c21fc662020-05-06 15:33:12123#endif
Mugdha Lakhani83baeab2020-03-20 13:08:23124};
125
Mugdha Lakhanib6762162020-03-30 10:23:25126#endif // COMPONENTS_PAGE_INFO_PAGE_INFO_DELEGATE_H_