Skip to content

Commit c809ef5

Browse files
Legend-Masterpewsheen
authored andcommitted
Add in a feature to embed user agent stylesheets
1 parent e7095e3 commit c809ef5

File tree

4 files changed

+76
-37
lines changed

4 files changed

+76
-37
lines changed

.github/workflows/release-versoview.yml

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,41 @@ env:
1010

1111
jobs:
1212
build-linux:
13-
runs-on: ubuntu-latest
13+
runs-on: ubuntu-22.04
1414
steps:
1515
- uses: actions/checkout@v4
16-
- uses: nixbuild/nix-quick-install-action@v28
1716

18-
- name: Restore and cache Nix store
19-
uses: nix-community/cache-nix-action@v5
20-
with:
21-
paths: |
22-
~/.cargo
23-
target/release/
24-
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', 'Cargo.lock', 'Cargo.toml') }}
25-
restore-prefixes-first-match: nix-${{ runner.os }}-
26-
gc-max-store-size-linux: 1073741824
27-
28-
- name: Add Nix channel
17+
- name: Run sccache-cache
18+
uses: mozilla-actions/[email protected]
19+
20+
# https://github.com/servo/servo/blob/a0730d7154e183a9b2d9a9282061e6c67d87a263/.github/workflows/linux.yml#L141
21+
- name: Set LIBCLANG_PATH # This is needed for bindgen in mozangle.
22+
run: echo "LIBCLANG_PATH=/usr/lib/llvm-14/lib" >> $GITHUB_ENV
23+
24+
- name: Install dependencies
2925
run: |
30-
nix-channel --add https://nixos.org/channels/nixos-24.05 nixpkgs
31-
nix-channel --update nixpkgs
26+
sudo apt-get update
27+
sudo apt install build-essential python3-pip ccache clang cmake curl \
28+
g++ git gperf libdbus-1-dev libfreetype6-dev libgl1-mesa-dri \
29+
libgles2-mesa-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev \
30+
gstreamer1.0-plugins-good libgstreamer-plugins-good1.0-dev \
31+
gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-dev \
32+
gstreamer1.0-plugins-ugly gstreamer1.0-plugins-base \
33+
libgstreamer-plugins-base1.0-dev gstreamer1.0-libav \
34+
libgstrtspserver-1.0-dev gstreamer1.0-tools libges-1.0-dev \
35+
libharfbuzz-dev liblzma-dev libunwind-dev libvulkan1 \
36+
libx11-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
37+
libxmu-dev libxmu6 libegl1-mesa-dev llvm-dev m4 xorg-dev sway \
38+
python3-mako
3239
3340
- name: Build
34-
run: nix-shell shell.nix --run 'cargo build --release'
41+
env:
42+
SCCACHE_GHA_ENABLED: true
43+
RUSTC_WRAPPER: 'sccache'
44+
run: cargo build --features embed-useragent-stylesheets --release
3545

3646
- name: Make archive
37-
run: nix-shell shell.nix --run 'cd ./target/release && tar -czvf verso-x86_64-unknown-linux-gnu.tar.gz versoview'
47+
run: cd ./target/release && tar -czvf verso-x86_64-unknown-linux-gnu.tar.gz versoview
3848

3949
- name: Upload artifact
4050
uses: actions/upload-artifact@v4
@@ -67,7 +77,7 @@ jobs:
6777
env:
6878
SCCACHE_GHA_ENABLED: true
6979
RUSTC_WRAPPER: "sccache"
70-
run: cargo build --release
80+
run: cargo build --features embed-useragent-stylesheets --release
7181

7282
- name: Make archive
7383
working-directory: ./target/release
@@ -80,6 +90,11 @@ jobs:
8090
path: ./target/release/verso-x86_64-pc-windows-msvc.tar.gz
8191

8292
build-mac:
93+
strategy:
94+
matrix:
95+
include:
96+
- target: aarch64-apple-darwin
97+
- target: x86_64-apple-darwin
8398
runs-on: macos-latest
8499
steps:
85100
- uses: actions/checkout@v4
@@ -102,25 +117,31 @@ jobs:
102117
curl https://gstreamer.freedesktop.org/data/pkg/osx/1.24.6/gstreamer-1.0-devel-1.24.6-universal.pkg -o develop.pkg
103118
sudo installer -pkg develop.pkg -target /
104119
120+
- name: Add rust target
121+
run: rustup target add ${{ matrix.target }}
122+
105123
- name: Build
106124
env:
107125
SCCACHE_GHA_ENABLED: true
108126
RUSTC_WRAPPER: "sccache"
109-
run: cargo build --release
127+
run: cargo build --target ${{ matrix.target }} --features embed-useragent-stylesheets --release
110128

111129
- name: Make archive
112-
working-directory: ./target/release
113-
run: tar -czvf verso-aarch64-apple-darwin.tar.gz versoview
130+
working-directory: ./target/${{ matrix.target }}/release
131+
run: tar -czvf verso-${{ matrix.target }}.tar.gz versoview
114132

115133
- name: Upload artifact
116134
uses: actions/upload-artifact@v4
117135
with:
118-
name: verso-aarch64-apple-darwin
119-
path: ./target/release/verso-aarch64-apple-darwin.tar.gz
136+
name: verso-${{ matrix.target }}
137+
path: ./target/${{ matrix.target }}/release/verso-${{ matrix.target }}.tar.gz
120138

121139
publish-release:
122140
runs-on: ubuntu-latest
123-
needs: [build-linux, build-windows, build-mac]
141+
needs:
142+
- build-linux
143+
- build-windows
144+
- build-mac
124145
steps:
125146
- uses: actions/checkout@v4
126147
- uses: actions/download-artifact@v4

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
members = ["verso", "versoview_messages", "versoview_build"]
33

44
[workspace.package]
5-
version = "0.0.1"
5+
version = "0.0.2"
66
edition = "2024"
77
license = "Apache-2.0 OR MIT"
88
homepage = "https://versotile.org/verso"
@@ -62,6 +62,7 @@ default = []
6262
packager = ["dep:cargo-packager-resource-resolver"]
6363
flatpak = []
6464
tracing = []
65+
embed-useragent-stylesheets = []
6566

6667
[build-dependencies]
6768
cfg_aliases = "0.2"

src/config.rs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -445,15 +445,32 @@ fn load_userscripts(
445445
struct ResourceReader(PathBuf);
446446

447447
impl ResourceReaderMethods for ResourceReader {
448-
fn read(&self, file: Resource) -> Vec<u8> {
449-
let path = self.0.join(file.filename());
450-
// Rigppy image is the only one needs to be valid bytes.
451-
// Others can be empty and Servo will set to default.
452-
if let Resource::RippyPNG = file {
453-
fs::read(path).unwrap_or(include_bytes!("../resources/rippy.png").to_vec())
454-
} else {
455-
fs::read(path).unwrap_or_default()
456-
}
448+
fn read(&self, resource: Resource) -> Vec<u8> {
449+
let path = self.0.join(resource.filename());
450+
fs::read(&path).unwrap_or_else(|_| {
451+
match resource {
452+
// Rigppy image is the only one needs to be valid bytes.
453+
// Others can be empty and Servo will set to default.
454+
Resource::RippyPNG => &include_bytes!("../resources/rippy.png")[..],
455+
#[cfg(feature = "embed-useragent-stylesheets")]
456+
Resource::UserAgentCSS => &include_bytes!("../resources/user-agent.css")[..],
457+
#[cfg(feature = "embed-useragent-stylesheets")]
458+
Resource::ServoCSS => &include_bytes!("../resources/servo.css")[..],
459+
#[cfg(feature = "embed-useragent-stylesheets")]
460+
Resource::PresentationalHintsCSS => {
461+
&include_bytes!("../resources/presentational-hints.css")[..]
462+
}
463+
Resource::HstsPreloadList => {
464+
log::warn!(
465+
"HSTS preload list not found, falling back to an empty list, to set this, put the list at '{}'",
466+
path.display()
467+
);
468+
r###"{ "entries": [] }"###.as_bytes()
469+
}
470+
_ => &[],
471+
}
472+
.to_vec()
473+
})
457474
}
458475

459476
fn sandbox_access_files(&self) -> Vec<PathBuf> {

0 commit comments

Comments
 (0)