InjectedBundle은 WebKit2에서 새로 등장한 개념으로 WebProcess에 기존
방법으로 추가하기 어려운 기능을 plugin 처럼 startup 시간에 동적으로 라이브러리(by dlopen)를 로딩하여 해당하는 기능을 지원하는 것입니다. Igalia의 Carlos 가 webkit-gtk 메일링리스트 쓴 글에 따르면 현재 WebKit2의 InjectedBundle은 일반적인 plugin 과 달리 오직 하나의 shared library 로드 만을 지원하고 있습니다. 현재 WebKit2 InjectedBundle은 DOM binding, intent, back/forward list 등을 지원하고 있습니다.
이 개념이 왜 WebKit2에 반영이 되었을까에 대해서 추측을 해보자면, WebKit2의 기본 구조에서 유추해 볼 수 있을 것 같습니다. 기본적으로 WebKit2 모델은 WebProcess와 UIProcess 로 이루어져 양 프로세스간의 IPC 통신으로 데이터를 주고 받고 있습니다. 이러다 보니 모든 기능을 구현하기 위해서는 proxy 를 만들고 서로 통신을 해야 하는데 이 경우 너무 불필요한 작업을 많이 해야한 경우가 발생하는 것이죠. 다시 말하면, InjectedBundle을 통해서 UIProcess를 통하지 않고서 third party 라이브러리와 WebProcess에 붙여서 플러그 인과 같은 기능을 제공해 줄 수 있습니다.