Blink Public API
================

This directory contains the public API for Blink. The API consists of a number
of C++ header files, scripts, and GYP build files. We consider all other files
in Blink to be implementation details, which are subject to change at any time
without notice.

The primary consumer of this API is Chromium's Content layer. If you are
interested in using Blink, please consider interfacing with Blink via the
Content layer rather than interfacing directly with this API.

Compatibility
-------------

The API does not support binary compatibility. Instead, the API is intended to
insulate the rest of the Chromium project from internal changes to Blink.  Over
time, the API is likely to evolve in source-incompatible ways as Chromium's and
Blink's needs change.

Organization
------------

The API is organized into three parts:

  - public/platform
  - public/web
  - public/testing

The public/platform directory defines an abstract platform upon which Blink
runs. Rather than communicating directly with the underlying operating system,
Blink is designed to run in a sandbox and interacts with the operating system
via the platform API. The central interface in this part of the API is
Platform, which is a pure virtual interface from which Blink obtains many other
interfaces.

The public/web directory defines an interface to Blink's implementation of the
web platform, including the Document Object Model (DOM). The central interface
in this part of the API is WebView, which is a good starting point for
exploring the API.

Note that public/platform should not depend on public/web.

The public/testing directory defines an interface for testing Blink. You can
use this part of the API to load the TestRunner module used in Blink's test
suite.

Basic Types
-----------

The API does not use STL types, except for a small number of STL types that are
used internally by Blink (e.g., std::pair). Instead, we use WTF containers to
implement the API.

The API uses some internal types (e.g., WebCore::Node). Typically, these types
are forward declared and are opaque to consumers of the API. In other cases,
the full definitions are available behind the WEBKIT_IMPLEMENTATION
preprocessor macro. In both cases, we continue to regard these internal types
as implementation details of Blink, and consumers of the API should not rely
upon these types.

Similarly, the API uses STL types outside of the WEBKIT_IMPLEMENTATION
preprocessor macro, which is for the convenience of the consumer.

Contact Information
-------------------

The public API also contains an OWNERS file, which lists a number of people who
are knowledgeable about the API. If you have questions or comments about the
API that might be of general interest to the Blink community at large, please
consider directing your inquiry to blink-dev@chromium.org rather than to the
OWNERS specifically.
