Chromium Study

Directory structure

Directory structure

Content public APIs and Blink public APIs

Content public APIs는 임베더가 렌더링 엔진을 품기 위한 API 계층입니다. 이것은 임베더에게 노출되기 때문에 반드시 조심스럽게 관리되어야 합니다.

 

Blink public APIs는 크로미움에게 //third_party/blink/의 기능을 제공하는 API 계층입니다. 이것은 WebKit(웹킷)으로부터 상속받은 역사의 산물입니다. 웹킷의 시대에, 크로미움과 사파리는 웹킷의 구현물을 공유했었습니다. 그래서 이 API 계층은 웹킷의 기능을 크로미움과 사피리에게 제공하였습니다. 지금은 크로미움만이 유일한 //third_party/blink/의 임베더이므로 이 API 계층은 의미가 없게 되었습니다. 웹플랫폼 코드를 크로미움에서 블링크로 이동시킴으로써, 적극적으로 Blink public APIs를 줄이고 있습니다(이 프로젝트의 이름은 Onion Soup입니다).

 

Directory structure and dependencies

//third_party/blink/는 다음의 디렉터리를 포함합니다. 이 디렉터리의 더욱 자세한 정의를 확인하기 위해서 이 문서를 보십시오(주: 현재 위치는 //third_party/blink/renderer/).

 

  • platform/
    • 모놀리식 core/에서 분리된 블링크의 하위 레벨 기능 모음/. 예, 지도와 그래픽 유틸리티.
  • core/ and modules/
    • 스펙에 정의된 모든 웹플랫폼 기능의 구현체. core/는 DOM과 밀접한 기능을 구현한다. modules/는 웹오디오나indexeddb 같은 더욱 독립적인 기능을 구현한다.
  • bindings/core/ and bindings/modules/
    • 개념상, bindings/core/는 core/의 일부분이고, bindings/modules/은 modules/의 일부분이다. V8 API를 많이 사용하는 코드가 이곳에 포함된다.
  • controller/
    • core/와 modules/를 사용하는 고수준 라이브러리 모음. 예, devtools의 프론트엔드.

 

종속성은 다음의 순서로 흐릅니다:

 

  • Chromium => controller/ => modules/ and bindings/modules/ => core/ and bindings/core/ => platform/ => low-level primitives such as //base, //v8 and //cc

 

블링크는 //third_party/blink/에 제공하는 저수준 프리미티브 목록을 신중하게 유지 관리합니다.

 

If you want to learn more:

 

WTF

WTF는 블링크-특정 기반의 라이브러리이며 platform/wtf/에 위치하고 있습니다. WTF는, 크로미움과 블링크 사이에서 코딩 기본 요소를 최대한 통합하려고 합니다. 그래서 WTF는 작아야만 합니다. 이 라이브러리에는 블링크의 부하와 Oilpan(블링크 GC)을 최적화하기 위한 많은 타입과 컨테이너와 매크로가 있기 때문에 아주 중요합니다. //base나 std 라이브러리에 우선하여 WTF에 정의된 타입을 사용해야 합니다. 그 중 가장 인기 있는 것은 vectors, hashsets, hashmaps, strings 입니다. 블링크에서는 WTF::Vector, WTF::HashSet, WTF::HashMAp, WTF::String, WTF::AtomicString을 std::vector, std::*set, std::*map, std::string을 대신하여 사용하여야 합니다.

 

If you want to learn more:

 

댓글

댓글 본문
버전 관리
지니
현재 버전
선택 버전
graphittie 자세히 보기