User:Bkarumu
Mozilla Open Source Project
Implementing the Support for Creating HTTP archive files from Servo Sessions
Introduction
Servo is a parallel web browser engine designed for both application and embedded use. Servo is written in programming language Rust. Mozilla Research sponsored Rust, a systems programming language which is parallel, secure and modular.
Servo
Servo is a prototype we browser engine written in Rust programming language. The motivation towards using rust is to achieve high-performance through parallelism, modularity and security.
Rust
Rust is a Mozilla Research sponsored open source programming language. It is syntactically similar to c++. The main idea to use rust is to ensure thread safety, atomicity of tasks, memory safety and high-parallelism.
Project Description
The Project is to Implement support for creating HTTP archive files from Servo sessions. All major browsers creating HTTP archive files or HAR files. HAR files are generated to analyze web requests. HAR files store log data that keeps track of interaction with web browser. This Tracking of interaction is useful to troubleshoot issues like performance issues-timeout when performing task, slow page loading; Page Rendering issues- not loading certain information, incorrect page layouts etc.
Steps Implemented so far
Step 1: Understanding the Servo Implementation.
Step 2: Build Servo in local machine. The procedure to build servo is described in Readme file for different environment types.
Step 3: Added the path to include "Rust-Har" Library in net-traits/Cargo.toml
Step 4: Created an enum in the net-traits/lib.rs file. This enum will use your library, rust-har, to 'send' a HAR file.
Step 5: Modified the ResourceChannelManager in net/resource_thread.rs to accept the enum. All the modified code can be viewed in the recent commit.
Step 6: Modified the CoreResourceMsg::Exit message to contain an optional vector of har::Page values.
Step 7: Added the command line flag that accepts a filename as argument. This flag controls to store HAR data or not.
Step 8: In servo/lib.rs, in the function create_constellation pass an argument using the new global option when calling “new_resource_threads”.
Step 9: When processing the “CoreResourceMsg::Exit” message, sent an empty vector as JSON to an appropriate file depending on the member variable that was added earlier.
Test Plan
Step 1: Clone the repository into your local machine with URL: https://github.com/servo/servo.git.
Step 2: Build the Servo according to the guidelines presented in the README file in the github repository.