| OLD | NEW | 
|---|
| 1 Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox | 1 Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox | 
| 2 ========================================================== | 2 ========================================================== | 
| 3 | 3 | 
| 4 This repository contains the platform-specific Adblock Plus source code for | 4 This repository contains the platform-specific Adblock Plus source code for | 
| 5 Chrome, Opera, Microsoft Edge and Firefox. It can be used to build | 5 Chrome, Opera, Microsoft Edge and Firefox. It can be used to build | 
| 6 Adblock Plus for these platforms, generic Adblock Plus code will be extracted | 6 Adblock Plus for these platforms, generic Adblock Plus code will be extracted | 
| 7 from other repositories automatically (see _dependencies_ file). | 7 from other repositories automatically (see _dependencies_ file). | 
| 8 | 8 | 
| 9 Note that the Firefox extension built from this repository is the new | 9 Note that the Firefox extension built from this repository is the new | 
| 10 [WebExtension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions). | 10 [WebExtension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions). | 
| 11 The source code of the legacy Adblock Plus extension | 11 The source code of the legacy Adblock Plus extension | 
| 12 can be found [here](https://hg.adblockplus.org/adblockplus). | 12 can be found [here](https://hg.adblockplus.org/adblockplus). | 
| 13 | 13 | 
| 14 Building | 14 Building | 
| 15 --------- | 15 --------- | 
| 16 | 16 | 
| 17 ### Requirements | 17 ### Requirements | 
| 18 | 18 | 
| 19 - [Mercurial](https://www.mercurial-scm.org/) or [Git](https://git-scm.com/) (wh
    ichever you used to clone this repository) | 19 - [Mercurial](https://www.mercurial-scm.org/) or [Git](https://git-scm.com/) (wh
    ichever you used to clone this repository) | 
| 20 - [Python 2.7](https://www.python.org) | 20 - [Python 2.7](https://www.python.org) | 
| 21 - [The Jinja2 module](http://jinja.pocoo.org/docs) (>= 2.8) | 21 - [The Jinja2 module](http://jinja.pocoo.org/docs) (>= 2.8) | 
| 22 - [The PIL module](http://www.pythonware.com/products/pil/) | 22 - [The PIL module](http://www.pythonware.com/products/pil/) | 
| 23 - For signed builds: [PyCrypto module](https://www.dlitz.net/software/pycrypto/) | 23 - For signed builds: [PyCrypto module](https://www.dlitz.net/software/pycrypto/) | 
| 24 | 24 | 
| 25 ### Building the extension | 25 ### Building the extension | 
| 26 | 26 | 
| 27 Run one of the following commands in the project directory, depending on your | 27 Run one of the following commands in the project directory, depending on your | 
| 28 target platform: | 28 target platform: | 
| 29 | 29 | 
| 30     ./build.py -t chrome build -k adblockpluschrome.pem | 30     ./build.py build -t chrome -k adblockpluschrome.pem | 
| 31     ./build.py -t edge build | 31     ./build.py build -t edge | 
| 32     ./build.py -t gecko build | 32     ./build.py build -t gecko | 
| 33 | 33 | 
| 34 This will create a build with a name in the form | 34 This will create a build with a name in the form | 
| 35 _adblockpluschrome-1.2.3.nnnn.crx_, _adblockplusedge-1.2.3.nnnn.appx_ or | 35 _adblockpluschrome-1.2.3.nnnn.crx_, _adblockplusedge-1.2.3.nnnn.appx_ or | 
| 36 _adblockplusfirefox-1.2.3.nnnn.xpi_. | 36 _adblockplusfirefox-1.2.3.nnnn.xpi_. | 
| 37 | 37 | 
| 38 Note that you don't need an existing signing key for Chrome, a new key | 38 Note that you don't need an existing signing key for Chrome, a new key | 
| 39 will be created automatically if the file doesn't exist. | 39 will be created automatically if the file doesn't exist. | 
| 40 | 40 | 
| 41 The Microsoft Edge build _adblockplusedge-1.2.3.nnnn.appx_ is unsigned and | 41 The Microsoft Edge build _adblockplusedge-1.2.3.nnnn.appx_ is unsigned and | 
| 42 is only useful for uploading into Windows Store, where it will be signed. For | 42 is only useful for uploading into Windows Store, where it will be signed. For | 
| 43 testing use the devenv build. | 43 testing use the devenv build. | 
| 44 | 44 | 
| 45 The Firefox extension will be unsigned, and therefore is mostly only useful for | 45 The Firefox extension will be unsigned, and therefore is mostly only useful for | 
| 46 upload to Mozilla Add-ons. You can also also load it for testing purposes under | 46 upload to Mozilla Add-ons. You can also also load it for testing purposes under | 
| 47 _about:debugging_ or by disabling signature enforcement in Firefox Nightly. | 47 _about:debugging_ or by disabling signature enforcement in Firefox Nightly. | 
| 48 | 48 | 
| 49 ### Development environment | 49 ### Development environment | 
| 50 | 50 | 
| 51 To simplify the process of testing your changes you can create an unpacked | 51 To simplify the process of testing your changes you can create an unpacked | 
| 52 development environment. For that run one of the following commands: | 52 development environment. For that run one of the following commands: | 
| 53 | 53 | 
| 54     ./build.py -t chrome devenv | 54     ./build.py devenv -t chrome | 
| 55     ./build.py -t edge devenv | 55     ./build.py devenv -t edge | 
| 56     ./build.py -t gecko devenv | 56     ./build.py devenv -t gecko | 
| 57 | 57 | 
| 58 This will create a _devenv.*_ directory in the repository. You can load the | 58 This will create a _devenv.*_ directory in the repository. You can load the | 
| 59 directory as an unpacked extension, under _chrome://extensions_ in Chrome, | 59 directory as an unpacked extension, under _chrome://extensions_ in Chrome, | 
| 60 under _about:debugging_ in Firefox or in _Extensions_ menu in Microsoft Edge, | 60 under _about:debugging_ in Firefox or in _Extensions_ menu in Microsoft Edge, | 
| 61 after enabling extension development features in _about:flags_. | 61 after enabling extension development features in _about:flags_. | 
| 62 After making changes to the source code re-run the command to update the | 62 After making changes to the source code re-run the command to update the | 
| 63 development environment. In Chrome and Firefox the extension should reload | 63 development environment. In Chrome and Firefox the extension should reload | 
| 64 automatically after a few seconds. | 64 automatically after a few seconds. | 
| 65 | 65 | 
| 66 Builds for Microsoft Edge do not automatically detect changes, so after | 66 Builds for Microsoft Edge do not automatically detect changes, so after | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 81 Linting | 81 Linting | 
| 82 ------- | 82 ------- | 
| 83 | 83 | 
| 84 You can lint the code using [ESLint](http://eslint.org). | 84 You can lint the code using [ESLint](http://eslint.org). | 
| 85 | 85 | 
| 86     eslint *.js lib/ qunit/ ext/ chrome/ | 86     eslint *.js lib/ qunit/ ext/ chrome/ | 
| 87 | 87 | 
| 88 You will need to set up ESLint and our configuration first, see | 88 You will need to set up ESLint and our configuration first, see | 
| 89 [eslint-config-eyeo](https://hg.adblockplus.org/codingtools/file/tip/eslint-conf
    ig-eyeo) | 89 [eslint-config-eyeo](https://hg.adblockplus.org/codingtools/file/tip/eslint-conf
    ig-eyeo) | 
| 90 for more information. | 90 for more information. | 
| OLD | NEW | 
|---|