0
Files
src/headless
Cristian Lopez b2bb7e1234 Begin writing safe seed to new file.
This CL (CL 5) is part of the following series of changes to add support
for moving variations seeds out of Local State and into their own,
dedicated files.

CL 1. Creates (but does not yet use) a class (SeedReaderWriter) for
reading and writing variations seeds: crrev.com/c/5874122.

CL 2. Starts creating (but not yet using) a SeedReaderWriter when
creating a VariationsSeedStore: crrev.com/c/5874123.

CL 3. Uses the SeedReaderWriter to write status quo base64 encoded
compressed latest seed data to local state and un-encoded compressed
latest seed data to the new seed file: crrev.com/c/5882833.

CL 4. Updates SeedReaderWriter to be able to write the safe seed in
addition to the latest seed to local state and the new seed file. This
CL only lays the groundwork and actual writing of the safe seed to the
seed file will begin in CL 5: crrev.com/c/5924277.

CL 5. Begins using SeedReaderWriter to write the safe seed.

Bug: 365079796
Change-Id: I2daf9378c6887e43d10248c366c657f4db482968
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5883035
Commit-Queue: Cristian Lopez <cristiandlopez@google.com>
Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
Reviewed-by: Peter Kvitek <kvitekp@chromium.org>
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1374637}
2024-10-28 15:38:24 +00:00
..
2024-10-28 15:38:24 +00:00
2024-08-12 17:20:00 +00:00

Headless Chromium

Headless Chromium allows running Chromium in a headless/server environment. Expected use cases include loading web pages, extracting metadata (e.g., the DOM) and generating bitmaps from page contents -- using all the modern web platform features provided by Chromium and Blink.

As of M118, precompiled headless_shell binaries are available for download under the name chrome-headless-shell via Chrome for Testing infrastructure.

There are two ways to use Headless Chromium:

Usage via the DevTools remote debugging protocol

  1. Start a normal Chrome binary with the --headless=old command line flag:
$ chrome --headless=old --remote-debugging-port=9222 https://chromium.org/
  1. Navigate to chrome://inspect/ in another instance of Chrome.

Usage from Node.js

For example, the chrome-remote-interface Node.js package can be used to extract a page's DOM like this:

const CDP = require('chrome-remote-interface');

(async () => {
  let client;
  try {
    // Connect to browser
    client = await CDP();

    // Extract used DevTools domains.
    const {Page, Runtime} = client;

    // Enable events on domains we are interested in.
    await Page.enable();
    await Page.navigate({url: 'https://example.com'});
    await Page.loadEventFired();

    // Evaluate outerHTML after page has loaded.
    const expression = {expression: 'document.body.outerHTML'};
    const { result } = await Runtime.evaluate(expression);
    console.log(result.value);

  } catch (err) {
    console.error('Cannot connect to browser:', err);

  } finally {
    if (client) {
      await client.close();
    }
  }
})();

Alternatvely, the Puppeteer Node.js package can be used to communicate with headless, for example:

import puppeteer from 'puppeteer';

(async () => {
  const browser = await puppeteer.launch({headless: 'shell'});

  const page = await browser.newPage();
  await page.goto('https://example.com');

  const title = await page.evaluate(() => document.title);
  console.log(title);

  await browser.close();
})();

Resources and Documentation

Mailing list: headless-dev@chromium.org

Bug tracker: Internals>Headless

File a new bug (bit.ly/2pP6SBb)