From d459ad932dcd161739b467f8539ebb64c7e9f75a Mon Sep 17 00:00:00 2001 From: fen4flo <75260616+FlorianButz@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:19:40 +0100 Subject: [PATCH] feat: Add Arc's boosts implementation, b=no-bug, c=boosts (#11071) Co-authored-by: Mr. M Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com> --- crowdin.yml | 2 + locales/en-US/browser/browser/zen-boosts.ftl | 58 + prefs/zen/boosts.yaml | 9 + .../base/content/zen-assets.jar.inc.mn | 1 + .../base/content/zen-locales.inc.xhtml | 1 + .../base/content/zen-panels/site-data.inc | 14 + src/browser/themes/shared/zen-icons/icons.css | 147 +- .../themes/shared/zen-icons/jar.inc.mn | 57 + .../nucleo/arrow-rotate-anticlockwise.svg | 31 + .../themes/shared/zen-icons/nucleo/block.svg | 31 + .../zen-icons/nucleo/blocked-element.svg | 5 + .../themes/shared/zen-icons/nucleo/bolt.svg | 31 + .../themes/shared/zen-icons/nucleo/boost.svg | 28 + .../zen-icons/nucleo/brackets-curly.svg | 31 + .../zen-icons/nucleo/close-filled-round.svg | 28 + .../shared/zen-icons/nucleo/eyedropper.svg | 5 + .../themes/shared/zen-icons/nucleo/hammer.svg | 5 + .../shared/zen-icons/nucleo/lightbulb.svg | 31 + .../zen-icons/nucleo/paintbrush-fill.svg | 27 + .../shared/zen-icons/nucleo/paintbrush.svg | 36 + .../shared/zen-icons/nucleo/sliders.svg | 31 + .../zen-icons/nucleo/square-wand-sparkle.svg | 36 + .../zen-icons/nucleo/text-lowercase.svg | 31 + .../shared/zen-icons/nucleo/text-size.svg | 31 + .../zen-icons/nucleo/text-title-case.svg | 31 + .../zen-icons/nucleo/text-uppercase.svg | 31 + .../shared/zen-icons/nucleo/wand-sparkle.svg | 36 + src/docshell/base/BrowsingContext-h.patch | 31 + .../BrowsingContext-webidl.patch | 14 + src/gfx/layers/AnimationInfo-cpp.patch | 21 + src/layout/base/PresShell-cpp.patch | 21 + src/layout/generic/ViewportFrame-cpp.patch | 33 + src/layout/painting/nsDisplayList-cpp.patch | 23 + src/layout/style/StyleColor-cpp.patch | 30 + src/zen/boosts/ZenBoostStyles.sys.mjs | 119 ++ src/zen/boosts/ZenBoostsEditor.mjs | 1223 +++++++++++++++++ src/zen/boosts/ZenBoostsManager.sys.mjs | 754 ++++++++++ src/zen/boosts/ZenSelectorComponent.sys.mjs | 759 ++++++++++ src/zen/boosts/ZenZapDissolve.sys.mjs | 599 ++++++++ src/zen/boosts/ZenZapOverlayChild.sys.mjs | 391 ++++++ src/zen/boosts/actors/ZenBoostsChild.sys.mjs | 505 +++++++ src/zen/boosts/actors/ZenBoostsParent.sys.mjs | 159 +++ src/zen/boosts/components.conf | 15 + src/zen/boosts/jar.inc.mn | 14 + src/zen/boosts/moz.build | 36 + src/zen/boosts/nsIZenBoostsBackend.idl | 19 + src/zen/boosts/nsZenBoostsBackend.cpp | 297 ++++ src/zen/boosts/nsZenBoostsBackend.h | 81 ++ src/zen/boosts/zen-advanced-color-options.css | 52 + src/zen/boosts/zen-boost-editor.xhtml | 151 ++ src/zen/boosts/zen-boosts.css | 789 +++++++++++ src/zen/boosts/zen-selector.css | 200 +++ src/zen/boosts/zen-zap.css | 158 +++ src/zen/common/styles/zen-popup.css | 1 + .../common/styles/zen-single-components.css | 68 +- src/zen/common/sys/ZenActorsManager.sys.mjs | 18 + src/zen/drag-and-drop/nsZenDragAndDrop.cpp | 2 +- src/zen/drag-and-drop/nsZenDragAndDrop.h | 3 +- src/zen/images/boost-indicator.svg | 50 + src/zen/mods/nsZenModsBackend.cpp | 4 +- src/zen/moz.build | 1 + src/zen/tests/boosts/browser.toml | 12 + .../boosts/browser_boost_selector_basic.js | 38 + .../boosts/browser_boost_selector_invalid.js | 26 + .../boosts/browser_boost_selector_nthchild.js | 39 + src/zen/tests/boosts/head.js | 7 + src/zen/tests/moz.build | 1 + src/zen/urlbar/ZenSiteDataPanel.sys.mjs | 209 ++- src/zen/workspaces/ZenGradientGenerator.mjs | 5 +- 69 files changed, 7762 insertions(+), 21 deletions(-) create mode 100644 locales/en-US/browser/browser/zen-boosts.ftl create mode 100644 prefs/zen/boosts.yaml create mode 100644 src/browser/themes/shared/zen-icons/nucleo/arrow-rotate-anticlockwise.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/block.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/blocked-element.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/bolt.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/boost.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/brackets-curly.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/close-filled-round.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/eyedropper.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/hammer.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/lightbulb.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/paintbrush-fill.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/paintbrush.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/sliders.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/square-wand-sparkle.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/text-lowercase.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/text-size.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/text-title-case.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/text-uppercase.svg create mode 100644 src/browser/themes/shared/zen-icons/nucleo/wand-sparkle.svg create mode 100644 src/docshell/base/BrowsingContext-h.patch create mode 100644 src/dom/chrome-webidl/BrowsingContext-webidl.patch create mode 100644 src/gfx/layers/AnimationInfo-cpp.patch create mode 100644 src/layout/base/PresShell-cpp.patch create mode 100644 src/layout/generic/ViewportFrame-cpp.patch create mode 100644 src/layout/painting/nsDisplayList-cpp.patch create mode 100644 src/layout/style/StyleColor-cpp.patch create mode 100644 src/zen/boosts/ZenBoostStyles.sys.mjs create mode 100644 src/zen/boosts/ZenBoostsEditor.mjs create mode 100644 src/zen/boosts/ZenBoostsManager.sys.mjs create mode 100644 src/zen/boosts/ZenSelectorComponent.sys.mjs create mode 100644 src/zen/boosts/ZenZapDissolve.sys.mjs create mode 100644 src/zen/boosts/ZenZapOverlayChild.sys.mjs create mode 100644 src/zen/boosts/actors/ZenBoostsChild.sys.mjs create mode 100644 src/zen/boosts/actors/ZenBoostsParent.sys.mjs create mode 100644 src/zen/boosts/components.conf create mode 100644 src/zen/boosts/jar.inc.mn create mode 100644 src/zen/boosts/moz.build create mode 100644 src/zen/boosts/nsIZenBoostsBackend.idl create mode 100644 src/zen/boosts/nsZenBoostsBackend.cpp create mode 100644 src/zen/boosts/nsZenBoostsBackend.h create mode 100644 src/zen/boosts/zen-advanced-color-options.css create mode 100644 src/zen/boosts/zen-boost-editor.xhtml create mode 100644 src/zen/boosts/zen-boosts.css create mode 100644 src/zen/boosts/zen-selector.css create mode 100644 src/zen/boosts/zen-zap.css create mode 100644 src/zen/images/boost-indicator.svg create mode 100644 src/zen/tests/boosts/browser.toml create mode 100644 src/zen/tests/boosts/browser_boost_selector_basic.js create mode 100644 src/zen/tests/boosts/browser_boost_selector_invalid.js create mode 100644 src/zen/tests/boosts/browser_boost_selector_nthchild.js create mode 100644 src/zen/tests/boosts/head.js diff --git a/crowdin.yml b/crowdin.yml index a9f073ac0..469c8a1cd 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -20,3 +20,5 @@ files: translation: browser/browser/preferences/zen-preferences.ftl - source: en-US/browser/browser/zen-folders.ftl translation: browser/browser/zen-folders.ftl + - source: en-US/browser/browser/zen-boosts.ftl + translation: browser/browser/zen-boosts.ftl diff --git a/locales/en-US/browser/browser/zen-boosts.ftl b/locales/en-US/browser/browser/zen-boosts.ftl new file mode 100644 index 000000000..65f67d689 --- /dev/null +++ b/locales/en-US/browser/browser/zen-boosts.ftl @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +zen-boost-edit-rename = + .label = Rename Boost +zen-boost-edit-shuffle = + .label = Shuffle Vibes +zen-boost-edit-reset = + .label = Reset All Edits +zen-boost-edit-delete = + .label = Delete Boost +zen-boost-size = Size +zen-boost-zap = Zap +zen-boost-code = Code +zen-boost-back = Back +zen-boost-shuffle = + .tooltiptext = Shuffle Boost Settings +zen-boost-invert = + .tooltiptext = Smart Invert Colors +zen-boost-controls = + .tooltiptext = Advanced Color Controls +zen-boost-disable = + .tooltiptext = Disable Color Adjustments +zen-boost-text-case-toggle = + .tooltiptext = Toggle Text Case +zen-boost-css-picker = + .tooltiptext = Pick Selector +zen-boost-css-inspector = + .tooltiptext = Open Inspector +zen-bootst-color-contrast = Contrast +zen-bootst-color-brightness = Brightness +zen-bootst-color-original-saturation = Original Saturation +zen-add-zap-helper = Click elements on the page to Zap them +zen-remove-zap-helper = ← Click to Unzap +zen-select-this = Insert selector for this +zen-select-related = Insert selector for related +zen-select-cancel = Cancel +zen-zap-this = Zap this +zen-zap-related = Zap all related elements +zen-zap-cancel = Cancel +zen-zap-done = Done +zen-unzap-tooltip = + { + $elementCount -> + [0] No elements zapped + [1] { $elementCount } element zapped + *[other] { $elementCount } elements zapped + } +zen-boost-save = + .tooltiptext = Export Boost +zen-boost-load = + .tooltiptext = Import Boost +zen-panel-ui-boosts-exported-message = Boost exported! +zen-site-data-boosts = Boosts +zen-site-data-create-boost = + .tooltiptext = Create new boost +zen-boost-rename-boost-prompt = Rename Boost? \ No newline at end of file diff --git a/prefs/zen/boosts.yaml b/prefs/zen/boosts.yaml new file mode 100644 index 000000000..e7c6bcef8 --- /dev/null +++ b/prefs/zen/boosts.yaml @@ -0,0 +1,9 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +- name: zen.boosts.enabled + value: "@IS_TWILIGHT@" + +- name: zen.boosts.dissolve-on-zap + value: true diff --git a/src/browser/base/content/zen-assets.jar.inc.mn b/src/browser/base/content/zen-assets.jar.inc.mn index 2a44065d4..0a8f8ab97 100644 --- a/src/browser/base/content/zen-assets.jar.inc.mn +++ b/src/browser/base/content/zen-assets.jar.inc.mn @@ -18,4 +18,5 @@ #include ../../../zen/images/jar.inc.mn #include ../../../zen/vendor/jar.inc.mn #include ../../../zen/fonts/jar.inc.mn +#include ../../../zen/boosts/jar.inc.mn #include ../../../zen/live-folders/jar.inc.mn diff --git a/src/browser/base/content/zen-locales.inc.xhtml b/src/browser/base/content/zen-locales.inc.xhtml index 2040154fa..ed52e6fca 100644 --- a/src/browser/base/content/zen-locales.inc.xhtml +++ b/src/browser/base/content/zen-locales.inc.xhtml @@ -9,5 +9,6 @@ + diff --git a/src/browser/base/content/zen-panels/site-data.inc b/src/browser/base/content/zen-panels/site-data.inc index 4929a1645..fb85e6f0b 100644 --- a/src/browser/base/content/zen-panels/site-data.inc +++ b/src/browser/base/content/zen-panels/site-data.inc @@ -75,6 +75,18 @@ data-l10n-id="unified-extensions-manage-extensions" hidden="true" /> + + + + + + +