2012년 3월 20일 화요일

Content Shell


Chromium은 Content Module을 토대로 페이지 렌더링을 수행하고 있다.
즉, Content Module의 API(Content API)를 이용하여 Chromium이 구현된 것이다.

Content Module은 멀티 프로세스 렌더링이 가능하게 구현되어 있고, GPU 가속 기능도 구현되어 있다고 한다.
그렇다고 하는데, 아직은 어느 부분에서 어떻게 구현이 되어 있는지는 차차 공부해서 알아볼 계획이다.

Content Module의 분석에 앞서 Content Module 테스트를 위한 브라우저인 Content Shell을 통해 브라우저 구현을 위해
Content API 가 어떻게 사용되는지 알아보자.

Chromium은 아주 거대한 프로젝트여서 풀 빌드시 한시간은 훌쩍 넘긴다.
(물론 빌드서버 성능에 따라 다르지만... 내 노트북에서는 그렇다.)

따라서 Chromium feature 를 건드리지 않고 Content Module을 수정& 테스트하고 싶다면,
Content Shell을 통해 빠르게 빌드해서 테스트해볼 수 있다.

Chromium은 Content Shell 뿐만아니라 Test Shell도 제공하고 있다.
Test Shell은 Content Module이 아닌 WebKit을 이용하여 구현된 테스트 브라우저 처럼 보인다.
(src/webkit/tools/test_shell에 있음)
Content Shell 및 Test Shell은 Chromium을 공부하는데 좋은 시작점이 될 것 같다.

Content Shell의 코드는 Chromium의 src/content/shell에 있다.
디렉토리 내 파일들을 쭈욱 보면, 그리 많지 않은 수의 파일들로 구성이 되어 있고,
각각의 파일들의 사이즈도 그리 크지 않는 것으로 보아, Content Module을 이용하여 간단한 브라우저를 구현하는것이
그리 어려운 일은 아닌 것 처럼 보인다.

이번 포스트에서는 content shell을 빌드해서 테스트를 해보자.
Chromium을 빌드하는 방법은 이전 포스트들에서 설명을 해놓았으므로 자세한 설명은 생략하고,
다음의 명령으로 Content Shell을 빌드할 수 있다.

$> make -j4 BUILDTYPE=Release content_shell

BUILDTYPE 은 Release 와 Debug 두 타입의 선택이 가능하다.
아래는 빌드 후 실행한 화면이다. 첫 페이지로 google 홈페이지가 로딩이 되는데, Content Shell 코드 내에서
www.google.com 페이지를 로딩하고 있기 때문이다. 차차 분석해가며 초기페이지를 바꿔보기도 해보자!


다음 포스트에서는 content shell의 main 함수부터 분석을 해보자!!

댓글 2개: