|author||Andrew Savage <email@example.com>||Thu Jun 30 15:47:07 2022 -0700|
|committer||Andrew Savage <firstname.lastname@example.org>||Fri Jul 01 09:10:01 2022 -0700|
Import Cobalt 23.master.0.308575 Includes the following patches: https://cobalt-review.googlesource.com/c/cobalt/+/6430 by email@example.com
Cobalt is a lightweight application container (i.e. an application runtime, like a JVM or the Flash Player) that is compatible with a subset of the W3C HTML5 specifications. If you author a single-page web application (SPA) that complies with the Cobalt Subset of W3C standards, it will run as well as possible on all the devices that Cobalt supports.
The Cobalt Authors originally maintained a port of Chromium called H5VCC, the HTML5 Video Container for Consoles, ported to each of the major game consoles, designed to run our HTML5-based video browse and play application. This took a long time to port to each platform, consisted of 9 million lines of C++ code (before we touched it), was dangerous to modify without unintended consequences, and was thoroughly designed for a resource-rich, multi-process environment (e.g. a desktop, laptop, or modern smartphone).
These constraints (not intended to be a canonical list) make this device spectrum vastly different from the desktop computer environment targeted by Chromium, FireFox, and IE:
The Cobalt Authors forked H5VCC, removed most of the Chromium code -- in particular WebCore and the Chrome Renderer and Compositor -- and built up from scratch an implementation of a simplified subset of HTML, the CSS Box Model for layout, and the Web APIs that were really needed to build a full-screen SPA browse and play application.
The Cobalt technology stack has these major components, roughly in a high-level application to a low-level platform order:
Oh, we got both kinds of HTML tags,
We even have CSS Flexbox now, hooray!
See the Cobalt Subset specification for more details on which tags, properties, and Web APIs are supported in Cobalt.
All source locations are specified relative to
src/ (this directory).
base/- Chromium's Base library. Contains common utilities, and a light platform abstraction, which has been superseded in Cobalt by Starboard.
net/- Chromium's Network library. Contains enough infrastructure to support the network needs of an HTTP User-Agent (like Chromium or Cobalt), an HTTP server, a DIAL server, and several abstractions for networking primitives. Also contains SPDY and QUIC implementations.
cobalt/- The home of all Cobalt application code. This includes the Web Implementation, Layout Engine, Renderer, and some other Cobalt-specific features.
cobalt/build/- The core build generation system,
gn.py, and configurations for supported platforms. (NOTE: This should eventually be mostly moved into
cobalt/doc/- Contains a wide range of detailed information and guides on Cobalt features, functionality and best practices for Cobalt development.
cobalt/media/- Chromium's Media library. Contains all the code that parses, processes, and manages buffers of video and audio data. It send the buffers to the SbPlayer implementation for playback.
starboard/- Cobalt‘s porting layer. Please see Starboard’s
README.mdfor more detailed information about porting Starboard (and Cobalt) to a new platform.
third_party/- Where all of Cobalt‘s third-party dependencies live. We don’t mean to be pejorative, we love our third-party libraries! This location is dictated by Google OSS release management rules...
See the below reference port setup guides for more details:
Cobalt has four build optimization levels, going from the slowest, least optimized, with the most debug information at the top (debug) to the fastest, most optimized, and with the least debug information at the bottom (gold):
When building for release, you should always use a gold build for the final product.
This is a fork of the chromium repository at http://git.chromium.org/git/chromium.git