diff --git a/docs/PATCHES.md b/docs/PATCHES.md index 06b26064..bb68c85c 100644 --- a/docs/PATCHES.md +++ b/docs/PATCHES.md @@ -23,7 +23,7 @@ |**Add flag to disable external intent requests**
Tue, 25 May 2021 19:46:14 +0200
File: [Add-flag-to-disable-external-intent-requests.patch](/build/patches/Add-flag-to-disable-external-intent-requests.patch)
Author: csagan5
Context:
License: GPL-3.0-only |Adds a new flag that allows to control the switch with same name;
when flag is disabled no external intent will ever be allowed,
for any URL except for the tel: schema.
This also reverts commit b710cefb53b558a8bcd884f6baf0229ba4225721 and
enables IntentBlockExternalFormRedirectsNoGesture.| |**Add flag to disable vibration**
Sun, 27 Jun 2021 17:35:39 +0200
File: [Add-flag-to-disable-vibration.patch](/build/patches/Add-flag-to-disable-vibration.patch)
Author: csagan5
Context:
License: GPL-3.0-only || |**Add kill switch for unsupported clangd flags**
Thu, 20 Oct 2022 09:34:48 +0000
File: [Add-kill-switch-for-unsupported-clangd-flags.patch](/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch)
Author: uazo
Context:
License: GPL-3.0-only |Allows build with clangd by suppressing unsupported parameters| -|**Add lifetime options for permissions**
Fri, 8 Apr 2022 11:04:04 +0000
File: [Add-lifetime-options-for-permissions.patch](/build/patches/Add-lifetime-options-for-permissions.patch)
Author: uazo
Context:
License: GPL-3.0-only |Indicate the session mode for content-settings by using the constraint `content_settings::SessionModel` as
UserSession when setting the value, and also make use of an expiration time value.
This is used in Chromium for `ClientHints` but it is generally possible to use this functionality when a
specific value needs to be persisted by origin.
All content settings of this type are not saved on disk (except for the `Forever` option), allowing user to
reset the status each time application is restarted.
There are 4 main areas affected to introduce the functionality:
* components/content_settings
A new `content_settings::LifetimeMode` enum value is defined to specify the user's
choice (Always, OnlyThisTime, UntilOriginClosed, UntilBrowserClosed).
Enumeration is also generated for java by adding it in `content_settings_enums_javagen` (gn).
This is mainly used in `content_settings_utils.cc` to create a specialised `content_settings::ContentSettingConstraints`
that is then used in `SetContentSettingDefaultScope()` by `PermissionContextBase::UpdateContentSetting`.
Existing Chromium data structures do not provide a specific property to define a choice which is instead encoded through
the `ContentSettingConstraints`; this approach is already used in other parts of the Chromium codebase so it is not
novel here.
Therefore, `content_settings::GetConstraintSessionExpiration()` and `content_settings::IsConstraintSessionExpiration()`
manage the lifetime modes of the session content-settings.
The modificaiton also adds the session pattern to the ContentSettingPatternSource so that it is available for the UI.
* components/permissions
Lifetime support is added to the permissions; most of the changes are caused by the fact that it is necessary to report
the value selected by the user from the Java UI managed by `components/browser_ui` up to
`PermissionContextBase::UpdateContentSetting()`, without necessarily having to modify all requests that are not
related to geolocation/camera/microphone. The approach used is a new
`PermissionRequest::PermissionDecidedCallbackWithLifetime` used by an overload of
`PermissionContextBase::CreatePermissionRequest` so that options are present only for the specific content-settings
(see `PermissionDialogModel.java`).
For other permissions no behaviour is changed (see `PermissionDialogDelegate::Accept`); for geolocation it was
necessary to act directly in the specific context, because, unlike microphone/camera, the content-setting value is
inserted in its specific method (`FinishNotifyPermissionSet`, that calls the callback), even if the class always
derives from `PermissionContextBase`.
* components/page_info
Some changes needed to see in the summary of the `page_info` the text "(only this session)"
(aka `page_info_android_permission_session_permission`) through adding a new property "is_user_session" in
`PageInfoPermissionEntry` (Java).
* components/browser_ui
Changes to the Settings UI to show "(only this session)" in the specific content-setting.
The same view is used both in the settings and in the page_info.
For the management of `UntilOriginClosed` the logic used by flag `kOneTimeGeolocationPermission` was used; this flag
is active only in the desktop (files `last_tab_standing_tracker_*`). It is a class that manages a list of the active
origins and allows to perform operations when all the tabs relating to that origin have been closed, in this case
deleting the session content settings of `UntilOriginClosed`.
See also: https://github.com/bromite/bromite/issues/1549| +|**Add lifetime options for permissions**
Fri, 8 Apr 2022 11:04:04 +0000
File: [Add-lifetime-options-for-permissions.patch](/build/patches/Add-lifetime-options-for-permissions.patch)
Author: uazo
Context:
License: GPL-3.0-only |Indicate the session mode for content-settings by using the constraint `content_settings::SessionModel` as
UserSession when setting the value, and also make use of an expiration time value.
This is used in Chromium for `ClientHints` but it is generally possible to use this functionality when a
specific value needs to be persisted by origin.
All content settings of this type are not saved on disk (except for the `Forever` option), allowing user to
reset the status each time application is restarted.
There are 4 main areas affected to introduce the functionality:
* components/content_settings
A new `content_settings::LifetimeMode` enum value is defined to specify the user's
choice (Always, OnlyThisTime, UntilOriginClosed, UntilBrowserClosed).
Enumeration is also generated for java by adding it in `content_settings_enums_javagen` (gn).
This is mainly used in `content_settings_utils.cc` to create a specialised `content_settings::ContentSettingConstraints`
that is then used in `SetContentSettingDefaultScope()` by `PermissionContextBase::UpdateContentSetting`.
Existing Chromium data structures do not provide a specific property to define a choice which is instead encoded through
the `ContentSettingConstraints`; this approach is already used in other parts of the Chromium codebase so it is not
novel here.
Therefore, `content_settings::GetConstraintSessionExpiration()` and `content_settings::IsConstraintSessionExpiration()`
manage the lifetime modes of the session content-settings.
The modification also adds the session pattern to the ContentSettingPatternSource so that it is available for the UI.
* components/permissions
Lifetime support is added to the permissions; most of the changes are caused by the fact that it is necessary to report
the value selected by the user from the Java UI managed by `components/browser_ui` up to
`PermissionContextBase::UpdateContentSetting()`, without necessarily having to modify all requests that are not
related to geolocation/camera/microphone. The approach used is a new
`PermissionRequest::PermissionDecidedCallbackWithLifetime` used by an overload of
`PermissionContextBase::CreatePermissionRequest` so that options are present only for the specific content-settings
(see `PermissionDialogModel.java`).
For other permissions no behaviour is changed (see `PermissionDialogDelegate::Accept`); for geolocation it was
necessary to act directly in the specific context, because, unlike microphone/camera, the content-setting value is
inserted in its specific method (`FinishNotifyPermissionSet`, that calls the callback), even if the class always
derives from `PermissionContextBase`.
* components/page_info
Some changes needed to see in the summary of the `page_info` the text "(only this session)"
(aka `page_info_android_permission_session_permission`) through adding a new property "is_user_session" in
`PageInfoPermissionEntry` (Java).
* components/browser_ui
Changes to the Settings UI to show "(only this session)" in the specific content-setting.
The same view is used both in the settings and in the page_info.
For the management of `UntilOriginClosed` the logic used by flag `kOneTimeGeolocationPermission` was used; this flag
is active only in the desktop (files `last_tab_standing_tracker_*`). It is a class that manages a list of the active
origins and allows to perform operations when all the tabs relating to that origin have been closed, in this case
deleting the session content settings of `UntilOriginClosed`.
See also: https://github.com/bromite/bromite/issues/1549| |**Add menu item to bookmark all tabs**
Thu, 18 Feb 2021 21:22:52 +0100
File: [Add-menu-item-to-bookmark-all-tabs.patch](/build/patches/Add-menu-item-to-bookmark-all-tabs.patch)
Author: csagan5
Context:
License: GPL-3.0-only || |**Add menu item to view source**
Mon, 13 Jul 2020 00:37:06 +0200
File: [Add-menu-item-to-view-source.patch](/build/patches/Add-menu-item-to-view-source.patch)
Author: csagan5
Context:
License: GPL-3.0-only || |**Add option to disable snapshots**
Mon, 21 Aug 2023 14:03:25 +0000
File: [Add-option-to-disable-snapshots.patch](/build/patches/Add-option-to-disable-snapshots.patch)
Author: uazo
Context:
License: GPL-2.0-or-later || @@ -39,7 +39,7 @@ |**Add support to jxl**
Tue, 24 Oct 2023 10:02:00 +0000
File: [Add-support-to-jxl.patch](/build/patches/Add-support-to-jxl.patch)
Author: uazo
Context:
License: |Partial revert of https://chromium-review.googlesource.com/c/chromium/src/+/4095497
Enabled by default| |**Add webGL site setting**
Tue, 3 May 2022 14:44:11 +0000
File: [Add-webGL-site-setting.patch](/build/patches/Add-webGL-site-setting.patch)
Author: uazo
Context:
License: GPL-3.0-only |Do not provide any device information when serving context creation errors.
Requires patch: Content-settings-infrastructure.patch| |**Add webRTC site settings**
Fri, 6 May 2022 14:27:17 +0000
File: [Add-webRTC-site-settings.patch](/build/patches/Add-webRTC-site-settings.patch)
Author: uazo
Context:
License: GPL-3.0-only |Requires patch: Content-settings-infrastructure.patch| -|**Allow DocumentPiP if PopupsAndRedirects are active**
Mon, 7 Aug 2023 11:02:18 +0000
File: [Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch](/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch)
Author: uazo
Context:
License: GPL-2.0-or-later |Allow documentPiP api use only with content setting popup allowed| +|**Allow DocumentPiP if PopupsAndRedirects are active**
Mon, 7 Aug 2023 11:02:18 +0000
File: [Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch](/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch)
Author: uazo
Context:
License: GPL-2.0-or-later |Allow documentPiP api use only with content setting popup allowed
and disables the possibility of verifying the activation of PIP
in the device with document.pictureInPictureEnabled| |**Allow building without enable_reporting**
Fri, 22 May 2020 22:43:27 -0400
File: [Allow-building-without-enable_reporting.patch](/build/patches/Allow-building-without-enable_reporting.patch)
Author: Zoraver
Context:
License: GPL-3.0-only || |**Allow building without supervised users**
Mon, 21 Feb 2022 01:24:11 +0100
File: [Allow-building-without-supervised-users.patch](/build/patches/Allow-building-without-supervised-users.patch)
Author: csagan5
Context:
License: GPL-3.0-only || |**Allow playing audio in background**
Thu, 2 Nov 2017 18:21:16 +0200
File: [Allow-playing-audio-in-background.patch](/build/patches/Allow-playing-audio-in-background.patch)
Author: AlexeyBarabash
Context:
License: GPL-3.0-only || @@ -112,6 +112,7 @@ |**Disable offline pages in CCT**
Thu, 30 May 2019 03:37:45 +0200
File: [Disable-offline-pages-in-CCT.patch](/build/patches/Disable-offline-pages-in-CCT.patch)
Author: csagan5
Context:
License: GPL-3.0-only || |**Disable omission of URL elements**
Wed, 11 Oct 2017 23:24:58 +0200
File: [Disable-omission-of-URL-elements.patch](/build/patches/Disable-omission-of-URL-elements.patch)
Author: uazo
Context:
License: GPL-2.0-or-later |Disabling some omissions of complete urls| |**Disable plugins enumeration**
Thu, 22 Mar 2018 22:38:00 +0100
File: [Disable-plugins-enumeration.patch](/build/patches/Disable-plugins-enumeration.patch)
Author: csagan5
Context:
License: GPL-3.0-only || +|**Disable prefers reduced motion**
Fri, 30 May 2025 10:29:39 +0000
File: [Disable-prefers-reduced-motion.patch](/build/patches/Disable-prefers-reduced-motion.patch)
Author: uazo
Context:
License: GPL-2.0-or-later |Disables the possibility of retrieving the device user setting via
css prefers-reduced-motion| |**Disable prefers-reduced-transparency media query**
Fri, 20 Oct 2023 14:53:41 +0000
File: [Disable-prefers-reduced-transparency-media-query.patch](/build/patches/Disable-prefers-reduced-transparency-media-query.patch)
Author: uazo
Context:
License: |This feature can be used for fingerprinting as it exposes a user preference| |**Disable privacy issues in password manager**
Tue, 14 Mar 2023 15:59:38 +0000
File: [Disable-privacy-issues-in-password-manager.patch](/build/patches/Disable-privacy-issues-in-password-manager.patch)
Author: uazo
Context:
License: GPL-2.0-or-later |Need: Add-cromite-flags-support.patch| |**Disable privacy sandbox**
Sat, 13 Nov 2021 09:17:06 +0000
File: [Disable-privacy-sandbox.patch](/build/patches/Disable-privacy-sandbox.patch)
Author: uazo
Context:
License: GPL-3.0-only |Remove UI from the settings and set the flags to inactive
Permanently removes FLoC support, disabling the download of LSH clusters,
the marking the history navigation and the javascript API and permission policies.
Also disable FirstPartySets and StorageAccessAPI.|