Adblock Plus for Chrome, Opera and Safari
This repository contains the platform-specific Adblock Plus source code for Chrome, Opera and Safari. It can be used to build Adblock Plus for these platforms, generic Adblock Plus code will be extracted from other repositories automatically (see dependencies file).
- Python 2.7
- The Jinja2 module
- The PIL module
- For signed Chrome builds: M2Crypto module
- For signed Safari builds: A patched version of the xar command line tool
Building the extension
Run one of the following commands in the project directory, depending on your target platform:
./build.py -t chrome build -k adblockpluschrome.pem ./build.py -t safari build -k adblockplussafari.pem
This will create a build with a name in the form adblockpluschrome-1.2.3.nnnn.crx or adblockplussafari-1.2.3.nnnn.safariextz. Note that you don't need an existing signing key for Chrome, a new key will be created automatically if the file doesn't exist. Safari on the other hand always requires a valid developer certificate, you need to get one in the Apple Developer Center first. adblockplussafari.pem should contain the private key for your developer certificate, the developer certificate itself as well as all the certificates it was signed with (Apple's root certificate and intermediate certificates) in PEM format - in that order.
To simplify the process of testing your changes you can create an unpacked development environment. For that run one of the following commands:
./build.py -t chrome devenv ./build.py -t safari devenv
This will create a devenv.platform directory in the repository. In Chrome you should load devenv.chrome as an unpacked extension directory. After making changes to the source code re-run the command to update the development environment, the extension should reload automatically after a few seconds.
In Safari you should load devenv.safari/adblockplussafari.safariextension as unpacked extension directory. After making changes to the source code re-run the command to update the development environment. You will still need to reload the extension explicitly in the Extension Builder, Safari currently doesn't allow automating this action.
Running the unit tests
location.href = "qunit/index.html";
The unit tests will run automatically once the page loads.