Release date: 2026-09-28 / Chromium: 154.0.8037.57 / Language: 日本語 | English
The rendering engine is updated to Chromium 154.
BLINKGTK_FRAME_COPY=1 restores the
previous behaviorbase_uri of
blink_web_view_load_html() was not applied to the
document.document.baseURI and
blink_web_view_get_uri() now return
base_uri.#, %, tabs, or newlines was
also cut off or altered at that point; this isBlinkGTK Permissions.json) were read on the UI
thread.gtk_widget_compute_point and similar assertions,
ibus#2905). Input method focus is no longerblink_web_view_switch_render_path()) did not complete
afterlibVkLayer_khronos_validation.so andlibVkICD_mock_icd.so, about 30 MB together). The
configuration files needed to load them wereebook://) with <audio> made
the<audio> stopped reading partway,
the UI thread kept waiting. It happened both while<audio> over a custom scheme sends a single range
request, Range: bytes=0-, and no further request<audio> loads, so this build does not addRange header set on fetch() reaches the
loader, but the whole body is returned)blink_web_view_print_to_pdf_with_options() writes a PDF
with the paper, margins, background
and page range you choose. The callback runs after the PDF has
been written, and gets the
reason when it fails. Vertical text, ruby, emphasis marks and
tate-chu-yoko come out in the PDF.
BlinkPdfOptions* o = blink_pdf_options_new();
blink_pdf_options_set_paper_size(o, 8.27, 11.69); /* A4, in inches */
blink_web_view_print_to_pdf_with_options(view, "/tmp/page.pdf", o, on_pdf, NULL);
blink_pdf_options_free(o);Text inside a scrolling container (overflow: auto and
the like) is not split into pages:
only what is visible in the container goes onto one page (see "PDF
output" in the C API reference).
When the handler set with
blink_web_view_set_download_handler() returns a path, the
file is
saved there (NULL means the XDG Download directory,
"" means do not save). The
download-started signal hands you a
BlinkDownload for progress, completion and failure,
and
blink_download_cancel() cancels it. A view without a
handler does not save downloads.
The decide-navigation signal lets you choose: open in
this view, stop, open in the external
browser, open in another view, or open in a new view. A page opened with
window.open() and
taken into a new view keeps window.opener.
getUserMedia() now goes through
permission-request; once allowed, the devices work
(up to 1.2.3-build1 it always failed with
NotSupportedError).
Keep a request with blink_permission_request_ref() and
allow / deny it later.
blink_permission_request_get_origin() gives the requesting
origin and get_embedding_origin()
the embedding one. After
blink_permission_request_set_remember(), the same request
is not
asked again.
Requests arrive at the handler set with
blink_web_view_set_auth_handler(); answer with
blink_web_view_auth_response(). Further requests arrive one
at a time.
blink_web_view_set_font_family() sets the default serif,
sans-serif, monospace and other
families, and blink_web_view_set_minimum_font_size() a
minimum size. The minimum also applies
to ruby (with 16px text and a 12px minimum, ruby grows from 8px to
12px).
Call blink_gtk_register_scheme() before
blink_gtk_init() to register a scheme without the
BLINKGTK_EXTRA_SCHEMES environment variable. Pages on that
scheme get an origin and can use fetch().
window.blinkgtk from the page's first scriptUp to 1.2.3-build1 it was added after loading finished.
While the presentation policy keeps the view off screen,
blink_web_view_capture_screenshot_async()
now presents one frame and captures it (up to 1.2.3-build1 it failed
after 2 seconds).
blink_handoff_meta_serialize() withg_free() (the header and documentation read as the C
library function). The free function isblink_web_view_get_devtools_url(),
blink_web_view_get_url() and othersblink_web_view_set_default_encoding() was already
appliedblink_gtk_sandbox_init()
now says it is provided by lib/blinkgtk_sandbox.lib
inblink_gtk_init() on Linux)blink_web_view_print_to_pdf() now writes the
PDF. Up to 1.2.3-build1 it calledwindow.print() and reported success without writing a
filelibcups.so.2) at run time. The RPM and DEB
packagescups-libs (Fedora) or
libcups2 (Debian, Ubuntu)/usr/bin/blinkgtk-simple-browser is now
/usr/bin/blinkgtk-browser./usr/libexec/blinkgtk-0.1/blinkgtk_browserSettings such as blink_web_view_set_javascript_enabled()
are now applied to the page.
Up to 1.2.2 the value was only stored: page scripts still ran
after passing FALSE.
| Function | 1.2.3 (measured on the shipped build) |
|---|---|
blink_web_view_set_javascript_enabled() |
Works (FALSE stops page scripts) |
blink_web_view_set_images_enabled() |
Works (FALSE stops image loading) |
blink_web_view_set_local_storage_enabled() |
Works (FALSE makes localStorage
unavailable) |
blink_web_view_set_default_font_size() |
Works (passing 30 gives 30px body text) |
blink_web_view_set_default_encoding() |
Not yet (pages without a declared charset stay
windows-1252) |
If your application must keep scripts from running on some pages,
update to this release.
set_default_encoding() will be investigated and handled in
a later release.
out_mime with parameters, such as
"text/html; charset=utf-8",<pre> text.fetch() on schemes listed in
BLINKGTK_EXTRA_SCHEMES. Up to 1.2.2 onlyapp / blinkgtk /
res / resource / ebook) allowed
itWithout blink_gtk_set_resources_path(), BlinkGTK now
also looks for icudtl.dat and the
other resources next to libblinkgtk. Up to 1.2.2 it only
looked next to the executable, so
applications built against the rpm / deb packages stopped with an ICU
error.
The search order is:
<libdir>/blinkgtk-0.1/chromium/ (rpm / deb)<libdir>/chromium/ (tarball)<libdir>/Applications that set the path keep working as before.
BlinkGTK no longer picks the Japanese input path itself; it
leaves the choice to GTK.
On Wayland this is GTK4's default text-input path, which is also what
the input method
side (IBus) recommends. On real Fedora 45 / GNOME hardware we confirmed,
with this path
selected, that conversion mode works and that closing views repeatedly
produces no input
method warnings (measured by selecting the same path through the switch
added in 1.2.2).
To get the 1.2.2 behaviour (naming IBus), set
BLINKGTK_IM_MODULE=ibus. It affects
BlinkGTK's views only. blink_gtk_get_im_module() returns
the value currently applied
(an empty string by default, meaning GTK decides).
blink_gtk_trace_mark("name") puts a marker in the trace.
The event is named after the
marker, the same shape as the web's performance.mark().
// Start with: --trace-startup=toplevel,blink.user_timing
blink_gtk_trace_mark("workload_ready");
/* ... the part to measure ... */
blink_gtk_trace_mark("idle_static_ready");Without the blink.user_timing category the call does
nothing.
text-decoration-inset — pull
underlines, overlines and line-throughs in from<iframe> —
the embedding page can size an iframe to its contentfont-width descriptor in
@font-face — an alias of
font-stretchThe feature list is Chromium 154's list on chromestatus.com. What we
measured ourselves
covers rendering, input and startup, not these typography features.
The workaround added in 1.2.1 (a vertical line breaking half-way
when a closing bracket
falls at the line end) is removed. Chromium 153 fixed
the same symptom upstream; we
kept the workaround in 1.2.2 after measuring that it no longer changed
the result
The header comment of the load-failed signal did not
match the implementation. The
correct handler signature is (the signal itself is unchanged):
static void on_load_failed (BlinkWebView *web_view, BlinkLoadError error_code,
const char *failing_uri, gpointer user_data);The header said blink_gtk_init_with_sandbox() was
not in the shared library yet, but it
has been since 1.2.2-build4. On Linux, passing NULL behaves
exactly like blink_gtk_init()
BLINKGTK_IM_MODULE=ibus restores the old behaviourFALSE will see page scripts or images stopset_javascript_enabled(FALSE) stops page scriptsfetch() and starting withoutblink_gtk_trace_mark() andperformance.mark() appear as events named after the
marker