In a high architectural level, Google Chrome develops on a layered architecture, which the architecture is categorized as applications with distinct classes of serves that can be organized in a hierarchy (Hassan, 2009). The base of the hierarchy won’t talk with the other layers in its own order. Moreover, the Google Chrome’s subsystems have a good cohesion structure, because each layer does not rely on others in
a direct way. Therefore, these layers communicate through intermediate threads such as Inter-Process Communicators between the browser and the renderers. Because of the strong cohesion, it also helps to build the reusability of the layers.
To divide the entire architecture into different layers or components with their own functionalities, it includes User Interface, Browser, Data Persistence, Networking/Network Stack, JavaScript Interpreter, Rendering Engine/WebKit, Display Backend, XML Parser and Plugins as the diagram we produced below. We will be introducing them separately.
The User Interface is a layer that enables the user to access all the functionalities of the browser, which the UI should be ideally user-friendly and easy to understand. There are two parts which are the client area and non-client area in UI. The interaction made by client on the client area will be read as a message and pass on to the browser engine for event handling. However, Chrome introduced their unique feature that the client and non-client area are coterminous compares to other browser’s UI.
To manage the layers, the Browser act like the center among them. In Chrome architecture, the rendering engine have to talk to the browser to achieve the action beyond rendering-specific services(3). Moreover, the Browser build the security policy for that rendering engine instance, which characterizes the benefits to that rendering engine.
Data Persistence characterizes any information that will outlast the execution of Chrome and incorporates the accompanying parts includes cookie database, history database and password database, which it all accomplished through browser with mainly file system communication (3).
The network stack is outside of the browser and has few dependencies on the rest of Chrome. The main task of network stack is to handles Universal Resource Locator (URL) requests by the browser, fetch the resources form the network, and also requests caches of results for further use (3).
V8 is what JavaScript Interpreter in Chrome and its different than other JavaScript Interpreter. There are three main features has being developed, hidden classes, generates machine code instead of using an interpreter and precise garbage collection respectively.
The rendering engine/WebKit is an open source task to design pages that has been taken from Apple. It includes three parts, WebCore, JavaScriptCore and WebKit. But Chrome is only using the WebCore in their system, it render web components for Chrome which are CSS, DOM, HTML and XHTML.
Display Backend has three main functionalities, widget creation, graphics rendering and font rendering respectively (3). There are four parts for displaying backend which are views, Windows Template Library, Skia, and GDI. When WebKit parses the HTML, it talks to the Display Backend in order to render the web page. Skia works to create the images and graphics from the site and GDI get text from WebKit to produce it in such setted style, font and size. The Windows Template Library is there to create basic widgets of the UI elements such as buttons which it’s a Windows basic style UI and views framework build complex widgets which requests assistance from Skia to create the vector graphics and GDI that places the text onto element.
Nowadays for Chrome, XML has been handed to a more third party sources instead of internal handling. The libXML has been introduced to be easily ported, light weighted and relatively small package used. Chrome also uses package libXSLT which based on libXML to handle XSLT which libXML doesn’t support.
Plugins give a particular capacity to the browser that isn't as of now contained in that and it can help improve the overall experience and functionalities within Chrome. It is located outside of browser and rendering engine which can help improve stability of the browser. More reasons, there should only be one instance of a plugin for the entire browser expected by developers and the plugins has to talk to operating system directly which sanderboxing of the rendering engine blocks it.