| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 |
The bindings/ directory
bindings/ contains code for V8-DOM bindings. bindings/ is a layer that implements high-performance C++ bindings between V8 and DOM per the Web IDL spec.
Directory structure
bindings/ consists of the following directories:
-
Source/bindings/scripts/implements the IDLCompiler.md in Python. The IDL compiler is responsible for auto-generating C++ bindings code for all Web IDL files per the Web IDL spec. -
Source/bindings/templates/is a set of Jinja templates used by the IDL compiler. -
//out/*/gen/blink/bindings/is a directory where the auto-generated code is generated. -
Source/bindings/tests/is a set of tests for the IDL compiler. You can run the tests bytools/run_bindings_tests.py. -
Source/platform/bindings/,Source/bindings/core/andSource/bindings/modules/provide a bunch of utility classes that encapsulate the complexity of bare V8 APIs. Utility classes that purely depend on V8 APIs go toSource/platform/bindings/. Utility classes that depend onSource/core/go toSource/bindings/core/. Utility classes that depend onSource/modules/go toSource/bindings/modules/. Since V8 APIs are low-level and error-prone,Souce/core/andSource/modules/are encouraged to use the utility classes instead of directly using the bare V8 APIs. If a class inSource/core/orSource/modules/is using a bunch of bare V8 APIs, consider moving the class toSource/bindings/core/andSource/bindings/modules/. The point is that we should put all the complexity around V8 APIs intoSource/bindings/so that the code ie kept under control of the binding team.
Resources
-
IDLCompiler.md explains the IDL compiler.
-
V8BindingDesign.md explains basic concepts of the bindings architecture; e.g., Isolate, Context, World, wrapper objects etc.
-
TraceWrapperReference.md explains how the lifetime of wrapper objects is maintained by the V8 GC.
-
IDLExtendedAttributes.md explains all extended IDL attributes used in Web IDL files in Blink. If you have any question about IDL files, see this document.
-
IDLUnionTypes.md explains how to use IDL union types.
-
v8.h defines V8 APIs with good documentation.
When you use V8 APIs, ask blink-reviews-bindings@ for review!
V8 APIs are sometimes hard to use. It's easy to use a wrong v8::Context,
it's easy to leak window objects, it's easy to ignore exceptions incorrectly
etc. It is not disallowed to use bare V8 APIs in
Source/core/ and Source/modules/ but when you use V8 APIs, please ask
blink-reviews-bindings@chromium.org for review.
Contact
If you have any question, ask blink-reviews-bindings@chromium.org.