Code Monkey home page Code Monkey logo

adblockpluschrome's Introduction

Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox

This repository contains the platform-specific Adblock Plus source code for Chrome, Opera, Microsoft Edge and Firefox. 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).

Note that the Firefox extension built from this repository is the new WebExtension. The source code of the legacy Adblock Plus extension can be found here.

Building

Requirements

Building the extension

Run one of the following commands in the project directory, depending on your target platform:

./build.py build -t chrome -k adblockpluschrome.pem
./build.py build -t edge
./build.py build -t gecko

This will create a build with a name in the form adblockpluschrome-1.2.3.nnnn.crx, adblockplusedge-1.2.3.nnnn.appx or adblockplusfirefox-1.2.3.nnnn.xpi.

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.

The Microsoft Edge build adblockplusedge-1.2.3.nnnn.appx is unsigned and is only useful for uploading into Windows Store, where it will be signed. For testing use the devenv build.

The Firefox extension will be unsigned, and therefore is mostly only useful for upload to Mozilla Add-ons. You can also load it for testing purposes under about:debugging or by disabling signature enforcement in Firefox Nightly.

Development environment

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 devenv -t chrome
./build.py devenv -t edge
./build.py devenv -t gecko

This will create a devenv.* directory in the repository. You can load the directory as an unpacked extension, under chrome://extensions in Chrome, under about:debugging in Firefox or in Extensions menu in Microsoft Edge, after enabling extension development features in about:flags. After making changes to the source code re-run the command to update the development environment. In Chrome and Firefox the extension should reload automatically after a few seconds.

Builds for Microsoft Edge do not automatically detect changes, so after rebuilding the extension you should manually force reloading it in Edge by hitting the Reload Extension button.

The build script calls the ensure_dependencies script automatically to manage the dependencies (see dependencies file). Dependencies with local modifications won't be updated. Otherwise during development specifying a feature-branch's name for a dependency's revision is sometimes useful. Alternatively dependency management can be disabled completely by setting the SKIP_DEPENDENCY_UPDATES environment variable, for example:

SKIP_DEPENDENCY_UPDATES=true ./build.py devenv -t chrome

Running the unit tests

To verify your changes you can use the unit test suite located in the qunit directory of the repository. In order to run the unit tests go to the extension's Options page, open the JavaScript Console and type in:

location.href = "qunit/index.html";

The unit tests will run automatically once the page loads.

Linting

You can lint the code using ESLint.

eslint *.js lib/ qunit/ ext/ chrome/

You will need to set up ESLint and our configuration first, see eslint-config-eyeo for more information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.