100 Commits
Author SHA1 Message Date
Marshall Greenblatt a875f407e3 docs: Fix CefAudioHandler behavior descriptions (fixes #3010) 2026-10-10 13:48:48 -04:00
Marshall Greenblatt aa619989d4 docs: Improve OnContextReleased example (fixes #3669) 2026-10-10 13:43:37 -04:00
Marshall Greenblatt 5728c5dff3 docs: Fix CefDragHandler::OnDragEnter description (fixes #1235) 2026-10-10 13:40:20 -04:00
Marshall Greenblatt 48b59bede5 docs: Add code signing & notarization (fixes #2744) 2026-10-10 13:32:15 -04:00
Marshall Greenblatt 8446999d61 docs: Add Security Updates section to README.md (fixes #3584) 2026-10-10 12:31:15 -04:00
Marshall Greenblatt 5c57234740 docs: Improve external-message-pump guidance (fixes #2968) 2026-10-10 12:23:18 -04:00
Marshall Greenblatt 38b31337cc osr: win: cefclient: Update D3D11 structure to match Metal/EGL
- Support OnPaint uploads and copy shared textures into owned storage
  before OnAcceleratedPaint returns.
- Redraw the last frame on resize/expose.
- Remove the legacy OpenGL renderer and Windows GL handler.
- Preserve cached images on allocation failure and validate bounds.
- Add OsrRendererD3D11Test unit tests, ported from the Metal/EGL tests.

Tested on Windows 11 x64:
- cefclient resize and select popups work in all eight combinations
  of software/shared textures, internal/external begin frames, and
  single/multi-threaded message loops.
- ceftests: 37 renderer tests pass on hardware/WARP; one allocation
  failure test skips after the driver accepts its oversized descriptor
2026-10-10 10:59:26 -04:00
Marshall Greenblatt e79440b9fa osr: linux: cefclient: Implement --external-begin-frame-enabled (see #3687)
The GTK OSR window enabled external BeginFrames but never called
CefBrowserHost::SendExternalBeginFrame, so nothing was painted. Add a
UI thread timer at the windowless frame rate, matching the Windows and
macOS implementations.
2026-10-10 10:59:26 -04:00
Marshall Greenblatt c7e1a9e5c6 osr: linux: cefclient: Add OnAcceleratedPaint support (fixes #3687)
- Add OsrRendererGl, a shared OpenGL 3.3 renderer with DMA-BUF import,
  and load EGL/GL at runtime with no new build dependencies.
- Render via GtkGLArea on Wayland and an EGL window surface on X11.
- Redraw the last frame on resize/expose, matching the Metal renderer.
- Exit at startup if OSR is enabled and EGL is unavailable.
- Add OsrRendererGlTest unit tests, ported from the Metal tests.

Tested on a Linux VM (VMware SVGA3D, Mesa 23.2, GNOME Wayland/Xwayland):
- cefclient OSR software and shared-texture (DMA-BUF) rendering on
  Wayland (GtkGLArea) and X11 (EGL window surface), including resize,
  select popups, cursors, --multi-threaded-message-loop and
  --transparent-painting-enabled. Shared texture runs use
  --ignore-gpu-blocklist (VMware is blocklisted).
- ceftests: new OsrRendererGlTest (12 tests, using GBM DMA-BUFs) and
  all existing OSRTest tests pass.
- Missing libEGL: cefclient exits at startup with an error and
  OsrRendererGlTest skips.
2026-10-10 10:59:26 -04:00
Marshall Greenblatt f922057255 linux: cefclient: Fix GTK windows with Wayland (see #3687)
- Fail at startup when --use-native is used with Wayland
  (unsupported, see #2804).
- Remove X11 runtime dependencies from the OSR path.
- Match the GDK backend to the Ozone platform.
- Keep GDK OpenGL enabled with OSR by presetting GDK_GL (see
  https://crrev.com/7c29ce9003d87).
- Share IsRunningOnWayland() between cefclient and ceftests and
  match Chromium detection logic.
2026-10-09 15:46:19 -04:00
Marshall Greenblatt 2d4a38cec5 docs: Fix last refresh date 2026-10-07 16:45:25 -04:00
Marshall Greenblatt 945a17e6aa docs: Add 8078 branch as Beta 2026-10-07 16:35:58 -04:00
Marshall Greenblatt f29ae69bb2 osr: cefclient: win: Suppress opening mouse-up over select popups (see #4301)
Suppress the opening release when a popup overlaps the pointer, even
when cefclient has not repositioned it. Previously, that release could
select an option and immediately close the menu.
2026-10-07 15:49:09 -04:00
Marshall Greenblatt dff7cc2c12 osr: Preserve focus across page view changes (fixes #4301)
Report the widget's actual focus state and route focus requests through
CefBrowserHost::SetFocus so client callbacks can accept or cancel them.
This allows select popups to open after cross-site link navigation.

Add regression coverage for main-frame and cross-origin iframe popups
and client focus cancellation, with BFCache enabled and disabled.
2026-10-07 14:59:12 -04:00
Marshall Greenblatt 5e9eac7d7a mac: osr: Preserve internal select menus across navigation (see #4297)
Set should_disable_external_popups in web preferences instead of
configuring the renderer WebView directly. This prevents preference
updates from restoring native menus after history navigation.

Remove the obsolete renderer override and add regression coverage for
main-frame and cross-origin iframe select popups with BFCache enabled
and disabled, plus client cancellation of focus requests.
2026-10-07 14:34:41 -04:00
Marshall Greenblatt 6497b876b1 Fix srcdoc origin inheritance from opaque parents (fixes #4298)
Preserve existing opaque origins in the custom-scheme security policy
patch instead of deriving a new origin. This keeps srcdoc frames'
inherited origins consistent between the browser and renderer while
retaining distinct origins for sandboxed frames.

Add regression coverage for data URLs, document-written about:blank,
HTTPS, and nested data frames, including sandbox isolation. Disable
the sandboxed initial about:blank case pending resolution of
https://crbug.com/570981950.
2026-10-07 13:42:43 -04:00
Marshall Greenblatt 905382c149 mac: Update minimum deployment target to macOS 13
Chromium dropped macOS 12 support in M151.
2026-10-07 12:44:55 -04:00
Marshall Greenblatt 56b6e70504 Tag 15600 API version 2026-10-07 12:25:37 -04:00
Marshall Greenblatt 037712b1da bootstrap: Add early CommandLine init and fix --v mode crash
Initialize the process command-line singleton before sandbox setup,
logging, and installer dispatch, and reuse it for argument parsing.
Early initialization is required by content::InitializeSandboxInfo
starting in M156.

Scope an AtExitManager around client execution so verbose startup
metrics can register shutdown callbacks without overlapping
installer managers.
2026-10-07 12:25:37 -04:00
Marshall Greenblatt b4ce724e45 tools: Support >2GB downloads and check sha256 sidecars 2026-10-07 12:25:37 -04:00
Marshall Greenblatt 124316c82d linux: wayland: Fix shadow artifacts with multi-threaded-message-loop
With multi-threaded-message-loop there is no GTK-backed LinuxUi, so
Views windows use the fallback FrameViewLinux with client-drawn
shadows. DesktopWindowTreeHostLinux only updates the opaque region from
OnBoundsChanged(), which runs before the FrameView exists. The surface
keeps its initial full-size opaque region, shadow included, so the
compositor leaves trails behind the window when it moves.

Call UpdateFrameRegions() from OnWidgetInitDone() so that the opaque and
input regions are set once the FrameView exists.
2026-10-07 12:25:37 -04:00
Marshall Greenblatt bfb444b334 tests: Fix flaky OwnedWidgetShutdownTest.SyntheticOwnedWindow
The owned menu window could be created before the main window was
activated. When the main window became active later, the menu was
dismissed (e.g. Wayland popups), so owned_window_ was null by the
time CloseMainWindow ran. This happened reliably on repeat
iterations, where cached loads make OnLoadEnd fire sooner.

Forward CefWindowDelegate::OnWindowActivationChanged from
TestWindowDelegate to a new TestHandler::OnWindowActivationChanged
hook, and wait until the load has ended and the main window is
active before creating the owned window.
2026-10-07 12:25:37 -04:00
Marshall Greenblatt 3baba7c8db Fix reference to temporary value 2026-10-07 12:25:37 -04:00
Marshall Greenblatt a26ddfd279 Update to Chromium version 156.0.8078.0
win: dxil.dll is no longer distributed
mac: Xcode 27 (macOS 26.6+) is now required
2026-10-07 12:25:37 -04:00
Marshall Greenblatt b54122e580 ai: Add GPT update instructions 2026-10-03 22:20:42 -04:00
Marshall Greenblatt e75cc7117e tests: Remove preference assertions from unrelated tests (see #4276) 2026-10-03 22:20:42 -04:00
Marshall Greenblatt ff57d4eae1 Disable background Gaia ListAccounts by default (fixes #4276)
Skip ListAccounts when browser sign-in is disabled, default new
profiles to sign-in disabled, and disable the sign-in promo on the
avatar button by default. Embedders can still opt in via
OnRegisterCustomPreferences.
2026-09-29 15:17:04 -04:00
Marshall Greenblatt 6d9f51a7bc Fix custom preference registration timing (fixes #4281)
Register CEF profile preferences after Chromium keyed-service
preferences. Add GetDefaultPreference and SetDefaultPreference
to CefPreferenceRegistrar so applications can inspect, override,
and restore registered defaults.
2026-09-29 14:10:34 -04:00
Marshall Greenblatt cff256d48a ceftests: Speculative fix for flaky MediaAccessTest 2026-09-28 16:05:37 -04:00
Marshall Greenblatt e048aa005c chrome UI: Fix crash on new tab button (fixes #4285) 2026-09-28 15:28:50 -04:00
Marshall Greenblatt 3389588b28 ceftests: Ignore browserless Chrome UI WebUI requests (fixes #4290) 2026-09-28 15:16:36 -04:00
Marshall Greenblatt afe9f1b890 Fix component path provider registration (fixes #4291) 2026-09-28 14:53:31 -04:00
Marshall Greenblatt 31eb5ac020 docs: Promote 8037 branch to Stable 2026-09-24 15:03:11 -04:00
Marshall Greenblatt 30b4fc6c8d tests: Fix OSR paint test bounds query race
Ignore element bounds queries for paint-only OSR tests. These tests
can start from OnPaint before the asynchronous bounds query arrives,
causing a false started-state assertion failure.
2026-09-24 14:02:27 -04:00
Marshall Greenblatt 12add0082f distrib: Remove stub ANGLE binaries (see #3974)
Chromium changed desktop builds to link ANGLE statically in
https://crrev.com/f78f92beeb (M151). The remaining libEGL and
libGLESv2 binaries are stubs (no exports, never loaded by
Chromium) and should no longer be distributed.
2026-09-22 14:09:47 -04:00
Marshall Greenblatt 5df187ece7 docs: Add extended channel and clarify channel timing 2026-09-18 14:42:35 -04:00
Marshall Greenblatt 89af13ad79 tests: Investigate intermittent ceftests server crashes
Log the connection ID, method, and path when an HTTP request has no
peer address, before the generated handler wrapper asserts.

Inline the URLRequestTest favicon to suppress incidental network
requests that may race with browser teardown.
2026-09-16 17:10:10 -04:00
Marshall Greenblatt 5065488251 osr: Refresh view bounds when restoring from BFCache (fixes #3822)
Synchronize visual properties before showing an OSR view, even when
its surface ID remains valid. Cached views can miss resize
notifications while another view is active. Preserve software popup
initialization before the browser is attached.

Add a regression that confirms BFCache restoration and verifies
viewport and paint dimensions after resizing another page. Verified
failure before the fix and 30 passing executions across GPU and
software rendering on Windows 11.
2026-09-15 17:38:31 -04:00
Marshall Greenblatt 1ba412df21 tests: Fix flaky DownloadTest cases and repeated Chrome-style slowdown
Cancel pending downloads before cleanup and retry directory deletion
up to ten times at 100 ms intervals. Guard teardown against reentry
and late download callbacks.

Disable Chrome's automatic download bubble during download tests,
restoring the previous preference afterward. Across repeats, this UI
work increasingly delays teardown.
2026-09-14 17:03:20 -04:00
Marshall Greenblatt 663a884dd6 tests: Fix repeated CORS tests and timeout cleanup
Disable preflight caching so repeated tests receive the expected
OPTIONS requests. Route timeout destruction through server observer
removal and cookie cleanup to prevent stale cookies and stack-use-
after-return crashes. Guard cookie verification against an
unexpected cookie count.
2026-09-12 18:12:30 -04:00
Marshall Greenblatt 74f180ec89 tests: Fix flaky DownloadTest.PauseResume 2026-09-12 17:01:48 -04:00
Marshall Greenblatt 090d0dfa58 Fix ozone define build error (see #4263) 2026-09-12 16:30:58 -04:00
Marshall Greenblatt b5b2064c99 osr: Add single external BeginFrame paint regression tests (see #2800)
Load a static page and issue WasResized followed by exactly one
SendExternalBeginFrame after OnLoadEnd. Verify all bitmap pixels at
1x and 2x scale without a repeating frame timer.
2026-09-12 16:12:31 -04:00
Marshall Greenblatt f05ead39c5 mac: Fix print preview saving, resizing and focus (fixes #3410)
Preserve the preview WebContents in the file-selection policy so
CEF can resolve the originating browser when saving a PDF.

Use the hosted BrowserView bounds for dialog sizing, and let AppKit
handle native resize edges without child-modal input blocking.

Restore focus to the topmost visible child-modal dialog after
resizing, provided the app is active and the parent still owns
keyboard focus.
2026-09-12 15:47:18 -04:00
Marshall Greenblatt 0da9e7222f Fix service worker request handler fallback (fixes #3593)
Use an available handler from the same browser context when worker
requests have no matching frame or process handler, for example
after page navigation or close.
2026-09-12 14:31:35 -04:00
Marshall Greenblatt bbc269c8bb Add regression test for worker fetch handling (see #3780) 2026-09-12 13:53:54 -04:00
Marshall Greenblatt 5c34390015 Fix message router calls from detached frames (fixes #4119)
Reject query and cancellation calls when the V8 context no longer
has a browser or frame, before registering the context or sending
messages.
2026-09-12 13:39:24 -04:00
Marshall Greenblatt 49815fbdaa osr: mac: cefclient: Fix accessibility object lifetime (fixes #3595)
Native accessibility objects now have explicit ownership, detach
safely before node deletion, and are released during view teardown.
2026-09-11 17:19:57 -04:00
Marshall Greenblatt 9270759d79 osr: mac: cefclient: Add external-begin-frame support (fixes #4033) 2026-09-11 16:34:02 -04:00
Marshall Greenblatt 8786a5a8a3 osr: mac: cefclient: Use Metal for rendering (fixes #3626) 2026-09-11 15:41:16 -04:00
Marshall Greenblatt 0d05970b8c osr: Fix Viz refresh capture stall (see #3826)
Always complete oracle bookkeeping for failed copies and obsolete
capture versions so pending captures cannot block refresh retries.
Reject cached frames from obsolete capture versions and allow newer
versions to replace them.

Add regression coverage for refresh recovery after copy failures
and capture-version changes.
2026-09-11 15:31:20 -04:00
Marshall Greenblatt dd937282a6 Fix download cancellation behavior and docs (fixes #4236, fixes #3967) 2026-09-11 13:21:21 -04:00
Marshall Greenblatt 6e5a72b1af alloy: Fix potential chrome.tabs.update() crashes (fixes #4256) 2026-09-09 15:26:00 -04:00
Marshall Greenblatt 22d9af4126 tests: Remove deprecated CefRegisterExtension tests 2026-09-06 13:28:29 -04:00
Marshall Greenblatt 078448eb8a chrome: Move WCD callbacks out of BrowserDelegate
Centralize WebContentsDelegate callback handling in the new
ChromeBrowserWCD class. This change is strictly structural.
2026-09-06 13:10:23 -04:00
Marshall Greenblatt 2040e5a67c chrome: Extend BrowserWCD instead of patching
BrowserWebContentsDelegate was split from Browser in recent
refactoring and can now be extended instead of patched. This
change is strictly structural.
2026-09-06 13:10:23 -04:00
Marshall Greenblatt 99138d4522 docs: Add Beta 8037 branch 2026-09-06 13:10:23 -04:00
Marshall Greenblatt a37d75cf39 Tag 15400 API version 2026-09-06 13:10:23 -04:00
Marshall Greenblatt 213fbca5aa linux: Don't show Chromium eula dialog on startup 2026-09-06 13:10:23 -04:00
Marshall Greenblatt 3b187f4246 tests: Fix StreamResourceHandlerTest failures 2026-09-06 13:10:23 -04:00
Marshall Greenblatt 716cec2a64 chrome: Fix browser info timeouts for standalone WebUI windows
Recognize UI-element controllers without the preload marker, such as
Manage Chromium Profiles. Preserve WebUI pages owned by a CefBrowser.
2026-09-06 13:10:23 -04:00
Marshall Greenblatt ee71fa268b views: Skip omnibox WebUI when no Chrome toolbar is configured
Avoid creating unused omnibox WebContents for Views-hosted browsers
with CEF_CTT_NONE. Preserve WebUI popups for configured toolbars.
2026-09-06 13:10:23 -04:00
Marshall Greenblatt 40ca896ae8 chrome: Fix browser info timeouts for internal WebUI frames
Exclude Chrome UI contents using WebUIContentsPreloadState. These
contents have no owning CefBrowserHost, so allow excluded requests
to complete without browser info instead of waiting for a timeout.
2026-09-06 13:10:23 -04:00
Marshall Greenblatt 2d3ce7f943 views: Preserve overlay contents during Chrome window teardown
ChromeBrowserWidget closes owned widgets before the parent WindowClosing
callback can detach overlay contents. Closing an overlay widget with
CloseNow therefore deletes its contents View and invalidates the CefView
retained by the client.

Extract CefWindowView::CloseOverlayViews and call it from both
WindowClosing and ChromeBrowserWidget::CloseOwnedWidgets. This detaches
overlay contents and restores CEF ownership before owned widgets are
destroyed. Direct overlay widget closure retains its destruction behavior,
which Alloy overlay browsers need to complete browser shutdown.

Add an explicit IsValid assertion to the overlay destruction tests.

To test:
ceftests --gtest_filter=ChromeChildWindowTest.*:OwnedWidgetShutdownTest.*:ViewsBrowserViewTest.*
2026-09-06 13:10:23 -04:00
Marshall Greenblatt 33624e6bc2 Update to Chromium version 154.0.8037.0
- Windows SDK 10.0.28000.2270 is now required
- CefRegisterExtension is deprecated due to https://crbug.com/40347662
2026-09-06 13:10:22 -04:00
Marshall Greenblatt 7339013311 Close owned widgets before Browser deletion (see #4006)
Browser closure and native window destruction may occur in either order.
Subscribe ChromeBrowserWidget to BrowserDidClose so owned widgets are closed
synchronously before the Browser deletion task is posted. Retain the existing
OnNativeWidgetDestroying cleanup for the reverse ordering.

This prevents password and other Browser-owned bubbles from dereferencing
Browser state after it has been destroyed.
2026-08-20 14:24:09 -04:00
Marshall Greenblatt cd89341bfe chrome: Preserve request context for Inspect Element (fixes #4168)
Keep CEF-created unique OTR profiles when resolving the DevTools
profile so Inspect Element does not create the popup with the parent
profile. Add coverage for a non-global request context and verify that
the DevTools popup shares it.
2026-08-19 18:05:13 -04:00
Marshall Greenblatt 13ac447cca Close owned widgets before Chrome browser teardown (see #4006)
Close widgets owned by ChromeBrowserWidget from
OnNativeWidgetDestroying while the native ownership graph is still
available. This prevents popup widgets from outliving Browser state during
native-window-driven shutdown.

Add Chrome-style ceftests for JavaScript, password-save, and synthetic owned
widgets. Confirm that each widget exists before closing the main window and
verify deterministic destruction ordering for the synthetic case. Reset the
password dismissal statistics before loading the password form so repeated
test runs continue to exercise the save-password widget.
2026-08-19 17:38:32 -04:00
Marshall Greenblatt f8a915f046 alloy: Fix crash in ReadAnythingSoftNavigationObserver::OnSoftNavigation (fixes #4234) 2026-08-19 14:08:21 -04:00
Marshall Greenblatt 89749b7e67 Cancel intercepted requests before proxy teardown
BrowserContext cleanup can delete proxy factories while URL loaders
are still active, leaving request handler state populated during
destruction.

Add a shutdown hook that reuses the existing cancellation path
before erasing proxies. Handle pending initialization and repeated
shutdown safely.
2026-08-19 13:38:09 -04:00
Marshall Greenblatt 66cb09c78c docs: Add 7977 release branch 2026-08-19 13:37:28 -04:00
Marshall Greenblatt 1b4ea04698 Tag 15200 API version 2026-08-19 13:37:28 -04:00
Marshall Greenblatt df31007ab6 osr: Fix file chooser crash due to null native view
Guard the owning-window lookup in FileSelectHelper::RunFileChooserOnUIThread.

Add ceftests DialogTest.FileInputOSR test for triggering and canceling a file
input in OSR mode.
2026-08-19 13:37:28 -04:00
Marshall Greenblatt 4ec0bddb69 Update to Chromium version 152.0.7977.0 (#1669021) 2026-08-19 13:37:28 -04:00
Marshall Greenblatt ed5ea08861 claude: Fix analyze_patch_output paths for sub-repos 2026-08-19 13:37:27 -04:00
Marshall Greenblatt d299f9ad12 mac: Add libvulkan.dylib to framework/Libraries (fixes #4230) 2026-07-30 16:05:03 -04:00
Marshall Greenblatt 29a8e5f6dd installer: preserve healthy fallbacks during background updates (see #4093)
Replace cefclient's separate launch-health and update timers with a single
health-first task. Start the update only after launch_success returns structured
success so the running version becomes a confirmed fallback before a newer
version is installed.

Keep older confirmed launch records until the selected version's health is
durably confirmed. A normal exit remains neutral in explicit mode, while
exit-code and health-off modes retain their clean-exit pruning behavior.

Reconcile valid indexes under the installer lock by quarantining canonical
version directories absent from the index. Defer loaded-DLL cleanup through
.trash for later writers, and avoid emergency-recovery warnings for an empty
fresh store while preserving warnings for meaningful recovery attempts.

Expand unit and Windows E2E coverage for update ordering, confirmation and
persistence failures, fallback retention, pruning modes, loaded-version
quarantine, lock contention, and recovery. Update the installer documentation
to describe the combined behavior.

New behavior confirmed with cefclient:

1. Launch cefclient. After 60 seconds, 'launch_success' confirms the old
   version and 'update' installs the new version.
2. Exit and relaunch cefclient. Second run uses the new version. After 60
   seconds, 'launch_success' confirms the new version. Upon clean exit the
   old version loses fallback protection and is pruned.
2026-07-29 17:46:31 -04:00
Marshall Greenblatt 25807ea643 build: Pin depot_tools checkout to match deps version
The master depot_tools version has gclient.py changes that are
incompatible with tarball_gclient.patch.
2026-07-28 12:51:07 -04:00
Marshall Greenblatt 94d6118b7d docs: Fix installer.md source links for page rendering (see #4093) 2026-07-27 17:02:07 -04:00
Marshall Greenblatt fa3d4f0dbe docs: Add installer.md overview (see #4093) 2026-07-27 14:06:00 -04:00
Marshall Greenblatt 97c56bd5cd cefclient: cmake: Add -DUSE_INSTALLER=On option (see #4093)
Creates a Release-only Windows build configuration of cefclient with
installer integration enabled.
2026-07-27 14:06:00 -04:00
Marshall Greenblatt 1845c1e9f9 tools: Fix YAPF cache writes on Windows
Avoid tempfile.NamedTemporaryFile's effectively unbounded Windows retry.
Restricted sandboxes can deny YAPF grammar-cache writes. Write each cache
to a unique file, close it, and atomically replace it. Clean up failures
to prevent orphaned pickle files.

Upstream issue: https://github.com/google/yapf/issues/1311
2026-07-27 14:06:00 -04:00
Marshall Greenblatt 65e50f1c0b ai: Add testing guidance for tools/ 2026-07-27 14:06:00 -04:00
Marshall Greenblatt d43e90df57 tools: Restore translator notification context
Clear the parser notification context in a finally block for both CppToC
and CToCpp implementation writers, including when generation raises.

Update failure-path regressions to require context restoration while
preserving successful output behavior.
2026-07-27 14:06:00 -04:00
Marshall Greenblatt 8d83469d79 tools: Fix Python 3 CMake variable merging
Merge generated and manually maintained GYPI variables with copy and update
so the CLI works on Python 3 while preserving manual override precedence.

Add a hermetic CLI regression for exact output, progress diagnostics, and
unchanged repeated generation.
2026-07-27 14:06:00 -04:00
Marshall Greenblatt 3abf1e19b0 tools: Fix implementation generator CLI output
Unpack the CppToC and CToCpp generator results before writing generated
content to stdout. This preserves the existing generator return contracts.

Add successful CLI regressions that verify exact output, empty stderr, and
unchanged input files.
2026-07-27 14:05:59 -04:00
Marshall Greenblatt 66a6bb115d tools: Return failure for invalid distributions
Return a nonzero status when distribution option validation fails so callers
do not interpret rejected invocations as successful.

Replace the existing characterization with regressions that verify the status,
diagnostics, and absence of partial output artifacts.
2026-07-27 14:05:59 -04:00
Marshall Greenblatt 12e5a74d01 tools: Report pack include-only updates
Return the combined header and include write result from make_pack_header.
This ensures callers observe repairs that modify only the generated include.

Replace the existing bug characterization with a regression test for the
correct return contract. Generated file contents remain unchanged.
2026-07-27 14:05:59 -04:00
Marshall Greenblatt 75745dce64 tools: Add make generator test coverage
Add deterministic fixtures, goldens, and matching tests for all 18
make_* generators. Refactor make_distrib orchestration behind an
importable main entry point while preserving generated output. Add
passing characterizations for existing generator issues.
2026-07-27 14:05:59 -04:00
Marshall Greenblatt 3eeee9d063 Tag 15101 API version 2026-07-27 14:05:59 -04:00
Marshall Greenblatt 5b35bb581b claude: Add code coverage instructions and analysis
Add tools for analyzing code coverage of CEF installer tests:
- analyze_coverage_output.py: Parse llvm-cov JSON summaries, filter by
  path, and report uncovered functions and line ranges.
- CLAUDE_COVERAGE_INSTRUCTIONS.md: One-time setup and usage guide for
  generating coverage reports with llvm-profdata/llvm-cov.
- Unit tests for the analysis script.
2026-07-27 14:05:59 -04:00
Marshall Greenblatt cd81c6315a tests: Use CEF_API_VERSION_LAST for client DLL targets (see #4093)
When building a client DLL loaded by bootstrap.exe, default to the last
released API version instead of the experimental (unversioned) API. The
experimental API is not back/forward compatible across CEF versions and
does not bump the version number, so the installer's vmin-based version
selection cannot work safely against it. Building with
CEF_API_VERSION=CEF_API_VERSION_LAST makes the client forward-compatible
with newer libcef.dll binaries (via API backwards compatibility).
2026-07-27 14:05:59 -04:00
Marshall Greenblatt be20927a8d installer: Add bootstrap installer for Windows (see #4093)
Add a shared CEF installer that downloads, verifies, and manages CEF
binary distributions on Windows. The installer is embedded in
application bootstrap binaries and resolves the correct CEF version
from a CDN manifest based on each application's version and ABI
compatibility requirements.

Key components:
- CDN manifest parsing and version resolution
- WinHTTP-based download with SHA-1/SHA-256 integrity verification
- Authenticode catalog (.cat) signature verification
- Parallel XZ decompression for fast archive extraction
- Per-version metadata (cef_version.json) with full version tracking
- Shared installation database for multi-app version management
- Version pruning to reclaim disk space from unused versions
- Revocation list support (compiled-in baseline + CDN delta)
- Progress UI with WM_COPYDATA-based cancellation
- Bundled CEF fallback for offline/CDN-failure scenarios
2026-07-27 14:04:48 -04:00
Marshall Greenblatt 7324f016a3 cefbuilds: Add installer CDN query file generation (see #4093)
Add cef_installer_builder.py to generate per-milestone and per-platform
JSON manifests consumed by the CEF bootstrap installer. Extend
cef_json_builder.py with abi_hash, signed archive tracking, and
revocation list (revoked.json) support. Includes unit tests.
2026-07-19 14:58:46 -04:00
Marshall Greenblatt 803fe341df ai: Add tmp/ to .gitignore 2026-07-19 14:58:46 -04:00
Marshall Greenblatt 25c624e50b Fix validation of newer CEF structures
Allow size-prefixed structures passed by newer libcef versions to exceed
the client wrapper's local structure size. The wrapper already limits
copies to known fields, so rejecting larger structures breaks API forward
compatibility.

Add coverage using an older wrapper view of a newer structure.
2026-07-19 14:58:46 -04:00
Marshall Greenblatt df6c7a115f ceftests: Skip GBK download tests without a UTF-8 locale (see #4184) 2026-07-19 14:58:46 -04:00
Marshall Greenblatt b41c5c64fc Tag 15100 API version 2026-07-10 16:23:27 -04:00
Marshall Greenblatt 7672074da3 Fix added metadata for SendHttpResponseWithRawHeaders API (see #3135) 2026-07-10 16:22:25 -04:00
Marshall Greenblatt db9edaddfe Revert "Tag 15100 API version"
This reverts commit 6b45d8c388.
2026-07-10 16:21:34 -04:00