The Servo Browser Engine
Find a file
Simon Sapin 4d4c034600 Add a (broken) Acid2 reftest. Fix #1993
The rendering is incorrect
and the test is marked as flaky on Linux or on GPU rendering,
but this should help catch further regressions.

The test is modified to add the following CSS:

    .intro { display: none }
    html #top { margin-top: 0 }

To disable the "scrolling" part of the test.

The reference is modified to match the current rendering of the test:

* Rows 4 and 5 (eyes) have a red background.
* The nose is not quite where it should be.
* Row 12’s height is 3px more than it should be.

(See http://www.webstandards.org/action/acid2/guide/ for row numbers.)

The nose issue seems be related to rounding vs truncating
when pixel-snapping borders, but this is only a guess.
2014-08-21 22:01:37 +01:00
bld Add LIBRARY_PATH env var to help the linux build slave. 2014-05-23 12:34:53 -06:00
mk Reftest harness walks directory and appends tests for all manifest files 2014-08-20 11:28:33 +10:00
src Add a (broken) Acid2 reftest. Fix #1993 2014-08-21 22:01:37 +01:00
.gitignore Parallelize test runs on Travis (fixes #2980). 2014-08-08 10:46:20 +02:00
.gitmodules Upgrade Rust. 2014-08-02 21:11:47 -06:00
.travis.yml Parallelize test runs on Travis (fixes #2980). 2014-08-08 10:46:20 +02:00
configure Remove redundant git-submodule commands in configure. 2014-08-20 12:18:46 +01:00
CONTRIBUTING.md Add a link to easy bugs 2014-05-14 17:36:38 +05:30
Info.plist Build an app bundle on OS X 2012-04-23 17:43:45 -07:00
LICENSE Add license 2013-04-03 18:37:29 -07:00
Makefile.backup Prepare makefile.backup for snashot changes 2014-06-13 15:58:29 +05:30
Makefile.in add rpath back for library build 2014-08-18 16:43:03 -04:00
README.md Update README.md 2014-08-10 22:32:18 +05:30
travis.linux.before_script.sh Get rid of fontconfig warnings for linux travis runs. 2014-08-07 13:32:18 +10:00
travis.linux.install.deps.sh Modify Linux travis config to run content and cpu ref tests. 2014-07-24 10:57:33 +10:00
travis.linux.script.sh Make pushing to GitHub Pages verbose. 2014-08-12 16:08:21 +01:00
travis.osx.before_script.sh Modify Linux travis config to run content and cpu ref tests. 2014-07-24 10:57:33 +10:00
travis.osx.install.deps.sh Run wpt on Travis. 2014-07-28 22:24:15 +02:00
travis.osx.script.sh Parallelize test runs on Travis (fixes #2980). 2014-08-08 10:46:20 +02:00

The Servo Parallel Browser Project

Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux.

Servo welcomes contribution from everyone. See CONTRIBUTING.md for help getting started.

Prerequisites

On OS X (homebrew):

brew install https://raw.github.com/Homebrew/homebrew-versions/master/autoconf213.rb
brew install automake libtool pkg-config python
pip install virtualenv

On OS X (MacPorts):

sudo port install autoconf213 python27 py27-virtualenv

On Debian-based Linuxes:

sudo apt-get install autoconf2.13 curl freeglut3-dev libtool \
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \
    msttcorefonts gperf g++ automake cmake python-virtualenv

On Fedora:

sudo yum install autoconf213 curl freeglut-devel libtool gcc-c++ libXi-devel \
    freetype-devel mesa-libGL-devel glib2-devel libX11-devel libXRandr-devel gperf \
    fontconfig-devel cabextract ttmkfdir python python-virtualenv expat-devel rpm-build
pushd .
cd /tmp
wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
rpmbuild -bb msttcorefonts-2.5-1.spec
sudo yum install $HOME/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
popd

Cross-compilation for Android:

Basically, pre-installed Android tools are needed. See wiki for details

Servo builds its own copy of Rust, so there is no need to provide a Rust compiler.

Building

Servo cannot be built in-tree; you must create a directory in which to run configure and make and place the build artifacts.

git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure
make && make check
./servo ../src/test/html/about-mozilla.html

###Building for Android target

git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure --target=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
make
(or make package)

Running

Commandline Arguments

  • -p INTERVAL turns on the profiler and dumps info to the console every INTERVAL seconds
  • -s SIZE sets the tile size for rendering; defaults to 512
  • -z disables all graphical output; useful for running JS / layout tests

Keyboard Shortcuts

  • Ctrl-L opens a dialog to browse to a new URL (Mac only currently)
  • Ctrl-- zooms out
  • Ctrl-= zooms in
  • Backspace goes backwards in the history
  • Shift-Backspace goes forwards in the history
  • Esc exits servo

Developing

There are lots of make targets you can use:

  • make clean - cleans Servo and its dependencies, but not Rust
  • make clean-rust - cleans Rust
  • make clean-servo - only cleans Servo itself (code in src/components)
  • make clean-DEP - cleans the dependency DEP. e.g. make clean-rust-opengles
  • make bindings - generate the Rust WebIDL bindings
  • make DEP - builds only the specified dependency. e.g. make rust-opengles
  • make check-DEP - build and run tests for specified dependency
  • make package - build and make app package for specific OS. e.g. apk file of Android

The make check-* targets for running tests are listed here