User:Bkarumu

From Expertiza_Wiki
Jump to navigation Jump to search

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.