Chromium Weekly Digest Logo

Chromium Weekly Digest

Week 50 of 2025 (2025-12-07 to 2025-12-13)

Chromium Weekly: 2025 Week 50

Overview

A monumental week for API evolution, this summary covers approximately 1870 relevant commits out of 2518 total across 6 days. The period was dominated by an exceptionally large number of breaking changes across core services, UI, networking, and platform-specific APIs, requiring immediate action from many embedders. Beyond API churn, significant web platform updates landed, including changes to CSS viewport unit behavior and lazy loading, while a major architectural refactor in Blink was attempted and reverted. Key feature work includes enabling the OOPIF PDF viewer by default on desktop and adding PDF handling capabilities to Chrome on Android.

Breaking Changes

  • ⚠️ BREAKING BREAKING CHANGE: A massive number of C++ APIs were broken. EnterpriseIdentityService was removed entirely. autofill::AutofillClient lost methods like GetPopupScreenLocation() and DidFillForm(). TabStripModel::selection_model() changed its return type. signin::OAuthConsumerRegistry gained a new pure virtual method. media::VideoFrame's mapping APIs were removed. The ownership model for blink::Gradient was changed from scoped_refptr to std::unique_ptr. (5d6bd7b) (80af047) (0e0c6aa) (58e491f) (01e5c4c) (a607b59) (2e59e5c)
  • ⚠️ BREAKING BREAKING CHANGE: Core base library and networking APIs were updated. net::ERR_DNS_SERVER_FAILED was removed in favor of more specific error codes. base::SysInfo memory functions now return ByteSize instead of ByteCount. The deprecated SimpleURLLoader::BodyAsStringCallbackDeprecated was removed, requiring migration to the std::optional version. (0b88079) (c7e3442) (31e0c06)
  • ⚠️ BREAKING BREAKING CHANGE: The browser updater component's public API was refactored. Embedders must now include the new central header updater.h as previous headers like BrowserUpdaterClient are now internal or removed. (d4d03c1) (793c922)
  • ⚠️ BREAKING BREAKING CHANGE: Multiple Android Java APIs were changed. AwBackForwardCacheSettings was removed from the WebView API in favor of direct methods. ActivityTabProvider and BrowserControlsVisibilityDelegate no longer inherit from ObservableSupplierImpl, requiring callers to use .asObservable(). (b8c03f6) (01f1868) (1aa8864)
  • ⚠️ BREAKING BREAKING CHANGE: The extensions.webRequest API now formats securityInfo.certificates.fingerprint.sha256 as a colon-separated hex string (AA:BB:CC...) instead of a contiguous one, which may break extensions that parse this value. (33cf423)
  • ⚠️ BREAKING BREAKING CHANGE: The content::RenderProcessHost::FastShutdownIfPossible public API signature was changed to add a new optional parameter, breaking embedders who implement the RenderProcessHost interface. (1095311) (4b90c98)

Web Platform & Rendering

  • The Out-of-Process iframe (OOPIF) for the PDF viewer is now enabled by default on Windows, macOS, and Linux, improving security and stability by isolating the PDF content in its own process. (30caec7)
  • CSS viewport units (vh, vw, etc.) now account for the presence of classic scrollbars on the root element. This aligns Chrome with a new specification consensus and may affect page layouts. (83692eb)
  • The behavior of <img loading="lazy"> was updated to better align with the HTML specification. An image element will now correctly wait until it enters the viewport to fire its load event, even if the resource was fetched out-of-band. (c1c615c)
  • A large-scale architectural refactoring to remove the Supplementable pattern from core Blink classes like Document and Page was attempted and subsequently reverted due to instability, putting a significant internal modernization effort on hold. (98766f7) (5d280d5) (926943c) (c9da8ad)
  • Native support for Matroska MIME types (.mkv, .mka) was added, allowing these video and audio files to be played inline by the browser instead of being automatically downloaded. (d081300)

Services & Extensions

  • A critical bug was fixed where the browser could hang if an extension used a blocking webRequest listener in a service worker that was active but had not yet finished registering its listeners. (022ce91)
  • A garbage collection mechanism was implemented for Bound Session Credentials (DBSC), allowing the UnexportableKeyService to delete orphaned token binding keys and improve storage hygiene. (262fa98)
  • The extensions messaging system is being updated to support structured cloning, with serialization logic being moved to common code to prepare for more complex data passing. (69363e6) (88e3bae)

Android

  • Chrome on Android can now be registered as an application to open PDF files, allowing users to open PDFs from other apps directly in the browser via an "Open with" intent. (237aee7)
  • The desktopCapture API is now enabled for desktop Android, providing screen sharing capabilities for web applications on tablet form factors. (4ab565d)
  • The Tab Resumption feature, which helps users resume previous tasks on the New Tab Page, is now enabled by default, and its associated feature flag has been removed. (7e8699d)

Infrastructure

  • A pure Rust JPEG XL decoder, jxl-rs, was added as a third-party dependency, continuing the integration of memory-safe languages for image parsing. (740e9bb)
  • The FontConfig dependency was updated to build without FreeType, removing FreeType-related APIs and simplifying the build dependency graph on Linux. (94a6cd7) (eee60fc)
Daily Summaries (6)
← Back to all summaries